using System.Collections.Generic; namespace Chess { internal class Szachownica { public static Pole[,] pola = new Pole[8, 8]; public static Kolor KogoTerazTura = Kolor.WHITE; public static Szachy Window; public static List poprzednieRuchy = new List(); public static Figura JakaToFigura(int y, int x) { return pola[y, x].figura; } public static List ZbierzWszystkieFiguryPola(Kolor kolor) { List wszystkieFigury = new List(); for (int x = 0; x < 8; x++) { for (int y = 0; y < 8; y++) { if (JakaToFigura(y, x).kolor == kolor) { wszystkieFigury.Add(pola[y, x]); } } } return wszystkieFigury; } public static Pole JakieToPole(RodzajFigury rodzajfigury, Kolor kolor) { for (byte x = 0; x < 8; x++) { for (byte y = 0; y < 8; y++) { if (JakaToFigura(y, x).rodzajfigury == rodzajfigury && JakaToFigura(y, x).kolor == kolor) { return pola[y, x]; } } } return null; } public Szachownica(Szachy glowneOkno) { Window = glowneOkno; byte rzedy = 0; for (byte x = 0; x < 8; x++, rzedy++) { for (byte y = 0; y < 8; y++, rzedy++) { Pole PoprawnePole() { return rzedy % 2 == 0 ? new Pole(y, x, Kolor.WHITE) : new Pole(y, x, Kolor.BLACK); } pola[y, x] = PoprawnePole(); glowneOkno.Controls.Add(pola[y, x]); } } UstawSzachownice(0, Kolor.BLACK); UstawSzachownice(7, Kolor.WHITE); for (int x = 0; x < 8; x++) { for (int y = 0; y < 8; y++) { if (pola[y, x].figura.rodzajfigury != RodzajFigury.EMPTY) { pola[y, x].FiguraObraz.BackgroundImage = Pole.FiguryObrazy[pola[y, x].figura.NazwaObrazu()]; } } } } public static bool czyMoznaWbic(int y, int x) { return y < 8 && y >= 0 && x < 8 && x >= 0; } private void UstawSzachownice(int y, Kolor kolor) { pola[y, 0].figura = new Figura(RodzajFigury.Rook, kolor); pola[y, 1].figura = new Figura(RodzajFigury.Knight, kolor); pola[y, 2].figura = new Figura(RodzajFigury.Bishop, kolor); pola[y, 3].figura = new Figura(RodzajFigury.Queen, kolor); pola[y, 4].figura = new Figura(RodzajFigury.King, kolor); pola[y, 5].figura = new Figura(RodzajFigury.Bishop, kolor); pola[y, 6].figura = new Figura(RodzajFigury.Knight, kolor); pola[y, 7].figura = new Figura(RodzajFigury.Rook, kolor); y += y == 0 ? 1 : -1; for (int x = 0; x < 8; x++) { pola[y, x].figura = new Figura(RodzajFigury.Pawn, kolor); } } } internal struct PoprzedniStanSzachownicy { public Figura usunieteFigury { get; private set; } public RuchFigury ruch { get; private set; } public Figura figura { get; private set; } public Lokalizacja poprzedniaLokalizacja { get; private set; } public int indexRuchu; public PoprzedniStanSzachownicy(Figura figura, int indexRuchu, Lokalizacja poprzedniaLokalizacja, RuchFigury ruch) { this.figura = figura; this.indexRuchu = indexRuchu; this.poprzedniaLokalizacja = poprzedniaLokalizacja; usunieteFigury = new Figura(RodzajFigury.EMPTY); this.ruch = ruch; } public PoprzedniStanSzachownicy(Figura figura, Lokalizacja lokalizacja, RuchFigury ruch, Figura usunietaFigura, int indexRuchu) : this(figura, indexRuchu, lokalizacja, ruch) { usunieteFigury = usunietaFigura; } } }