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); }
public static void movePiece(int[] coordinates) { if (RuleMachine.isAttackMove(coordinates, currentState.board)) { capture(coordinates, currentState.board); } currentState = State.result(currentState, coordinates); }