public int PcBlock(Board i_GameBoard, int i_PlayerLastMove, int i_PlayerOlderMove) { int ColumnsRange = i_GameBoard.Columns; int ColumnPick = GuessNumber(ColumnsRange); if (i_PlayerLastMove == i_PlayerOlderMove) { ColumnPick = i_PlayerLastMove; } if (Math.Abs(i_PlayerLastMove - i_PlayerOlderMove) == 1) { if (Math.Max(i_PlayerLastMove, i_PlayerOlderMove) + 1 < ColumnsRange) { ColumnPick = Math.Max(i_PlayerLastMove, i_PlayerOlderMove) + 1; } else if (Math.Min(i_PlayerLastMove, i_PlayerOlderMove) - 1 > 1) { ColumnPick = Math.Max(i_PlayerLastMove, i_PlayerOlderMove) - 1; } } while (i_GameBoard.IsColumnFull(ColumnPick - 1)) { if (ColumnPick == ColumnsRange) { ColumnPick = 1; } ColumnPick++; } return(ColumnPick); }
// Play the Game public void PlayGame() { Player currentPlayer = m_FirstPlayer; Ex02.ConsoleUtils.Screen.Clear(); m_GameBoard.PrintBoard(); eGameStatus gameStatus = eGameStatus.Play; while (this.IsEnded == false) { string columnChooseStr; int columnChooseInt; bool goodInput; Console.WriteLine("Press 'Q' to quit\nPlayer " + currentPlayer.Name + ", Please choose column:"); if (currentPlayer.IsPC == false) { columnChooseStr = Console.ReadLine(); if (columnChooseStr == "Q") { currentPlayer = SwitchPlayer(currentPlayer); gameStatus = eGameStatus.Win; break; } goodInput = int.TryParse(columnChooseStr, out columnChooseInt); } else { columnChooseInt = currentPlayer.PcBlock(this.GameBoard, m_SecondPlayer.m_LastMove, m_SecondPlayer.m_OlderMove); goodInput = true; Console.WriteLine(columnChooseInt); } while (!goodInput || !IsInRange(columnChooseInt) || m_GameBoard.IsColumnFull(columnChooseInt - 1)) { if (IsInRange(columnChooseInt)) { if (m_GameBoard.IsColumnFull(columnChooseInt - 1)) { Console.WriteLine("Column " + columnChooseInt + " is full.\nPlease choose a different column:"); } } else { Console.WriteLine("Input is not valid. \nPlease choose a column:"); } if (currentPlayer.IsPC == false) { columnChooseStr = Console.ReadLine(); if (columnChooseStr == "Q") { currentPlayer = SwitchPlayer(currentPlayer); gameStatus = eGameStatus.Win; goto Outer; } goodInput = int.TryParse(columnChooseStr, out columnChooseInt); } else { columnChooseInt = currentPlayer.PcBlock(this.GameBoard, m_SecondPlayer.m_LastMove, m_SecondPlayer.m_OlderMove); goodInput = true; Console.WriteLine(columnChooseInt); } } if (currentPlayer.IsPC == false) { m_SecondPlayer.m_OlderMove = m_SecondPlayer.m_LastMove; m_SecondPlayer.m_LastMove = columnChooseInt; } Coin lastCoinInserted = AddCoinToBoard(columnChooseInt, currentPlayer); gameStatus = CheckGameStatus(lastCoinInserted); Outer: if (gameStatus == eGameStatus.Play) { // Switching the players currentPlayer = SwitchPlayer(currentPlayer); continue; } else { this.IsEnded = true; break; } } switch (gameStatus) { case eGameStatus.Win: Console.WriteLine("Congratulations!\nPlayer " + currentPlayer.Name + " wins!"); currentPlayer.Score++; Console.WriteLine(m_FirstPlayer.Name + " Score: " + m_FirstPlayer.Score); Console.WriteLine(m_SecondPlayer.Name + " Score: " + m_SecondPlayer.Score); break; default: Console.WriteLine("This is a DRAW!"); Console.WriteLine(m_FirstPlayer.Name + " Score: " + m_FirstPlayer.Score); Console.WriteLine(m_SecondPlayer.Name + " Score: " + m_SecondPlayer.Score); break; } Console.WriteLine("Would you like to play another game?\nEnter C to continue playing or any other key to Quit."); string inputStr = Console.ReadLine(); if (inputStr.ToLower() == "c") { this.ContinueNewGame(); } else { Console.WriteLine("Game Ended!\nPress 'enter' to exit"); } }