示例#1
0
 public Form1()
 {
     // wykonanie kilku niezbędnych na początku operacji
     InitializeComponent();
     podpiszSzachownice();
     RysujSiatke(bialy, czarny);
     kompletujPiony();
     Bierka.przeliczWszystieRuchy();
     odswiezLabelKolejka();
 }
示例#2
0
        // jedna funkcja uzywana przy obu roszadach - bo po kazdej trzeba przegenerowac ruchy i zmienic kolejke
        private void zrobResztePoRoszadzie()
        {
            WyczyscPanele();
            foreach (Bierka bi in Gra.bierkiBiale.Union(Gra.bierkiCzarne))
            {
                ustawBierke(bi);
            }
            odswiezLabelKolejka();
            Bierka.przeliczWszystieRuchy();
            Gra.kolejka = Enums.czyjaKolej.Komputer;
            wykonajRuchPC();

            WyczyscPanele();
            Bierka.przeliczWszystieRuchy();  // moze niepotrzebne
            foreach (Bierka bi in Gra.bierkiBiale.Union(Gra.bierkiCzarne))
            {
                ustawBierke(bi);
            }
            odswiezLabelKolejka();
        }
示例#3
0
        public static void wczytajGre()
        {
            string linijka = string.Empty;

            Gra.bierkiBiale.Clear();
            Gra.bierkiCzarne.Clear();

            OpenFileDialog okienko = new OpenFileDialog();

            okienko.Filter = "Stany gry BasicBlue(chess)|*.chess";
            if (okienko.ShowDialog() == DialogResult.OK)
            {
                MessageBox.Show("Wybrano plik: " + okienko.FileName);
            }

            System.IO.StreamReader file = new System.IO.StreamReader(okienko.FileName);

            // odczyt i przetwarzanie każdej linii pliku osobno
            while ((linijka = file.ReadLine()) != null)
            {
                string[] tab = linijka.Split(';');

                if (tab.Length == 5)
                {
                    string typBierki      = tab[1];
                    string kolor          = tab[0];
                    int    x              = int.Parse(tab[2]);
                    int    y              = int.Parse(tab[3]);
                    string ruch           = tab[4];
                    Enums.Kolor_pionków k = Enums.Kolor_pionków.Biale;
                    bool bylRuch          = false;

                    if (ruch == "True")
                    {
                        bylRuch = true;
                    }


                    if (kolor == "Czarne")
                    {
                        k = Enums.Kolor_pionków.Czarne;
                    }
                    else if (kolor == "Biale")
                    {
                        k = Enums.Kolor_pionków.Biale;
                    }

                    if (typBierki == "Pionek")
                    {
                        if (k == Enums.Kolor_pionków.Biale)
                        {
                            Gra.bierkiBiale.Add(new Pionek(k, x, y, bylRuch));
                        }
                        else
                        {
                            Gra.bierkiCzarne.Add(new Pionek(k, x, y, bylRuch));
                        }
                    }
                    else if (typBierki == "Wieza")
                    {
                        if (k == Enums.Kolor_pionków.Biale)
                        {
                            Gra.bierkiBiale.Add(new Wieza(k, x, y, bylRuch));
                        }
                        else
                        {
                            Gra.bierkiCzarne.Add(new Wieza(k, x, y, bylRuch));
                        }
                    }
                    else if (typBierki == "Skoczek")
                    {
                        if (k == Enums.Kolor_pionków.Biale)
                        {
                            Gra.bierkiBiale.Add(new Skoczek(k, x, y, bylRuch));
                        }
                        else
                        {
                            Gra.bierkiCzarne.Add(new Skoczek(k, x, y, bylRuch));
                        }
                    }
                    else if (typBierki == "Goniec")
                    {
                        if (k == Enums.Kolor_pionków.Biale)
                        {
                            Gra.bierkiBiale.Add(new Goniec(k, x, y, bylRuch));
                        }
                        else
                        {
                            Gra.bierkiCzarne.Add(new Goniec(k, x, y, bylRuch));
                        }
                    }
                    else if (typBierki == "Hetman")
                    {
                        if (k == Enums.Kolor_pionków.Biale)
                        {
                            Gra.bierkiBiale.Add(new Hetman(k, x, y, bylRuch));
                        }
                        else
                        {
                            Gra.bierkiCzarne.Add(new Hetman(k, x, y, bylRuch));
                        }
                    }

                    else if (typBierki == "Krol")
                    {
                        if (k == Enums.Kolor_pionków.Biale)
                        {
                            Gra.bierkiBiale.Add(new Krol(k, x, y, bylRuch));
                        }
                        else
                        {
                            Gra.bierkiCzarne.Add(new Krol(k, x, y, bylRuch));
                        }
                    }
                }
                else if (linijka.Contains("1."))
                {
                    Gra.pgnString = linijka;
                }
            }
            file.Close();
            Bierka.przeliczWszystieRuchy();
            Gra.kolejka = Enums.czyjaKolej.Osoba;
        }
