コード例 #1
0
        public bool FullRow(eSymbols i_PlayerSymbol)
        {
            int  numberOfSymbolInRow = 0;
            bool thereIsFullRow      = false;

            for (int i = 0; i < r_NumOfRows; ++i)
            {
                numberOfSymbolInRow = 0;
                for (int j = 0; j < r_NumOfCols; ++j)
                {
                    if (Board[i, j].Value == i_PlayerSymbol)
                    {
                        numberOfSymbolInRow++;
                    }
                }

                if (numberOfSymbolInRow == r_NumOfRows)
                {
                    thereIsFullRow = true;
                    break;
                }
            }

            return(thereIsFullRow);
        }
コード例 #2
0
        private void drawBoardLine(int i_BoardSize, int i_CurrentLineNumber)
        {
            char          currentRowLetter  = 'a';
            StringBuilder lineStringBuilder = new StringBuilder();

            currentRowLetter += (char)i_CurrentLineNumber;
            lineStringBuilder.Append(string.Format("{0}|", currentRowLetter));
            for (int currentCol = 0; currentCol < i_BoardSize; currentCol++)
            {
                Coordinate currentCoordinate         = new Coordinate(i_CurrentLineNumber, currentCol);
                eSymbols   currentBoardSlotSymbol    = m_GameEngine.GetBoardSquareSymbol(currentCoordinate);
                string     currentBoardSlotCLISymbol = convertToCliSymbol(currentBoardSlotSymbol);

                if (currentBoardSlotSymbol == eSymbols.None)
                {
                    lineStringBuilder.Append("   |");
                }
                else
                {
                    lineStringBuilder.Append(string.Format(" {0} |", currentBoardSlotCLISymbol));
                }
            }

            Console.WriteLine(lineStringBuilder.ToString());
        }
コード例 #3
0
        public bool FullColum(eSymbols i_PlayerSymbol)
        {
            int  numberOfSymbolInColum = 0;
            bool thereIsFullColum      = false;

            for (int i = 0; i < r_NumOfRows; ++i)
            {
                numberOfSymbolInColum = 0;
                for (int j = 0; j < r_NumOfCols; ++j)
                {
                    if (Board[j, i].Value == i_PlayerSymbol)
                    {
                        numberOfSymbolInColum++;
                    }
                }

                if (numberOfSymbolInColum == r_NumOfCols)
                {
                    thereIsFullColum = true;
                    break;
                }
            }

            return(thereIsFullColum);
        }
コード例 #4
0
ファイル: GameDesk.cs プロジェクト: STaras1992/CheckersForms
        public bool CheckForKickOption(eSymbols i_PlayerSymbol, eSymbols i_PlayerSymbolKing, ePositionOnDesk i_PlayerPosition)
        {
            bool isKickOption = false;
            bool isMustKick   = false;

            for (int i = 0; i < Size; i++)
            {
                for (int j = 0; j < Size; j++)
                {
                    if (m_Desk[i, j] == i_PlayerSymbol || m_Desk[i, j] == i_PlayerSymbolKing)
                    {
                        isMustKick = CheckIfMustKick(i, j, i_PlayerPosition);
                        if (isMustKick)
                        {
                            isKickOption = true;
                            break;
                        }
                    }
                }

                if (isMustKick)
                {
                    break;
                }
            }

            return(isKickOption);
        }
コード例 #5
0
ファイル: PanelCheckers.cs プロジェクト: Weltorn/CheckersGame
        private void restartSoldiers()
        {
            int boardSize = r_GameEngine.GetBoardSize();

            for (int i = 0; i < boardSize; i++)
            {
                for (int j = 0; j < boardSize; j++)
                {
                    Coordinate currentCoordinate = new Coordinate(i, j);
                    eSymbols   symbol            = r_GameEngine.GetBoardSquareSymbol(currentCoordinate);

                    r_PictureBoxSoldiersMatrix[i, j] = null;
                    if (symbol != eSymbols.None)
                    {
                        PictureBoxSoldier newPictureBoxSolider = new PictureBoxSoldier(symbol, currentCoordinate);

                        newPictureBoxSolider.Click             += soldier_Click;
                        newPictureBoxSolider.AnimationFinished += soldier_AnimationFinished;
                        Controls.Add(newPictureBoxSolider);
                        r_PictureBoxSoldiersMatrix[i, j] = newPictureBoxSolider;
                        newPictureBoxSolider.BringToFront();
                    }
                }
            }
        }
