Example #1
0
        public Table(uint width, uint height)
        {
            float  currentY      = 0;
            string currentId     = "castle";
            string colorOfFigure = "black";

            actualDeck[0] = new title(width, height, white, idS[0], 0, 0, colorOfFigure);
            for (int i = 1; i < actualDeck.Length; i++)
            {
                if (i != 0 && i % 8 == 0)
                {
                    currentY += height / 8;
                    if (currentY == (height / 8) * 6)
                    {
                        colorOfFigure = "white";
                    }
                    if (currentY > height / 8 && currentY < (height / 8) * 6)
                    {
                        currentId     = " ";
                        colorOfFigure = " ";
                    }
                    else if (currentY == height / 8 || currentY == (height / 8) * 6)
                    {
                        currentId = idS[idS.Length - 1];
                    }
                    else
                    {
                        currentId = idS[0];
                    }

                    actualDeck[i] = new title(width, height, actualDeck[i - 1].c, currentId, 0, currentY, colorOfFigure);
                }
                else
                {
                    if (currentY == (height / 8) * 7)
                    {
                        currentId = idS[i - 56];
                    }

                    else if (currentId != "pawn" && currentId != " ")
                    {
                        currentId = idS[i];
                    }

                    actualDeck[i] = new title(width, height, ReverseColor(actualDeck[i - 1].c), currentId, actualDeck[i - 1].sp.Position.X + title.titleWidth, actualDeck[i - 1].sp.Position.Y, colorOfFigure);
                }
            }
        }
