Exemple #1
0
        private void InitializeGameMembers()
        {
            this.m_Board = new Board(this.m_settings.BoardSize);
            this.SetMyButtonsLocation(this.m_Board.BoardSize);
            this.m_lastDestinationCellPosition = new CellPosition();
            this.m_movementsListsStruct        = new Logic.RegularAndSkipOverMovementsLists();
            this.m_movementsListsStruct.RegularMovementList  = new System.Collections.Generic.List <Movement>();
            this.m_movementsListsStruct.SkipOverMovementList = new System.Collections.Generic.List <Movement>();
            this.m_currentMovement = new Movement();
            bool computerEnabled = this.m_settings.ComputerEnabled;

            this.m_bottomPlayer = new Player(this.m_settings.FirstPlayerName);
            if (computerEnabled == true)
            {
                this.m_gameType  = e_GameType.pVc;
                this.m_topPlayer = new Player(this.m_settings.SecondPlayerName, computerEnabled);
            }
            else
            {
                this.m_gameType  = e_GameType.pVp;
                this.m_topPlayer = new Player(this.m_settings.SecondPlayerName);
                this.m_topPlayer.PlayerPosition = Player.e_PlayerPosition.Top;
            }

            this.m_gameStatus   = e_GameStatus.ActiveGame;
            this.m_activePlayer = this.m_bottomPlayer;
        }
Exemple #2
0
 private void NoMoreMovesForActivePlayerAndClose()
 {
     this.MessegeBox("No More Moves");
     this.m_gameStatus = e_GameStatus.NoMovesForActivePlayer;
     this.DialogResult = System.Windows.Forms.DialogResult.OK;
     this.Close();
 }
Exemple #3
0
        /// <summary>
        /// ゲスト押下用のコントロールを切り替える
        /// </summary>
        /// <param name="i_status">ゲームでのカウントの状態</param>
        private void SwitchGuestControl(e_GameStatus i_status)
        {
            switch (i_status)
            {
            case e_GameStatus.RobotCount:
                _btnPushLeft.Content     = NO_PUSH;
                _btnPushCenter.Content   = NO_PUSH;
                _btnPushRight.Content    = NO_PUSH;
                _btnPushLeft.IsEnabled   = false;
                _btnPushCenter.IsEnabled = false;
                _btnPushRight.IsEnabled  = false;
                _btnNext.IsEnabled       = false;
                break;

            case e_GameStatus.GuestCountNone:
                _btnPushLeft.Content     = (CurrentNumber + 1).ToString();
                _btnPushCenter.Content   = (CurrentNumber + 2).ToString();
                _btnPushRight.Content    = (CurrentNumber + 3).ToString();
                _btnPushLeft.IsEnabled   = true;
                _btnPushCenter.IsEnabled = false;
                _btnPushRight.IsEnabled  = false;
                _btnPushLeft.Focus(FocusState.Pointer);
                _btnNext.IsEnabled = false;
                break;

            case e_GameStatus.GuestCountOne:
                _btnPushLeft.IsEnabled   = false;
                _btnPushCenter.IsEnabled = true;
                _btnPushRight.IsEnabled  = false;
                _btnPushCenter.Focus(FocusState.Pointer);
                _btnNext.IsEnabled = true;
                break;

            case e_GameStatus.GuestCountTwo:
                _btnPushLeft.IsEnabled   = false;
                _btnPushCenter.IsEnabled = false;
                _btnPushRight.IsEnabled  = true;
                _btnPushRight.Focus(FocusState.Pointer);
                _btnNext.IsEnabled = true;
                break;

            case e_GameStatus.GuestCountThree:
                _btnPushLeft.IsEnabled   = false;
                _btnPushCenter.IsEnabled = false;
                _btnPushRight.IsEnabled  = false;
                _btnNext.Focus(FocusState.Pointer);
                _btnNext.IsEnabled = true;
                break;

            default:
                break;
            }
        }
Exemple #4
0
 private void Play()
 {
     this.PrintTextButtons(this.m_Board.BoardSize);
     while (this.m_gameStatus == e_GameStatus.ActiveGame)
     {
         if (this.ShowDialog() == System.Windows.Forms.DialogResult.Cancel)
         {
             if (MessageBox.Show("Are You Sure You Want To Quit?", "Quit", MessageBoxButtons.YesNo) == DialogResult.Yes)
             {
                 this.m_gameStatus = e_GameStatus.QuitByUser;
             }
         }
     }
 }