コード例 #6
0
 public PictureBoxSoldier(eSymbols i_Symbol, Coordinate i_Coordinate) : base(i_Coordinate)
 {
     m_Symbol  = i_Symbol;
     BackColor = Color.Transparent;
     SetImage();
     initTimers();
 }
コード例 #7
0
ファイル: GameDesk.cs プロジェクト: STaras1992/CheckersForms
        public void MakeMove(string i_Move, eSymbols i_Symbol, eSymbols i_SymbolKing, ePositionOnDesk i_Position)
        {
            string coordinates;
            int    rowFrom;
            int    rowTo;
            int    colFrom;
            int    colTo;

            if (int.TryParse(i_Move, out int temp))
            {
                rowFrom = int.Parse(i_Move[0].ToString());
                colFrom = int.Parse(i_Move[1].ToString());
                rowTo   = int.Parse(i_Move[2].ToString());
                colTo   = int.Parse(i_Move[3].ToString());
            }
            else
            {
                coordinates = lettersToCoordinates(i_Move);
                rowFrom     = int.Parse(coordinates[1].ToString());
                colFrom     = int.Parse(coordinates[0].ToString());
                rowTo       = int.Parse(coordinates[3].ToString());
                colTo       = int.Parse(coordinates[2].ToString());
            }

            MakeMove(rowFrom, colFrom, rowTo, colTo, i_Symbol, i_SymbolKing, i_Position);
        }
コード例 #8
0
ファイル: User.cs プロジェクト: STaras1992/CheckersForms
 public User(string i_Playername, int i_Number, eSymbols i_Symb, eSymbols i_KingSymb, GameDesk.ePositionOnDesk i_Position)
 {
     r_Name         = i_Playername;
     r_PlayerNumber = i_Number;
     r_Symbol       = i_Symb;
     r_SymbolKing   = i_KingSymb;
     r_Position     = i_Position;
 }
コード例 #9
0
 public ComputerDummy(string i_Name)
 {
     r_Name         = i_Name;
     r_PlayerNumber = 2;
     r_Symbol       = eSymbols.Player2;
     r_SymbolKing   = eSymbols.Player2King;
     r_Position     = GameDesk.ePositionOnDesk.UP;
     m_Rand         = new Random();
     m_LegalMoves   = new List <Move>();
     m_LastMove     = new Move();
 }
コード例 #10
0
ファイル: Soldier.cs プロジェクト: ormergi/Checkers-game
 public Soldier(Player i_OwnerPlayer)
 {
     m_Symbol      = i_OwnerPlayer.Symbol;
     m_OwnerPlayer = i_OwnerPlayer;
     if (m_Symbol == eSymbols.Black)
     {
         m_SoldierDirection = eSoldierDirection.Up;
     }
     else if (m_Symbol == eSymbols.White)
     {
         m_SoldierDirection = eSoldierDirection.Down;
     }
 }
コード例 #11
0
        public bool FullLeftDiagonal(eSymbols i_PlayerSymbol)
        {
            int numberOfSymbolInDiagonal = 0;

            for (int i = 0; i < r_NumOfRows; ++i)
            {
                if (Board[i, i].Value == i_PlayerSymbol)
                {
                    numberOfSymbolInDiagonal++;
                }
            }

            return((numberOfSymbolInDiagonal == r_NumOfRows) ? true : false);
        }
コード例 #12
0
        public eSymbols GetBoardCellSymbol(Coordinate i_Coordinate)
        {
            eSymbols symbol = eSymbols.None;

            if (IsValidCoordinate(i_Coordinate))
            {
                if (!IsEmptyCell(i_Coordinate))
                {
                    symbol = GetSoliderAt(i_Coordinate).Symbol;
                }
            }

            return(symbol);
        }
