Esempio n. 1
0
        private Game(GameData data, GameField field, Player playerWhite, Player playerBlack)
        {
            this.data        = data;
            this.field       = field;
            this.playerWhite = playerWhite;
            this.playerBlack = playerBlack;
            gameHistory      = new List <Command>();

            this.playerWhite.setMoveFunc(WhitePlayerMoved); //привязываем функции к событиям
            this.playerBlack.setMoveFunc(BlackPlayerMoved);
            emitWhiteMove = this.playerWhite.getMoveComand;
            emitBlackMove = this.playerBlack.getMoveComand;

            if (this.playerWhite is FormControl)                        //если БЕЛЫЙ это formControl
            {
                playerWhiteFormControl = (FormControl)this.playerWhite; //приводя их к такому виду, мы избавляемся от множества проверок
            }
            if (this.playerBlack is FormControl)                        //если ЧЕРНЫЙ это formControl
            {
                playerBlackFormControl = (FormControl)this.playerBlack;
            }

            isWhitTurn = true;
            emitWhiteMove();
        }
Esempio n. 2
0
        private void PlayerMoved(MoveComand emitActiv, MoveComand emitPassiv, Command command)
        {
            if (command.comandIsCorrect) // ход корректен
            {
                gameHistory.Add(command);
                field.DisActivate();      // убираем подсветку
                command.Execute();
                isWhitTurn = !isWhitTurn; // меняем порядок шагов


                if (data.IsKingChecked(isWhitTurn))
                {
                    if (isWhitTurn)
                    {
                        playerWhite.setKingChecked();
                    }
                    else
                    {
                        playerBlack.setKingChecked();
                    }
                }

                emitPassiv();//посылаем сигнал, что ходит тот, кто ждал
            }
            else // ход не удался
            {
                emitActiv(); // посылаем сигнал, что опять ходит тот, кто ходил
            }
        }