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); }