コード例 #13
0
ファイル: Soldier.cs プロジェクト: ormergi/Checkers-game
 private void becomeKing()
 {
     if (!m_IsKing)
     {
         m_IsKing           = true;
         m_SoldierDirection = eSoldierDirection.Both;
         if (m_Symbol == eSymbols.Black)
         {
             m_Symbol = eSymbols.K;
         }
         else if (m_Symbol == eSymbols.White)
         {
             m_Symbol = eSymbols.U;
         }
     }
 }
コード例 #14
0
        public bool FullRightDiagonal(eSymbols i_PlayerSymbol)
        {
            int numberOfSymbolInDiagonal = 0;
            int columIndex = r_NumOfCols - 1;

            for (int i = 0; i < r_NumOfRows; ++i)
            {
                if (Board[i, columIndex].Value == i_PlayerSymbol)
                {
                    numberOfSymbolInDiagonal++;
                }

                columIndex--;
            }

            return((numberOfSymbolInDiagonal == r_NumOfRows) ? true : false);
        }
コード例 #15
0
        public void BecomeKing(eSymbols i_Symbol)
        {
            switch (i_Symbol)
            {
            case eSymbols.K:
                m_InitianlizedImage = Image.FromFile(@"..\..\Resources\checker black king.png");
                m_MarkedRedImage    = Image.FromFile(@"..\..\Resources\checker black king marked red.png");
                break;

            case eSymbols.U:
                m_InitianlizedImage = Image.FromFile(@"..\..\Resources\checker white king.png");
                m_MarkedRedImage    = Image.FromFile(@"..\..\Resources\checker white king marked red.png");
                break;
            }

            m_Symbol             = i_Symbol;
            Image                = m_InitianlizedImage;
            m_KingGrowingCounter = 0;
            r_BecomeKingTimer.Start();
        }
コード例 #16
0
ファイル: GameDesk.cs プロジェクト: STaras1992/CheckersForms
        public int calcPlayerPoints(eSymbols i_Symbol, eSymbols i_SymbolKing)
        {
            int points = 0;

            for (int i = 0; i < Size; i++)
            {
                for (int j = 0; j < Size; j++)
                {
                    if (m_Desk[i, j] == i_Symbol)
                    {
                        ++points;
                    }
                    else if (m_Desk[i, j] == i_SymbolKing)
                    {
                        points += 4;
                    }
                }
            }

            return(points);
        }
コード例 #17
0
ファイル: GameDesk.cs プロジェクト: STaras1992/CheckersForms
        public bool CheckIfMoveIsLegal(string i_Move, eSymbols i_PlayerSymbol, eSymbols i_PlayerSymbolKing, ePositionOnDesk i_PlayerPosition)
        {
            bool   isLegal    = true;
            bool   isMustKick = false;
            string coordinates;
            int    rowFrom;
            int    rowTo;
            int    colFrom;
            int    colTo;
            int    distance;

            if (int.TryParse(i_Move, out int temp))
            {
                rowFrom = int.Parse(i_Move[0].ToString());
                colFrom = int.Parse(i_Move[1].ToString());
                rowTo   = int.Parse(i_Move[2].ToString());
                colTo   = int.Parse(i_Move[3].ToString());
            }
            else
            {
                coordinates = lettersToCoordinates(i_Move);
                rowFrom     = int.Parse(coordinates[1].ToString());
                colFrom     = int.Parse(coordinates[0].ToString());
                rowTo       = int.Parse(coordinates[3].ToString());
                colTo       = int.Parse(coordinates[2].ToString());
            }

            if (((rowFrom + colFrom) % 2 == 0) || ((rowTo + colTo) % 2 == 0)) // checkers played only on cells with odd sum of row and column
            {
                isLegal       = false;
                m_FailMessage = "Move is illegal!Wrong cell selected.";
            }
            else if (!checkCellIsCorrect(rowFrom, colFrom, rowTo, colTo, i_PlayerSymbol, i_PlayerSymbolKing))
            {
                isLegal       = false;
                m_FailMessage = "Move is illegal!Wrong cell selected.";
            }
            else if (!checkDirectionIsCorrect(rowFrom, colFrom, rowTo, colTo, i_PlayerPosition))
            {
                isLegal       = false;
                m_FailMessage = "Move is illegal!Wrong direction.";
            }

            if (isLegal)
            {
                distance = checkDistance(rowFrom, rowTo, colFrom, colTo, i_PlayerPosition); // distance between "from cell" to "To cell".3 kick enemy ,2 regular move.
                if (distance < 0)
                {
                    isLegal       = false;
                    m_FailMessage = "Move is illegal!";
                }
                else // check if we kick enemy checker or 3 step move
                {
                    /*if distance 1 we know that cell is empty (we check that before) so its legal.*/
                    isMustKick = CheckForKickOption(i_PlayerSymbol, i_PlayerSymbolKing, i_PlayerPosition);
                    if (distance == 1 && isMustKick)
                    {
                        isLegal       = false; // beacause only if distance ==2 checker kicked
                        m_FailMessage = "You must eat enemy checker!";
                    }
                    else if (distance == 2)
                    {
                        isLegal = checkThreeCellMove(rowFrom, colFrom, rowTo, colTo, i_PlayerSymbol, i_PlayerSymbolKing, i_PlayerPosition);
                        if (!isLegal)
                        {
                            m_FailMessage = "Move is illegal!";
                        }
                    }
                }
            }

            return(isLegal);
        }
