示例#1
0
        public Board()
        {
            this.cells = new Tablesquare[dimensXxY, dimensXxY];

            this.boardPanel = new Panel();
            this.boardPanel.SetBounds(100, 25, 480, 480);
            this.boardPanel.Visible         = true;
            this.boardPanel.BackgroundImage = Properties.Resources.draughtsBoard;

            int top = 0, left = 0;

            for (int i = 0; i < 8; i++)
            {
                left = 0;

                for (int j = 0; j < 8; j++)
                {
                    cells[i, j]           = new Tablesquare();
                    cells[i, j].Image     = null;
                    cells[i, j].BackColor = Color.Transparent;
                    cells[i, j].SizeMode  = PictureBoxSizeMode.CenterImage;
                    cells[i, j].Location  = new Point(left, top);
                    cells[i, j].Size      = new Size(60, 60);
                    cells[i, j].Visible   = true;

                    if (boardInitialPiecesPositions[i, j] == 1 && i < 4)
                    {
                        cells[i, j].piece                = new Piece();
                        cells[i, j].piece.color          = PieceColor.redPiece;
                        cells[i, j].piece.lineposition   = top / 60;
                        cells[i, j].piece.columnposition = left / 60;
                        cells[i, j].piece.type           = PieceType.normalPiece;
                        cells[i, j].Image                = Properties.Resources.redTransparent;
                        left += 60;
                    }
                    else if (boardInitialPiecesPositions[i, j] == 1 && i > 4)
                    {
                        cells[i, j].piece                = new Piece();
                        cells[i, j].piece.color          = PieceColor.bluePiece;
                        cells[i, j].piece.lineposition   = top / 60;
                        cells[i, j].piece.columnposition = left / 60;
                        cells[i, j].piece.type           = PieceType.normalPiece;
                        cells[i, j].Image                = Properties.Resources.blueTransparent;
                        left += 60;
                    }
                    else
                    {
                        left += 60;
                    }
                    boardPanel.Controls.Add(cells[i, j]);
                }
                top += 60;
            }
        }
示例#2
0
        private void onTableClick(object sender, EventArgs e)
        {
            Tablesquare t = sender as Tablesquare;

            draughtsGame.getAvailableMovesNormalPieces();
            draughtsGame.getAvailableMovesKingPieces();

            if (draughtsGame.turn == PieceColor.bluePiece)
            {
                if (!click)
                {
                    if (t.piece != null)
                    {
                        for (int i = 0; i < 8; i++)
                        {
                            for (int j = 0; j < 8; j++)
                            {
                                if (Game.gameboard.cells[i, j].Equals(sender))
                                {
                                    oldr = i;
                                    oldc = j;
                                }
                            }
                        }
                        /////modificari pe aici
                        if (t.piece.type == PieceType.normalPiece)
                        {
                            t.piece.possiblePieceMoves = draughtsGame.movesForNormalPiece(t.piece.lineposition, t.piece.columnposition, draughtsGame.turn);
                            t.piece.takeMoves          = draughtsGame.takeMovesForCurrentPiece(t.piece.lineposition, t.piece.columnposition, draughtsGame.turn);
                        }
                        else if (t.piece.type == PieceType.kingPiece && t.piece.color == draughtsGame.turn)
                        {
                            t.piece.possiblePieceMoves = draughtsGame.movesForKing(t.piece.lineposition, t.piece.columnposition, draughtsGame.turn);
                            t.piece.takeMoves          = draughtsGame.takeMovesForKing(t.piece.lineposition, t.piece.columnposition, draughtsGame.turn);
                        }
                        //////////////////////////////////////

                        if (t.piece.takeMoves.Count() != 0)
                        {
                            flag = true;
                            currentPossibleMoves = t.piece.takeMoves;
                            draughtsGame.showAvailableMovesToUser(t.piece.takeMoves, draughtsGame.turn, Game.gameboard);
                        }
                        else
                        {
                            flag = false;
                            currentPossibleMoves = t.piece.possiblePieceMoves;
                            draughtsGame.showAvailableMovesToUser(t.piece.possiblePieceMoves, draughtsGame.turn, Game.gameboard);
                        }

                        if (currentPossibleMoves.Count() != 0)
                        {
                            click = true;
                        }
                    }
                    else
                    {
                        click = false;
                    }
                }
                else
                {
                    for (int i = 0; i < 8; i++)
                    {
                        for (int j = 0; j < 8; j++)
                        {
                            if (Game.gameboard.cells[i, j].Equals(sender))
                            {
                                newr = i;
                                newc = j;
                            }
                        }
                    }
                    if (Game.gameboard.cells[newr, newc].piece != null)
                    {
                        click = false;
                        draughtsGame.clearAvailableMovesAfterClick(currentPossibleMoves, Game.gameboard);
                    }
                    else
                    {
                        Tuple <int, int> destination = new Tuple <int, int>(newr, newc);
                        if (Game.gameboard.cells[newr, newc].piece == null)
                        {
                            if (currentPossibleMoves.Contains(destination))
                            {
                                if (flag == true)
                                {
                                    draughtsGame.takePiece(oldr, oldc, newr, newc, Game.gameboard);
                                    if (draughtsGame.turn == PieceColor.redPiece)
                                    {
                                        redCaptured.Text = (Int16.Parse(redCaptured.Text) + 1).ToString();
                                    }
                                    else
                                    {
                                        blueCaptured.Text = (Int16.Parse(blueCaptured.Text) + 1).ToString();
                                    }
                                    draughtsGame.clearAvailableMovesAfterClick(currentPossibleMoves, Game.gameboard);
                                    click             = false;
                                    draughtsGame.turn = draughtsGame.turn == PieceColor.bluePiece ? PieceColor.redPiece : PieceColor.bluePiece;
                                    flag = false;
                                }
                                else
                                {
                                    draughtsGame.movePiece(oldr, oldc, newr, newc, Game.gameboard);
                                    draughtsGame.clearAvailableMovesAfterClick(currentPossibleMoves, Game.gameboard);
                                    click             = false;
                                    draughtsGame.turn = draughtsGame.turn == PieceColor.bluePiece ? PieceColor.redPiece : PieceColor.bluePiece;
                                }

                                if (draughtsGame.turn == PieceColor.redPiece)
                                {
                                    lTurn.Text = "Red";
                                }
                                else
                                {
                                    lTurn.Text = "Blue";
                                }
                            }
                        }
                    }
                }
            }
            if (draughtsGame.turn == PieceColor.redPiece)
            {
                draughtsGame.getAvailableMovesNormalPieces();
                draughtsGame.getAvailableMovesKingPieces();

                List <int> aMove     = new List <int>();
                List <int> aTakeMove = new List <int>();

                aMove     = draughtsGame.randomNormalMoveAI(Game.gameboard);
                aTakeMove = draughtsGame.randomTakeMoveAI(Game.gameboard);

                if (aTakeMove.Count() != 0)
                {
                    draughtsGame.takePiece(aTakeMove[0], aTakeMove[1], aTakeMove[2], aTakeMove[3], Game.gameboard);
                    draughtsGame.turn = PieceColor.bluePiece;
                }
                else
                {
                    draughtsGame.movePiece(aMove[0], aMove[1], aMove[2], aMove[3], Game.gameboard);
                    draughtsGame.turn = PieceColor.bluePiece;
                }
            }

            draughtsGame.promotePiece(Game.gameboard);
            gameEnded();
        }