bool askForAMove(Player i_player, gameBoard i_board, out Pair i_nextMove) { string nextMoveAsString; //Pair nextMove; char col = 'A'; int row = 0; bool rowIsInt = false; bool isFirstIteration = true; bool toPlay = true; bool invalidLengthInput = false; Console.WriteLine(string.Format( @"{0}, it's your turn! Please choose 'letter'(column) and 'number'(row) for your next move. The 'letter' must be an appercase and no space between row and col. For example: 'E2' <for 'EXIT' please insert 'Q'>", i_player.PlayerName)); do { if (!isFirstIteration) { invalidLengthInput = false; Console.WriteLine("Sorry but You inserted invalid input! please try again:"); } nextMoveAsString = Console.ReadLine(); if (nextMoveAsString == "Q") { toPlay = false; break; } if (nextMoveAsString.Length != 2) { invalidLengthInput = true; isFirstIteration = false; continue; } col = nextMoveAsString[0]; rowIsInt = int.TryParse(nextMoveAsString[1].ToString(), out row); isFirstIteration = false; } while (invalidLengthInput || !rowIsInt || col < 'A' || col > ('A' + i_board.Size - 1) || row < 1 || row > i_board.Size); i_nextMove = new Pair(row - 1, col - 'A'); return(toPlay); }
public gameEngine(string i_player1, string i_player2, int i_boardSize) { m_player1 = new Player(eSymbolOfPlayer.O, i_player1); m_player2 = new Player(eSymbolOfPlayer.X, i_player2); m_board = new gameBoard(i_boardSize); }
void showBoard(gameBoard i_board) { StringBuilder finalBoard = new StringBuilder(); StringBuilder borderOfRow = new StringBuilder(); StringBuilder rowOfLetters = new StringBuilder(); char letter = 'A'; rowOfLetters.Append(" "); for (int i = 0; i < i_board.Size; i++) { if (i == i_board.Size - 1) { rowOfLetters.Append(string.Format("{0} ", letter)); } else { rowOfLetters.Append(string.Format("{0} ", letter)); } letter++; } finalBoard.Append(rowOfLetters); finalBoard.Append(Environment.NewLine); int numOfEquals = ((i_board.Size * 4) + 1); borderOfRow.Append(" "); for (int i = 0; i < numOfEquals; i++) { borderOfRow.Append('='); } borderOfRow.Append(Environment.NewLine); StringBuilder rowWithBoardValues; for (int row = 0; row < i_board.Size; row++) { rowWithBoardValues = new StringBuilder(); rowWithBoardValues.Append(borderOfRow); rowWithBoardValues.Append(string.Format("{0} ", (row + 1))); int col = 0; int locationOfCoin = 2; for (int i = 0; i < numOfEquals; i++) { if (i % 4 == 0) { rowWithBoardValues.Append("|"); } else if (i == locationOfCoin) { if (i_board[row, col] != 0) { rowWithBoardValues.Append(i_board[row, col]); } else { rowWithBoardValues.Append(" "); } col++; locationOfCoin += 4; } else { rowWithBoardValues.Append(" "); } } finalBoard.Append(rowWithBoardValues); finalBoard.Append(Environment.NewLine); } finalBoard.Append(borderOfRow); Console.WriteLine(finalBoard); }