コード例 #18
0
ファイル: GameDesk.cs プロジェクト: STaras1992/CheckersForms
        private bool checkThreeCellMove(int i_RowFrom, int i_ColFrom, int i_RowTo, int i_ColTo, eSymbols i_PlayerSymbol, eSymbols i_PlayerSymbolKing, ePositionOnDesk i_PlayerPosition) // check if three cell move i slegal
        {
            bool isLegal = true;

            if (m_Desk[i_RowFrom, i_ColFrom] == i_PlayerSymbol)                                                                                                                                                      // not king
            {
                if (i_PlayerPosition == ePositionOnDesk.DOWN && (i_ColTo > i_ColFrom))                                                                                                                               // right side from "start move cell"
                {
                    if (!((m_Desk[i_RowFrom - 1, i_ColFrom + 1] != eSymbols.EmptyCell) && (m_Desk[i_RowFrom - 1, i_ColFrom + 1] != i_PlayerSymbol) && (m_Desk[i_RowFrom - 1, i_ColFrom + 1] != i_PlayerSymbolKing))) // not enemy checker
                    {
                        isLegal = false;
                    }
                }
                else if (i_PlayerPosition == ePositionOnDesk.DOWN && (i_ColTo < i_ColFrom))                                                                                                                          // left side from "start move cell"
                {
                    if (!((m_Desk[i_RowFrom - 1, i_ColFrom - 1] != eSymbols.EmptyCell) && (m_Desk[i_RowFrom - 1, i_ColFrom - 1] != i_PlayerSymbol) && (m_Desk[i_RowFrom - 1, i_ColFrom - 1] != i_PlayerSymbolKing))) // not enemy checker
                    {
                        isLegal = false;
                    }
                }
                else if (i_PlayerPosition == ePositionOnDesk.UP && (i_ColTo > i_ColFrom))                                                                                                                            // right side from "start move cell"
                {
                    if (!((m_Desk[i_RowFrom + 1, i_ColFrom + 1] != eSymbols.EmptyCell) && (m_Desk[i_RowFrom + 1, i_ColFrom + 1] != i_PlayerSymbol) && (m_Desk[i_RowFrom + 1, i_ColFrom + 1] != i_PlayerSymbolKing))) // not enemy checker
                    {
                        isLegal = false;
                    }
                }
                else if (i_PlayerPosition == ePositionOnDesk.DOWN && (i_ColTo < i_ColFrom))                                                                                                                          // left side from "start move cell"
                {
                    if (!((m_Desk[i_RowFrom + 1, i_ColFrom - 1] != eSymbols.EmptyCell) && (m_Desk[i_RowFrom + 1, i_ColFrom - 1] != i_PlayerSymbol) && (m_Desk[i_RowFrom + 1, i_ColFrom - 1] != i_PlayerSymbolKing))) // not enemy checker
                    {
                        isLegal = false;
                    }
                }
            }
            else // king
            {
                if ((i_ColTo < i_ColFrom) && (i_RowTo < i_RowFrom)) // Up and  left
                {
                    if (!((m_Desk[i_RowFrom - 1, i_ColFrom - 1] != eSymbols.EmptyCell) && (m_Desk[i_RowFrom - 1, i_ColFrom - 1] != i_PlayerSymbol) && (m_Desk[i_RowFrom - 1, i_ColFrom - 1] != i_PlayerSymbolKing))) // not enemy checker
                    {
                        isLegal = false;
                    }
                }
                else if ((i_ColTo < i_ColFrom) && (i_RowTo > i_RowFrom))                                                                                                                                             // Down and left
                {
                    if (!((m_Desk[i_RowFrom + 1, i_ColFrom - 1] != eSymbols.EmptyCell) && (m_Desk[i_RowFrom + 1, i_ColFrom - 1] != i_PlayerSymbol) && (m_Desk[i_RowFrom + 1, i_ColFrom - 1] != i_PlayerSymbolKing))) // not enemy checker
                    {
                        isLegal = false;
                    }
                }
                else if ((i_ColTo > i_ColFrom) && (i_RowTo < i_RowFrom))                                                                                                                                             // Up and right
                {
                    if (!((m_Desk[i_RowFrom - 1, i_ColFrom + 1] != eSymbols.EmptyCell) && (m_Desk[i_RowFrom - 1, i_ColFrom + 1] != i_PlayerSymbol) && (m_Desk[i_RowFrom - 1, i_ColFrom + 1] != i_PlayerSymbolKing))) // not enemy checker
                    {
                        isLegal = false;
                    }
                }
                else if ((i_ColTo > i_ColFrom) && (i_RowTo > i_RowFrom))                                                                                                                                             // Down and right
                {
                    if (!((m_Desk[i_RowFrom + 1, i_ColFrom + 1] != eSymbols.EmptyCell) && (m_Desk[i_RowFrom + 1, i_ColFrom + 1] != i_PlayerSymbol) && (m_Desk[i_RowFrom + 1, i_ColFrom + 1] != i_PlayerSymbolKing))) // not enemy checker
                    {
                        isLegal = false;
                    }
                }
            }

            return(isLegal);
        }