示例#4
0
        private void panel_Click(object sender, EventArgs e)
        {
            if (Gra.kolejka == Enums.czyjaKolej.Osoba)
            {
                TableLayoutPanelCellPosition pos = Tools.GetCellPosotion(tableLayoutPanel1);
                Bierka b = Bierka.getBierkaByPos(pos.Column, pos.Row, Gra.bierkiBiale, Gra.bierkiCzarne);


                if (wybrana == null && b != null && b.kolor == Enums.Kolor_pionków.Czarne)
                {
                    return;
                }


                if (wybrana != null && b == null)
                {
                    if (!wybrana.przesun(pos.Column, pos.Row, true))
                    {
                        MessageBox.Show("ruch niedozwolony");
                    }
                    else
                    {
                        WyczyscPanele();
                        foreach (Bierka bi in Gra.bierkiBiale.Union(Gra.bierkiCzarne))
                        {
                            ustawBierke(bi);
                        }
                        Gra.kolejka = Enums.czyjaKolej.Komputer;
                        odswiezLabelKolejka();
                        Bierka.przeliczWszystieRuchy();

                        wykonajRuchPC();


                        WyczyscPanele();
                        // Bierka.przeliczWszystieRuchy();  // moze niepotrzebne
                        foreach (Bierka bi in Gra.bierkiBiale.Union(Gra.bierkiCzarne))
                        {
                            ustawBierke(bi);
                        }
                        odswiezLabelKolejka();
                    }
                }
                else if (wybrana != null && b != null && wybrana.kolor != b.kolor)   // bicie
                {
                    if (!wybrana.zbij(b))
                    {
                        MessageBox.Show("bicie niedozwolone");
                    }
                    else
                    {
                        WyczyscPanele();
                        foreach (Bierka bi in Gra.bierkiBiale.Union(Gra.bierkiCzarne))
                        {
                            ustawBierke(bi);
                        }
                        Gra.kolejka = Enums.czyjaKolej.Komputer;
                        odswiezLabelKolejka();
                        Bierka.przeliczWszystieRuchy();

                        wykonajRuchPC();
                        WyczyscPanele();
                        Bierka.przeliczWszystieRuchy();  // moze niepotrzebne
                        foreach (Bierka bi in Gra.bierkiBiale.Union(Gra.bierkiCzarne))
                        {
                            ustawBierke(bi);
                        }
                        odswiezLabelKolejka();
                    }
                }
                else
                {
                    wybrana = b;
                }


                if (b == null)
                {
                    label3.Text = "Puste pole " + pos.Column + " " + pos.Row;
                }
                else
                {
                    label3.Text = b.ToString() + "  kolor: " + b.kolor + "(X,Y)=(" + b.pozycjaX + "," + b.pozycjaY + ")";
                    //b.generujMozliweRuchy();
                    Bierka.przeliczWszystieRuchy();
                    label4.Text = "możliwe ruchy: " + b.mozliweRuchy.Count() + Environment.NewLine + "możliwe bicia: " + b.mozliweBicia.Count();
                }
            }
            txtPgn.Text = Gra.pgnString;
            sprawdzMozliwoscRoszady();
        }