예제 #1
0
        public static State result(State oldState, int[] action)
        {
            State newState = new State(oldState.board, oldState.currentPlayer, oldState.lastMove, oldState.playsCount, oldState.playsWithoutCapture);

            if (RuleMachine.isAttackMove(action, newState.board))
            {
                newState.playsWithoutCapture = 0;
            }
            else
            {
                newState.playsWithoutCapture++;
            }

            char piece = newState.board[action[0], action[1]];

            newState.board[action[0], action[1]] = Types.EMPTY;
            newState.board[action[2], action[3]] = piece;
            newState.currentPlayer = newState.currentPlayer == 1 ? 2 : 1;
            newState.lastMove      = action;
            newState.playsCount++;

            newState.registerGameIsOver();

            return(newState);
        }
예제 #2
0
        public static void movePiece(int[] coordinates)
        {
            if (RuleMachine.isAttackMove(coordinates, currentState.board))
            {
                capture(coordinates, currentState.board);
            }

            currentState = State.result(currentState, coordinates);
        }