コード例 #19
0
ファイル: GameDesk.cs プロジェクト: STaras1992/CheckersForms
        private bool checkCellIsCorrect(int i_RowFrom, int i_ColFrom, int i_RowTo, int i_ColTo, eSymbols i_PlayerSymbol, eSymbols i_PlayerSymbolKing) // celected cells are legal or not
        {
            bool isCorrect = true;

            if ((m_Desk[i_RowFrom, i_ColFrom] != i_PlayerSymbol) && (m_Desk[i_RowFrom, i_ColFrom] != i_PlayerSymbolKing))
            {
                isCorrect = false;
            }

            if (isCorrect && (m_Desk[i_RowTo, i_ColTo] != eSymbols.EmptyCell))
            {
                isCorrect = false;
            }

            return(isCorrect);
        }
コード例 #20
0
ファイル: GameDesk.cs プロジェクト: STaras1992/CheckersForms
        private string checkForEnemyToKill(int i_StartRow, int i_StartCol, eSymbols i_EnemySymbol) // check for enemys around
        {
            StringBuilder enemyCoordinates = new StringBuilder();
            eSymbols      kingEnemySymbol;

            if (i_EnemySymbol == eSymbols.Player2)
            {
                kingEnemySymbol = eSymbols.Player2King;
            }
            else
            {
                kingEnemySymbol = eSymbols.Player1King;
            }

            /*Check for enemy checker near cell that move starts from*/
            if (i_StartRow == 0)               // Move starts in upper row
            {
                if (i_StartCol == (Size - 1))  // right upper corner
                {
                    if (m_Desk[1, Size - 2] == i_EnemySymbol || m_Desk[1, Size - 2] == kingEnemySymbol)
                    {
                        enemyCoordinates.AppendFormat("{0}{1}", 1, Size - 2);
                    }
                }
                else                          // upper row without corners
                {
                    if (m_Desk[1, i_StartCol - 1] == i_EnemySymbol || m_Desk[1, i_StartCol - 1] == kingEnemySymbol)
                    {
                        enemyCoordinates.AppendFormat("{0}{1}", 1, i_StartCol - 1);
                    }

                    if (m_Desk[1, i_StartCol + 1] == i_EnemySymbol || m_Desk[1, i_StartCol + 1] == kingEnemySymbol)
                    {
                        enemyCoordinates.AppendFormat("{0}{1}", 1, i_StartCol + 1);
                    }
                }
            }
            else if (i_StartRow == (Size - 1)) // Move starts in down row
            {
                if (i_StartCol == 0)           // left down corner
                {
                    if (m_Desk[Size - 2, 1] == i_EnemySymbol || m_Desk[Size - 2, 1] == kingEnemySymbol)
                    {
                        enemyCoordinates.AppendFormat("{0}{1}", Size - 2, 1);
                    }
                }
                else                          // down row without corners
                {
                    if (m_Desk[Size - 2, i_StartCol - 1] == i_EnemySymbol || m_Desk[Size - 2, i_StartCol - 1] == kingEnemySymbol)
                    {
                        enemyCoordinates.AppendFormat("{0}{1}", Size - 2, i_StartCol - 1);
                    }

                    if (m_Desk[Size - 2, i_StartCol + 1] == i_EnemySymbol || m_Desk[Size - 2, i_StartCol + 1] == kingEnemySymbol)
                    {
                        enemyCoordinates.AppendFormat("{0}{1}", Size - 2, i_StartCol + 1);
                    }
                }
            }
            else if (i_StartCol == 0)                   // Move starts in left column no corners
            {
                if (m_Desk[i_StartRow - 1, 1] == i_EnemySymbol || m_Desk[i_StartRow - 1, 1] == kingEnemySymbol)
                {
                    enemyCoordinates.AppendFormat("{0}{1}", i_StartRow - 1, 1);
                }

                if (m_Desk[i_StartRow + 1, 1] == i_EnemySymbol || m_Desk[i_StartRow + 1, 1] == kingEnemySymbol)
                {
                    enemyCoordinates.AppendFormat("{0}{1}", i_StartRow + 1, 1);
                }
            }
            else if (i_StartCol == (Size - 1))          // Move starts in right column no corners
            {
                if (m_Desk[i_StartRow - 1, Size - 2] == i_EnemySymbol || m_Desk[i_StartRow - 1, Size - 2] == kingEnemySymbol)
                {
                    enemyCoordinates.AppendFormat("{0}{1}", i_StartRow - 1, Size - 2);
                }

                if (m_Desk[i_StartRow + 1, Size - 2] == i_EnemySymbol || m_Desk[i_StartRow + 1, Size - 2] == kingEnemySymbol)
                {
                    enemyCoordinates.AppendFormat("{0}{1}", i_StartRow + 1, Size - 2);
                }
            }
            else // move on middle of desk
            {
                if (m_Desk[i_StartRow - 1, i_StartCol - 1] == i_EnemySymbol || m_Desk[i_StartRow - 1, i_StartCol - 1] == kingEnemySymbol)
                {
                    enemyCoordinates.AppendFormat("{0}{1}", i_StartRow - 1, i_StartCol - 1);
                }

                if (m_Desk[i_StartRow - 1, i_StartCol + 1] == i_EnemySymbol || m_Desk[i_StartRow - 1, i_StartCol + 1] == kingEnemySymbol)
                {
                    enemyCoordinates.AppendFormat("{0}{1}", i_StartRow - 1, i_StartCol + 1);
                }

                if (m_Desk[i_StartRow + 1, i_StartCol - 1] == i_EnemySymbol || m_Desk[i_StartRow + 1, i_StartCol - 1] == kingEnemySymbol)
                {
                    enemyCoordinates.AppendFormat("{0}{1}", i_StartRow + 1, i_StartCol - 1);
                }

                if (m_Desk[i_StartRow + 1, i_StartCol + 1] == i_EnemySymbol || m_Desk[i_StartRow + 1, i_StartCol + 1] == kingEnemySymbol)
                {
                    enemyCoordinates.AppendFormat("{0}{1}", i_StartRow + 1, i_StartCol + 1);
                }
            }

            return(enemyCoordinates.ToString());
        }
