private void PlayRound(int i_size) { m_Board = new Board(i_size); GameInterface.ShowStartTurnMessage(m_Board, m_PlayerOne); m_CurrentPlayerTurn = m_PlayerOne; m_NextPlayerTurn = m_PlayerTwo; this.playTurn(); switch (m_GameStatus) { case eGameStatus.Win: this.updateScore(); GameInterface.PrintEndOfRoundWin(m_GameStatus, m_NextPlayerTurn, m_CurrentPlayerTurn); break; case eGameStatus.Draw: GameInterface.PrintEndOfRoundDraw(m_GameStatus, m_PlayerOne, m_PlayerTwo); break; } }
private void playTurn() { bool isValidMove; bool isLegalWithdraw = false; string currentMoveString = string.Empty; Turn currentTurn = new Turn(m_Board, m_CurrentPlayerTurn); if (!checkForEndRound(currentTurn)) { if (currentTurn.SwitchTurn) { currentTurn = new Turn(m_Board, m_CurrentPlayerTurn); } switch (m_CurrentPlayerTurn.Type()) { case eType.User: { currentMoveString = GameInterface.getMove(m_Board.Size); isValidMove = currentTurn.isValidMove(currentMoveString); isLegalWithdraw = GameInterface.IsLegalWithdraw(currentMoveString, currentTurn); while (!isValidMove && !isLegalWithdraw) { currentMoveString = GameInterface.InvalidMove(m_Board.Size); isValidMove = currentTurn.isValidMove(currentMoveString); isLegalWithdraw = GameInterface.IsLegalWithdraw(currentMoveString, currentTurn); } break; } case eType.Bot: { currentMoveString = currentTurn.PlayBotTurn(); isLegalWithdraw = false; break; } } if (!isLegalWithdraw) { currentTurn.PlayTurn(); if (currentTurn.JustAte) { currentTurn.SwitchTurn = true; } m_Board = currentTurn.getBoard; if (currentTurn.SwitchTurn) { GameInterface.ShowRoundDetails(m_Board, m_CurrentPlayerTurn, m_NextPlayerTurn, currentMoveString); switchPlayers(); } else { GameInterface.ShowRoundDetails(m_Board, m_CurrentPlayerTurn, m_CurrentPlayerTurn, currentMoveString); } this.playTurn(); } else { m_GameStatus = eGameStatus.Win; } } }