Exemple #5
0
        public void Start()
        {
            int topPlayerPoints, bottomPlayerPoints;

            bool keepPlaying = true;

            while (keepPlaying)
            {
                Play();

                m_gameBoard.CalculatePointsOfPlayers(out topPlayerPoints, out bottomPlayerPoints);

                if (topPlayerPoints > bottomPlayerPoints)
                {
                    ConsoleUI.DeclairWinnerMessege(m_topPlayer);
                    m_topPlayer.Points = m_topPlayer.Points + topPlayerPoints - bottomPlayerPoints;
                }
                else if (topPlayerPoints < bottomPlayerPoints)
                {
                    ConsoleUI.DeclairWinnerMessege(m_bottomPlayer);
                    m_bottomPlayer.Points = m_bottomPlayer.Points + bottomPlayerPoints - topPlayerPoints;
                }
                else
                {
                    ConsoleUI.DeclairTieMessege();
                }

                ConsoleUI.LastRoundPointsMessege(m_topPlayer, topPlayerPoints, m_bottomPlayer, bottomPlayerPoints);
                ConsoleUI.SoFarTotalPointsMessege(m_topPlayer, m_bottomPlayer);

                keepPlaying = ConsoleUI.AskForAnotherGameDesire();

                /*for automated start again and delay for cheking
                 * DateTime dt = DateTime.Now + TimeSpan.FromSeconds(10);
                 * do { } while (DateTime.Now < dt);
                 * keepPlaying = true;*/

                if (keepPlaying == true)
                {
                    m_gameBoard  = new Board(m_gameBoard.BoardSize);
                    m_gameStatus = e_GameStatus.ActiveGame;
                }
            }

            ConsoleUI.GoodByeMessege();
        }
Exemple #6
0
        public Game()
        {
            m_bottomPlayer = new Player();
            /*in order to make bottom player as a computer. for checking and debugging matters*/
            //m_bottomPlayer.PlayerType = Player.e_PlayerType.Computer;
            m_gameBoard = new Board();
            m_gameType  = ConsoleUI.AskForGameType();
            if (m_gameType == e_GameType.pVp)
            {
                m_topPlayer = new Player();
                m_topPlayer.PlayerPosition = Player.e_PlayerPosition.Top;
            }
            else
            {
                m_topPlayer = new Player("Computer");
            }

            // Added or old code that was replaced
            m_gameStatus = e_GameStatus.ActiveGame;
        }
Exemple #7
0
        // $G$ DSN-003 (-10) This method is too long.
        private void Play()
        {
            bool         isLastMovementWasSkipOver    = false;
            CellPosition lastDestinatioonCellPosition = new CellPosition();

            ConsoleUI.PrintBoard(ref m_gameBoard);
            ConsoleUI.MovmentInstruction();

            Player activePlayer = m_bottomPlayer;

            while (m_gameStatus == e_GameStatus.ActiveGame)
            {
                Logic.RegularAndSkipOverMovementsLists movementsListsStruct = new Logic.RegularAndSkipOverMovementsLists();
                movementsListsStruct.RegularMovementList  = new System.Collections.Generic.List <Movement>();
                movementsListsStruct.SkipOverMovementList = new System.Collections.Generic.List <Movement>();

                Logic.MakeListOfPossibleMovementsForPlayer(ref m_gameBoard, ref movementsListsStruct, activePlayer.PlayerPosition);

                if (Logic.IsStructOfListsEmpty(movementsListsStruct) == false)
                {
                    if (activePlayer.PlayerType == Player.e_PlayerType.Human)
                    {
                        ConsoleUI.PrintCurrentPlayerNameAndCoin(activePlayer);
                        m_currentMovement = ConsoleUI.AskForPlayerMove(m_gameBoard.BoardSize, ref m_gameStatus);
                    }
                    else
                    {
                        m_currentMovement = Logic.ChooseMaximalPointsMovementForPlayerFromStructOfLists(m_gameBoard, movementsListsStruct, activePlayer);
                    }

                    if ((isLastMovementWasSkipOver == false) ||
                        ((isLastMovementWasSkipOver == true) && (Movement.IsTwoPositionsEquale(lastDestinatioonCellPosition, m_currentMovement.SourcePosition) == true)))
                    {
                        if (Logic.IsMovementExistsInStructOfLists(movementsListsStruct, m_currentMovement, out isLastMovementWasSkipOver) == true)
                        {
                            if (((movementsListsStruct.SkipOverMovementList.Count != 0) &&
                                 (Logic.IsMovementExistsInSpecificList(movementsListsStruct.RegularMovementList, m_currentMovement) == true)) == false)
                            {
                                m_gameBoard.ExcuteMovement(m_currentMovement);

                                ConsoleUI.PrintBoard(ref m_gameBoard);
                                ConsoleUI.PrintLastMovementOfActivePlayer(activePlayer, m_currentMovement);
                                lastDestinatioonCellPosition = m_currentMovement.DestinationPosition;
                                if (isLastMovementWasSkipOver == false)
                                {
                                    TogglePlayersTurns(ref activePlayer);
                                }
                                else
                                {
                                    Logic.MakeListOfPossibleMovementsForPlayer(ref m_gameBoard, ref movementsListsStruct, activePlayer.PlayerPosition);
                                    if (Logic.IsMovementFromSpecificCellExistInList(movementsListsStruct.SkipOverMovementList, lastDestinatioonCellPosition) == false)
                                    {
                                        isLastMovementWasSkipOver = false;
                                        TogglePlayersTurns(ref activePlayer);
                                    }
                                }
                            }
                            else
                            {
                                ConsoleUI.SkipOverRequiredAnnouncement();
                            }
                        }
                        else
                        {
                            if (m_gameStatus != e_GameStatus.QuitByUser)
                            {
                                ConsoleUI.InvalidLogicallyMovementAnnouncement();
                            }
                        }
                    }
                }
                else
                {
                    ConsoleUI.NoMoreMovesAnnouncement();
                    m_gameStatus = e_GameStatus.NoMovesForActivePlayer;
                }
            }
        }
