Exemplo 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()));
 }
    public string PrepareStatisticsString(CrossAndNoughtsPlayer playerOne, CrossAndNoughtsPlayer playerTwo)
    {
        string sResults = "";

        sResults += playerOne.sName;
        if (playerOne.bIsThisTypeIsCrosses)
        {
            sResults += " (" + ProjectStrings.GetStringCrosses() + ") ";
        }
        else
        {
            sResults += " (" + ProjectStrings.GetStringNoughts() + ") ";
        }
        sResults += playerOne.LoadAndGetCountOfWinNumber().ToString() + "\n";
        sResults += playerTwo.sName;
        if (playerTwo.bIsThisTypeIsCrosses)
        {
            sResults += " (" + ProjectStrings.GetStringCrosses() + ") ";
        }
        else
        {
            sResults += " (" + ProjectStrings.GetStringNoughts() + ") ";
        }
        sResults += playerTwo.LoadAndGetCountOfWinNumber().ToString();
        return(sResults);
    }