public void Click( int iX, int iY, int iPlayer = -1) { if (iPlayer == -1) { iPlayer = CurrentPlayer; } if (iPlayer != CurrentPlayer) { return; } CField pField = h_GetField(iX, iY); if (pField == null) { return; } pField.Owner = Players[CurrentPlayer]; h_CheckWin(); if (Status == EGameStatus.Game) { h_NextTurn(); } }
private void h_CheckWin() { CPlayer pCurPl = null; int iCounter = 0; bool bHasEmpty = false; for (int iX = 0; iX < Size; iX++) { iCounter = 0; pCurPl = null; for (int iY = 0; iY < Size; iY++) { CField pField = h_GetField(iX, iY); if (pField == null && pField.Owner == null) { iCounter = 0; continue; } if (pField.Owner == null) { bHasEmpty = true; iCounter = 0; pCurPl = null; continue; } if (pCurPl == pField.Owner) { iCounter++; if (iCounter >= WinSize) { Winner = pCurPl; Status = EGameStatus.GameOver; } } else { pCurPl = pField.Owner; iCounter = 1; } } } if (!bHasEmpty) { Winner = null; Status = EGameStatus.GameOver; } }