Example #2
0
        internal static void ChangeFigureTargets(title title, int index)
        {
            switch (title.Id_Of_Figure)
            {
            case "pawn":
                if (title.colorOfFigure == "black")
                {
                    pawn.blackTargets.Clear();
                    pawn.blackTargets.AddRange(PawnTargets(Table.actualDeck, "black"));
                    ChangeTargets("black");
                }
                else
                {
                    pawn.whiteTargets.Clear();
                    pawn.whiteTargets.AddRange(PawnTargets(Table.actualDeck, "white"));
                    ChangeTargets("white");
                }
                break;

            case "queen":
                if (title.colorOfFigure == "black")
                {
                    queen.blackTargets.Clear();

                    queen.blackTargets.AddRange(queen.CanMove(Table.actualDeck, index, Table.actualDeck[index].colorOfFigure));
                    ChangeTargets("black");
                }
                else
                {
                    queen.whiteTargets.Clear();
                    queen.whiteTargets.AddRange(queen.CanMove(Table.actualDeck, index, Table.actualDeck[index].colorOfFigure));
                    ChangeTargets("white");
                }
                break;

            case "king":
                if (title.colorOfFigure == "black")
                {
                    title[] arr = Table.actualDeck;
                    int     i   = index;
                    king.blackTargets.Clear();
                    try
                    {
                        if ((arr[i + 8].Id_Of_Figure == " ") && arr[i].sp.Position.Y + title.titleHeight == arr[i + 8].sp.Position.Y)
                        {
                            king.blackTargets.Add(i + 8);
                        }
                        if ((arr[i + 9].Id_Of_Figure == " ") && arr[i].sp.Position.Y + title.titleHeight == arr[i + 9].sp.Position.Y)
                        {
                            king.blackTargets.Add(i + 9);
                        }
                        if ((arr[i + 7].Id_Of_Figure == " ") && arr[i].sp.Position.Y + title.titleHeight == arr[i + 7].sp.Position.Y)
                        {
                            king.blackTargets.Add(i + 7);
                        }
                    }
                    catch { }

                    try
                    {
                        if ((arr[i - 8].Id_Of_Figure == " ") && arr[i].sp.Position.Y - title.titleHeight == arr[i - 8].sp.Position.Y)
                        {
                            king.blackTargets.Add(i - 8);
                        }
                        if ((arr[i - 9].Id_Of_Figure == " ") && arr[i].sp.Position.Y - title.titleHeight == arr[i - 9].sp.Position.Y)
                        {
                            king.blackTargets.Add(i - 9);
                        }
                        if ((arr[i - 7].Id_Of_Figure == " ") && arr[i].sp.Position.Y - title.titleHeight == arr[i - 7].sp.Position.Y)
                        {
                            king.blackTargets.Add(i - 7);
                        }
                    }
                    catch { }

                    try
                    {
                        if ((arr[i + 1].Id_Of_Figure == " ") && arr[i].sp.Position.Y == arr[i + 1].sp.Position.Y)
                        {
                            king.blackTargets.Add(i + 1);
                        }
                        if ((arr[i - 1].Id_Of_Figure == " ") && arr[i].sp.Position.Y == arr[i - 1].sp.Position.Y)
                        {
                            king.blackTargets.Add(i - 1);
                        }
                    }
                    catch { }

                    ChangeTargets("black");
                }
                else
                {
                    title[] arr = Table.actualDeck;
                    int     i   = index;
                    king.whiteTargets.Clear();
                    try
                    {
                        if ((arr[i + 8].Id_Of_Figure == " ") && arr[i].sp.Position.Y + title.titleHeight == arr[i + 8].sp.Position.Y)
                        {
                            king.whiteTargets.Add(i + 8);
                        }
                        if ((arr[i + 9].Id_Of_Figure == " ") && arr[i].sp.Position.Y + title.titleHeight == arr[i + 9].sp.Position.Y)
                        {
                            king.whiteTargets.Add(i + 9);
                        }
                        if ((arr[i + 7].Id_Of_Figure == " ") && arr[i].sp.Position.Y + title.titleHeight == arr[i + 7].sp.Position.Y)
                        {
                            king.whiteTargets.Add(i + 7);
                        }
                    }
                    catch { }

                    try
                    {
                        if ((arr[i - 8].Id_Of_Figure == " ") && arr[i].sp.Position.Y - title.titleHeight == arr[i - 8].sp.Position.Y)
                        {
                            king.whiteTargets.Add(i - 8);
                        }
                        if ((arr[i - 9].Id_Of_Figure == " ") && arr[i].sp.Position.Y - title.titleHeight == arr[i - 9].sp.Position.Y)
                        {
                            king.whiteTargets.Add(i - 9);
                        }
                        if ((arr[i - 7].Id_Of_Figure == " ") && arr[i].sp.Position.Y - title.titleHeight == arr[i - 7].sp.Position.Y)
                        {
                            king.whiteTargets.Add(i - 7);
                        }
                    }
                    catch { }

                    try
                    {
                        if ((arr[i + 1].Id_Of_Figure == " ") && arr[i].sp.Position.Y == arr[i + 1].sp.Position.Y)
                        {
                            king.whiteTargets.Add(i + 1);
                        }
                        if ((arr[i - 1].Id_Of_Figure == " ") && arr[i].sp.Position.Y == arr[i - 1].sp.Position.Y)
                        {
                            king.whiteTargets.Add(i - 1);
                        }
                    }
                    catch { }

                    ChangeTargets("white");
                }
                break;

            case "castle":
                if (title.colorOfFigure == "black")
                {
                    if (title.firstColorOfFigure == "black")
                    {
                        castle.blackBTargets.Clear();
                        castle.blackBTargets.AddRange(castle.CanMove(Table.actualDeck, index, Table.actualDeck[index].colorOfFigure));
                    }
                    else if (title.firstColorOfFigure == "white")
                    {
                        castle.blackWTargets.Clear();
                        castle.blackWTargets.AddRange(castle.CanMove(Table.actualDeck, index, Table.actualDeck[index].colorOfFigure));
                    }
                    ChangeTargets("black");
                }
                else
                {
                    if (title.firstColorOfFigure == "black")
                    {
                        castle.whiteBTargets.Clear();
                        castle.whiteBTargets.AddRange(castle.CanMove(Table.actualDeck, index, Table.actualDeck[index].colorOfFigure));
                    }
                    else if (title.firstColorOfFigure == "white")
                    {
                        castle.whiteWTargets.Clear();
                        castle.whiteWTargets.AddRange(castle.CanMove(Table.actualDeck, index, Table.actualDeck[index].colorOfFigure));
                    }
                    ChangeTargets("white");
                }
                break;

            case "horse":
                if (title.colorOfFigure == "black")
                {
                    if (title.firstColorOfFigure == "black")
                    {
                        horse.blackBTargets.Clear();
                        horse.blackBTargets.AddRange(horse.CanMove(Table.actualDeck, index, Table.actualDeck[index].colorOfFigure));
                    }
                    else if (title.firstColorOfFigure == "white")
                    {
                        horse.blackWTargets.Clear();
                        horse.blackWTargets.AddRange(horse.CanMove(Table.actualDeck, index, Table.actualDeck[index].colorOfFigure));
                    }
                    ChangeTargets("black");
                }
                else
                {
                    if (title.firstColorOfFigure == "black")
                    {
                        horse.whiteBTargets.Clear();
                        horse.whiteBTargets.AddRange(horse.CanMove(Table.actualDeck, index, Table.actualDeck[index].colorOfFigure));
                    }
                    else if (title.firstColorOfFigure == "white")
                    {
                        horse.whiteWTargets.Clear();
                        horse.whiteWTargets.AddRange(horse.CanMove(Table.actualDeck, index, Table.actualDeck[index].colorOfFigure));
                    }
                    ChangeTargets("white");
                }
                break;

            case "bishop":
                if (title.colorOfFigure == "black")
                {
                    if (title.firstColorOfFigure == "black")
                    {
                        bishop.blackBTargets.Clear();
                        bishop.blackBTargets.AddRange(bishop.CanMove(Table.actualDeck, index, Table.actualDeck[index].colorOfFigure));
                    }
                    else if (title.firstColorOfFigure == "white")
                    {
                        bishop.blackWTargets.Clear();
                        bishop.blackWTargets.AddRange(bishop.CanMove(Table.actualDeck, index, Table.actualDeck[index].colorOfFigure));
                    }
                    ChangeTargets("black");
                }
                else
                {
                    if (title.firstColorOfFigure == "black")
                    {
                        bishop.whiteBTargets.Clear();
                        bishop.whiteBTargets.AddRange(bishop.CanMove(Table.actualDeck, index, Table.actualDeck[index].colorOfFigure));
                    }
                    else if (title.firstColorOfFigure == "white")
                    {
                        bishop.whiteWTargets.Clear();
                        bishop.whiteWTargets.AddRange(bishop.CanMove(Table.actualDeck, index, Table.actualDeck[index].colorOfFigure));
                    }
                    ChangeTargets("white");
                }
                break;
            }
            for (int k = 0; k < Table.selectedTiles.Count; k++)
            {
                Table.actualDeck[Table.selectedTiles[k]].ChangeTitle();

                if (Table.actualDeck[index].colorOfFigure == "black" && Table.selectedTiles.Contains(Table.whiteKingIndex))
                {
                    Table.isCheckmateWhite = true;
                }
                else if (Table.actualDeck[index].colorOfFigure == "white" && Table.selectedTiles.Contains(Table.blackKingIndex))
                {
                    Table.isCheckmateBlack = true;
                }
            }
            Table.selectedTiles.Clear();
        }