示例#1
0
        internal int GetPlayerPoints(eShapeType i_Piece)
        {
            int PlayerPoints = 0;

            Piece.eSoliderType soliderType = Piece.eSoliderType.X;
            Piece.eSoliderType kingType    = Piece.eSoliderType.K;
            if (i_Piece.Equals(eShapeType.O))
            {
                soliderType = Piece.eSoliderType.O;
                kingType    = Piece.eSoliderType.U;
            }
            for (int i = 0; i < this.r_TableSize; i++)
            {
                for (int j = 0; j < this.r_TableSize; j++)
                {
                    Piece currentPiece = this.r_Table[i, j];
                    if (currentPiece.Type == soliderType)
                    {
                        PlayerPoints += 1;
                    }
                    if (currentPiece.Type == kingType)
                    {
                        PlayerPoints += 4;
                    }
                }
            }
            return(PlayerPoints);
        }
示例#2
0
        public PieceButton(Piece.eSoliderType i_PieceType, int i_Row, int i_Column)
        {
            this.ClientSize = new Size(k_PieceSize, k_PieceSize);
            m_Type          = i_PieceType;
            m_Row           = i_Row;
            m_Column        = i_Column;

            switch (i_PieceType)
            {
            case Piece.eSoliderType.K:
                this.BackgroundImage = Image.FromFile("..\\..\\Resources\\blacking.png");
                break;

            case Piece.eSoliderType.U:
                this.BackgroundImage = Image.FromFile("..\\..\\Resources\\greyking.png");
                break;

            case Piece.eSoliderType.O:
                this.BackgroundImage = Image.FromFile("..\\..\\Resources\\greynormal.png");
                break;

            case Piece.eSoliderType.X:
                this.BackgroundImage = Image.FromFile("..\\..\\Resources\\blacknormal.png");
                break;

            case Piece.eSoliderType.Empty:
                this.BackgroundImage = null;
                break;
            }

            this.BackgroundImageLayout = ImageLayout.Stretch;
        }
示例#3
0
 internal void JumpMove(int i_R, int i_C, ref List <Move> i_LegalJumps, Piece.eSoliderType i_SoliderType, Piece.eSoliderType i_KingType, int i_JumpMove)
 {
     if ((getSoliderTypeInTable(i_R + (2 * i_JumpMove), i_C - 2) == Piece.eSoliderType.Empty) && (getSoliderTypeInTable(i_R + i_JumpMove, i_C - 1) == i_SoliderType || getSoliderTypeInTable(i_R + i_JumpMove, i_C - 1) == i_KingType))
     {
         i_LegalJumps.Add(new Move(GetSolider(i_R, i_C), GetSolider(i_R + (2 * i_JumpMove), i_C - 2)));
     }
     if ((getSoliderTypeInTable(i_R + (2 * i_JumpMove), i_C + 2) == Piece.eSoliderType.Empty) && (getSoliderTypeInTable(i_R + i_JumpMove, i_C + 1) == i_SoliderType || getSoliderTypeInTable(i_R + i_JumpMove, i_C + 1) == i_KingType))
     {
         i_LegalJumps.Add(new Move(GetSolider(i_R, i_C), GetSolider(i_R + (2 * i_JumpMove), i_C + 2)));
     }
 }
示例#4
0
        internal List <Move> GetPlayerJumpsList(eShapeType i_Shape)
        {
            List <Move> legalJumps = new List <Move>();
            short       TableSize  = this.TableSize;
            int         jumpMove   = 1;

            Piece.eSoliderType soliderType = Piece.eSoliderType.X;
            Piece.eSoliderType kingType    = Piece.eSoliderType.K;
            for (int r = 0; r < TableSize; r++)
            {
                for (int c = 0; c < TableSize; c++)
                {
                    switch (i_Shape)
                    {
                    case eShapeType.O:

                        if ((getSoliderTypeInTable(r, c) == Piece.eSoliderType.O) || (getSoliderTypeInTable(r, c) == Piece.eSoliderType.U))    //regular piece of O
                        {
                            JumpMove(r, c, ref legalJumps, soliderType, kingType, jumpMove);
                        }
                        if (getSoliderTypeInTable(r, c) == Piece.eSoliderType.U)     //King of O
                        {
                            JumpMove(r, c, ref legalJumps, soliderType, kingType, (jumpMove * -1));
                        }
                        break;

                    case eShapeType.X:
                        soliderType = Piece.eSoliderType.O;
                        kingType    = Piece.eSoliderType.U;
                        if ((getSoliderTypeInTable(r, c) == Piece.eSoliderType.X) || (getSoliderTypeInTable(r, c) == Piece.eSoliderType.K))    //regular piece of X
                        {
                            JumpMove(r, c, ref legalJumps, soliderType, kingType, (jumpMove * -1));
                        }
                        if (getSoliderTypeInTable(r, c) == Piece.eSoliderType.K)     //king of X
                        {
                            JumpMove(r, c, ref legalJumps, soliderType, kingType, jumpMove);
                        }
                        break;
                    }
                }
            }
            return(legalJumps);
        }