Example #1
0
        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();
            }
        }
Example #2
0
        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;
            }
        }