コード例 #21
0
ファイル: GameDesk.cs プロジェクト: STaras1992/CheckersForms
        public void MakeMove(int i_RowFrom, int i_ColFrom, int i_RowTo, int i_ColTo, eSymbols i_Symbol, eSymbols i_SymbolKing, ePositionOnDesk i_Position)
        {
            int  distance;
            bool isKing = false;

            if (m_Desk[i_RowFrom, i_ColFrom] == i_SymbolKing)
            {
                isKing = true;
            }

            distance = checkDistance(i_RowFrom, i_RowTo, i_ColFrom, i_ColTo, i_Position);
            if (distance == 1) // only move
            {
                Desk[i_RowFrom, i_ColFrom] = eSymbols.EmptyCell;
                if (i_RowTo == 0 || i_RowTo == (Size - 1))
                {
                    Desk[i_RowTo, i_ColTo] = i_SymbolKing;
                }
                else
                {
                    if (isKing)
                    {
                        Desk[i_RowTo, i_ColTo] = i_SymbolKing;
                    }
                    else
                    {
                        Desk[i_RowTo, i_ColTo] = i_Symbol;
                    }
                }
            }
            else // kick enemy checker
            {
                if (m_Desk[i_RowFrom, i_ColFrom] == i_SymbolKing)
                {
                    m_Desk[i_RowTo, i_ColTo] = i_SymbolKing;
                }
                else
                {
                    if (i_RowTo == 0 || i_RowTo == (Size - 1))
                    {
                        Desk[i_RowTo, i_ColTo] = i_SymbolKing;
                    }
                    else
                    {
                        m_Desk[i_RowTo, i_ColTo] = i_Symbol;
                    }
                }

                Desk[i_RowFrom, i_ColFrom] = eSymbols.EmptyCell;
                if (i_RowFrom < i_RowTo && i_ColFrom < i_ColTo)
                {
                    Desk[i_RowFrom + 1, i_ColFrom + 1] = eSymbols.EmptyCell;
                }
                else if (i_RowFrom < i_RowTo && i_ColFrom > i_ColTo)
                {
                    Desk[i_RowFrom + 1, i_ColFrom - 1] = eSymbols.EmptyCell;
                }
                else if (i_RowFrom > i_RowTo && i_ColFrom < i_ColTo)
                {
                    Desk[i_RowFrom - 1, i_ColFrom + 1] = eSymbols.EmptyCell;
                }
                else if (i_RowFrom > i_RowTo && i_ColFrom > i_ColTo)
                {
                    Desk[i_RowFrom - 1, i_ColFrom - 1] = eSymbols.EmptyCell;
                }
            }
        }
コード例 #22
0
 public BecameKingEvent(eSymbols i_Symbol, Coordinate i_SoldierCoordinate)
 {
     m_Symbol     = i_Symbol;
     m_Coordinate = i_SoldierCoordinate;
 }
コード例 #23
0
 private string convertToCliSymbol(eSymbols i_Symbol)
 {
     return(i_Symbol == eSymbols.Black ? "X" : "O");
 }
コード例 #24
0
ファイル: PanelCheckers.cs プロジェクト: Weltorn/CheckersGame
        private void becomeKing(eSymbols i_Symbol, Coordinate i_Coordinate)
        {
            PictureBoxSoldier pictureboxSoldier = r_PictureBoxSoldiersMatrix[i_Coordinate.Row, i_Coordinate.Column];

            pictureboxSoldier.BecomeKing(i_Symbol);
        }
コード例 #25
0
 public void SetCellValue(int i_Row, int i_Col, eSymbols i_Value)
 {
     m_Board[i_Row, i_Col].Value     = i_Value;
     m_Board[i_Row, i_Col].Available = false;
 }