Beispiel #1
0
        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);
        }
Beispiel #2
0
        // 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");
            }
        }