Esempio n. 1
0
 public void CellButtonPressed(int nCellIndex)
 {
     if (nCellIndex == -1)
     {
         Debug.Log("cell button with no nCellIndex");
         return;
     }
     //зафиксировать, что на этой кнопке был сделан ход
     cellsController.RegisterACellValueInTurn(nCellIndex);
     if (cellsController.IsThisAWinner())
     { //если на данном ходу определился победитель
         CellButtonsHandler.SetAllCellButtonsActive(false);
         turnIndicator.Initialize();
         goResultsWindow.SetActive(true);
         if (cellsController.IsThisTripletOfNoughts())
         {
             resultsWindow.ShowWinner(bIsCrossesWin: false);
             if (!playerOne.bIsThisTypeIsCrosses)
             {
                 playerOne.SetAndSaveCountOfWinNumber(playerOne.LoadAndGetCountOfWinNumber() + 1);
             }
             if (!playerTwo.bIsThisTypeIsCrosses)
             {
                 playerTwo.SetAndSaveCountOfWinNumber(playerTwo.LoadAndGetCountOfWinNumber() + 1);
             }
             //TODO: магическое число при начислении побед
             //точнее, оно является вполне законной константой для поля 3х3, потому что
             //отражает конкретно победу в этом раунде. Однако, если расширять игру
             //для полей бОльших размеров, то возможно там появится системя счета, а не
             //просто победил-програл, и тогда здесь можно будет записывать именно
             //набранное количество очков
         }
         if (cellsController.IsThisTripletOfCrosses())
         {
             resultsWindow.ShowWinner(bIsCrossesWin: true);
             if (playerOne.bIsThisTypeIsCrosses)
             {
                 playerOne.SetAndSaveCountOfWinNumber(playerOne.LoadAndGetCountOfWinNumber() + 1);
             }
             if (playerTwo.bIsThisTypeIsCrosses)
             {
                 playerTwo.SetAndSaveCountOfWinNumber(playerTwo.LoadAndGetCountOfWinNumber() + 1);
             }
         }
         resultsWindow.SetTextStatistics(resultsWindow.PrepareStatisticsString(playerOne, playerTwo));
         return;
     }
     if (cellsController.IsThisAStalemate())
     {  //если на данном ходу возникла ничья
         CellButtonsHandler.SetAllCellButtonsActive(false);
         turnIndicator.Initialize();
         goResultsWindow.SetActive(true);
         resultsWindow.ShowStalemate();
         resultsWindow.SetTextStatistics(resultsWindow.PrepareStatisticsString(playerOne, playerTwo));
     }
     PlayingFieldCellsController.ChangeTurn();
     turnIndicator.ShowTurnIndicator(PlayingFieldCellsController.GetbIsThisCrossesTurn(),
                                     GetPlayerNameByTurn(PlayingFieldCellsController.GetbIsThisCrossesTurn()));
 }
Esempio n. 2
0
 public void ButtonRestartPressed()
 {
     GameInitialization();
     CellButtonsHandler.ResetAllCellButtons();
     CellButtonsHandler.SetAllCellButtonsActive(true);
     turnIndicator.ShowTurnIndicator(PlayingFieldCellsController.GetbIsThisCrossesTurn(),
                                     GetPlayerNameByTurn(PlayingFieldCellsController.GetbIsThisCrossesTurn()));
 }
Esempio n. 3
0
 private void OnMouseUp()
 {
     if (!bButtonEnable)
     {
         return;
     }
     DrawCellSprite(PlayingFieldCellsController.GetbIsThisCrossesTurn());
     onButtonPressed(_nCellIndex);
     bButtonEnable = false;
 }
Esempio n. 4
0
 void StartGame()
 {  //вызывается по нажатии кнопки Играть в основном меню
     playingFieldFiller.DrawPlayingCells();
     playingFieldFiller.DrawLatticeLines();
     listGoCellButtons = CellButtonsHandler.GetListGoButtons();
     for (int c = 0; c < listGoCellButtons.Count; c++)
     {
         listGoCellButtons[c].GetComponent <CellButtonScript>().
         onButtonPressed += CellButtonPressed;
     }
     turnIndicator.ShowTurnIndicator(PlayingFieldCellsController.GetbIsThisCrossesTurn(),
                                     GetPlayerNameByTurn(PlayingFieldCellsController.GetbIsThisCrossesTurn()));
 }