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; }
private void NoMoreMovesForActivePlayerAndClose() { this.MessegeBox("No More Moves"); this.m_gameStatus = e_GameStatus.NoMovesForActivePlayer; this.DialogResult = System.Windows.Forms.DialogResult.OK; this.Close(); }
/// <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; } }
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; } } } }
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(); }
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; }
// $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; } } }
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); }