示例#1
0
        private void checkIfGameOver()
        {
            int sizeOfBlackPossibleMoves = 0;
            int sizeOfWhitePossibleMoves = 0;

            for (int y = 0; y < this.r_boardSize; y++)
            {
                for (int x = 0; x < this.r_boardSize; x++)
                {
                    Point            p = new Point(x, y);
                    DamkaPieces.Type t = this.GetPieceByIndex(p);
                    int count          = this.GetLandingOptions(p).Count;

                    if (DamkaPieces.GetKing(t) != DamkaPieces.Type.BlackKing)
                    {
                        sizeOfBlackPossibleMoves += count;
                    }
                    else if (DamkaPieces.GetKing(t) != DamkaPieces.Type.WhiteKing)
                    {
                        sizeOfWhitePossibleMoves += count;
                    }
                }
            }

            if (sizeOfBlackPossibleMoves == 0)
            {
                this.IsGameOver = true;
                this.Winner     = this.r_player2;
            }
            else if (sizeOfWhitePossibleMoves == 0)
            {
                this.IsGameOver = true;
                this.Winner     = this.r_player1;
            }
        }
示例#2
0
        private void checkIfKingged(Point i_index)
        {
            DamkaPieces.Type type = this.GetPieceByIndex(i_index);
            bool             hasReachedOtherSide = this.isSimplePieceOnOtherSide(i_index, type);

            if (hasReachedOtherSide)
            {
                this.placePieceAt(i_index, DamkaPieces.GetKing(type));
            }
        }