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); } } }
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(); }