コード例 #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()));
 }
コード例 #2
0
 public void ButtonRestartPressed()
 {
     GameInitialization();
     CellButtonsHandler.ResetAllCellButtons();
     CellButtonsHandler.SetAllCellButtonsActive(true);
     turnIndicator.ShowTurnIndicator(PlayingFieldCellsController.GetbIsThisCrossesTurn(),
                                     GetPlayerNameByTurn(PlayingFieldCellsController.GetbIsThisCrossesTurn()));
 }
コード例 #3
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()));
 }
コード例 #4
0
    public void DrawPlayingCells()
    {
        int nCellCounter = 0;

        for (int j = 0; j < nRowCount; j++)
        {
            for (int i = 0; i < nRowCount; i++)
            {  //nRowCount === nColumnCount - для квадратного поля количество строк и столбцов равно
                GameObject goCurrentCell = Instantiate(goFieldCellPrefab,
                                                       new Vector3(-fFieldWidth / 2f + fSpacing + fCellWidth / 2f
                                                                   + i * fCellCenterInterval,
                                                                   fFieldWidth / 2f - fSpacing - fCellWidth / 2f
                                                                   - j * fCellCenterInterval),
                                                       Quaternion.identity,
                                                       transform);
                goCurrentCell.transform.localScale = new Vector3(
                    fCellWidth, fCellWidth, 1f);
                goCurrentCell.GetComponent <ICellIndex>().CellIndex = nCellCounter;
                CellButtonsHandler.AddButtonToList(goCurrentCell);
                nCellCounter++;
            }
        }
    }