Exemple #8
0
        public static Movement AskForPlayerMove(uint i_boardSize, ref e_GameStatus i_gameStatus)
        {
            Movement playerMovement    = new Movement();
            string   playerMovementStr = string.Empty;

            playerMovementStr = Console.ReadLine();
            bool allGoodMovementStr = false;

            while (allGoodMovementStr == false)
            {
                if ((playerMovementStr.Length == 5) && (playerMovementStr[2] == '>'))
                {
                    uint         inputSuccessCounter = 0;
                    CellPosition tempCellPos         = new CellPosition();

                    if ((playerMovementStr[0] >= 'A') && (playerMovementStr[0] <= ('A' + i_boardSize - 1)))
                    {
                        tempCellPos.Y = /*(uint)*/ playerMovementStr[0] - 'A';
                        inputSuccessCounter++;
                    }

                    if ((playerMovementStr[1] >= 'a') && (playerMovementStr[1] <= ('a' + i_boardSize - 1)))
                    {
                        tempCellPos.X = /*(uint)*/ playerMovementStr[1] - 'a';
                        inputSuccessCounter++;
                    }

                    playerMovement.SourcePosition = tempCellPos;

                    if ((playerMovementStr[3] >= 'A') && (playerMovementStr[3] <= ('A' + i_boardSize - 1)))
                    {
                        tempCellPos.Y = /*(uint)*/ playerMovementStr[3] - 'A';
                        inputSuccessCounter++;
                    }

                    if ((playerMovementStr[4] >= 'a') && (playerMovementStr[4] <= ('a' + i_boardSize - 1)))
                    {
                        tempCellPos.X = /*(uint)*/ playerMovementStr[4] - 'a';
                        inputSuccessCounter++;
                    }

                    playerMovement.DestinationPosition = tempCellPos;

                    if (inputSuccessCounter == 4)
                    {
                        allGoodMovementStr = true;
                    }
                    else
                    {
                        Console.WriteLine("You did not enter a valid input, the format should be: COLrow>COLrow.\nPress 'Enter' to continue");
                        playerMovementStr = Console.ReadLine();
                    }
                }
                else if ((playerMovementStr.Length == 1) && (playerMovementStr[0] == 'Q'))
                {
                    allGoodMovementStr = true;
                    i_gameStatus       = e_GameStatus.QuitByUser;
                }
                else
                {
                    allGoodMovementStr = false;
                    Console.WriteLine("You did not enter a valid input, the format should be: COLrow>COLrow.\nPress 'Enter' to continue");
                    playerMovementStr = Console.ReadLine();
                }
            }

            return(playerMovement);
        }