コード例 #1
0
 public Komorka(Komorka druga)
 {
     this.x    = druga.x;
     this.y    = druga.y;
     this.stan = druga.stan;
 }
コード例 #2
0
ファイル: Form1.cs プロジェクト: SkwaraTomasz/Game-of-life
        private void button2_Click(object sender, EventArgs e)
        {
            int.TryParse(textBox1.Text, out x);
            int.TryParse(textBox2.Text, out y);
            int.TryParse(textBox3.Text, out liczkakrokow);
            stanPoczatkowy = comboBox1.SelectedItem.ToString();

            bitmapa1          = new Bitmap((x * 10) + 2, (y * 10) + 2);
            pictureBox1.Image = bitmapa1;
            rysunek1          = Graphics.FromImage(pictureBox1.Image);

            pictureBox1.Size = new System.Drawing.Size((x * 10) + 2, (y * 10) + 2);

            rysujSiatke();
            tabKomorka = new Komorka[x, y];
            for (int i = 0; i < x; i++)
            {
                for (int j = 0; j < y; j++)
                {
                    tabKomorka[i, j] = new Komorka(false, i, j);
                }
            }
            switch (stanPoczatkowy)
            {
            case "Glider":
            {
                ozyw(tabKomorka[x / 2, y / 2]);
                ozyw(tabKomorka[(x / 2) + 1, y / 2]);
                ozyw(tabKomorka[(x / 2) - 1, (y / 2) + 1]);
                ozyw(tabKomorka[x / 2, (y / 2) + 1]);
                ozyw(tabKomorka[(x / 2) + 1, (y / 2) + 2]);

                break;
            }

            case "Oscylator":
            {
                ozyw(tabKomorka[x / 2, y / 2]);
                ozyw(tabKomorka[x / 2, (y / 2) + 1]);
                ozyw(tabKomorka[x / 2, (y / 2) + 2]);
                break;
            }

            case "Kryształ":
            {
                ozyw(tabKomorka[x / 2, y / 2]);
                ozyw(tabKomorka[(x / 2) + 1, y / 2]);
                ozyw(tabKomorka[(x / 2) - 1, (y / 2) + 1]);
                ozyw(tabKomorka[(x / 2) + 2, (y / 2) + 1]);
                ozyw(tabKomorka[x / 2, (y / 2) + 2]);
                ozyw(tabKomorka[(x / 2) + 1, (y / 2) + 2]);
                break;
            }

            case "Losowy":
            {
                Random rand = new Random();
                for (int i = 0; i < x; i++)
                {
                    for (int j = 0; j < y; j++)
                    {
                        if (rand.Next(0, 2) == 0)
                        {
                            usmierc(tabKomorka[i, j]);
                        }
                        else
                        {
                            ozyw(tabKomorka[i, j]);
                        }
                    }
                }
                break;
            }

            case "Własny":
            {
                break;
            }
            }

            pictureBox1.Refresh();
        }
コード例 #3
0
ファイル: Form1.cs プロジェクト: SkwaraTomasz/Game-of-life
 void usmierc(Komorka komorka)
 {
     komorka.setStan(false);
     rysunek1.FillRectangle(martwa, komorka.getX() * 10, komorka.getY() * 10, 10, 10);
     rysunek1.DrawRectangle(pen, komorka.getX() * 10, komorka.getY() * 10, 10, 10);
 }
コード例 #4
0
ファイル: Form1.cs プロジェクト: SkwaraTomasz/Game-of-life
        private void symulacja()
        {
            Komorka [,] tabZastepcza = new Komorka[x, y];

            for (int i = 0; i < x; i++)
            {
                for (int j = 0; j < y; j++)
                {
                    tabZastepcza[i, j] = new Komorka(tabKomorka[i, j]);
                }
            }

            for (int i = 0; i < x; i++)
            {
                for (int j = 0; j < y; j++)
                {
                    int licznik = 0;

                    for (int k = i - 1; k <= i + 1; k++)
                    {
                        for (int l = j - 1; l <= j + 1; l++)
                        {
                            int tmpY = warunekBrzegowy(l, y);
                            int tmpX = warunekBrzegowy(k, x);
                            if (tmpY == j && tmpX == i)
                            {
                                continue;
                            }
                            else if (tabKomorka[tmpX, tmpY].getStan() == true)
                            {
                                licznik++;
                            }
                        }
                    }
                    if (tabZastepcza[i, j].getStan() == true)
                    {
                        if (licznik == 2)
                        {
                            continue;
                        }
                        else if (licznik == 3)
                        {
                            continue;
                        }
                        else
                        {
                            usmierc(tabZastepcza[i, j]);
                        }
                    }
                    if (tabZastepcza[i, j].getStan() == false && licznik == 3)
                    {
                        ozyw(tabZastepcza[i, j]);
                    }
                }
            }
            for (int i = 0; i < x; i++)
            {
                for (int j = 0; j < y; j++)
                {
                    skopiujStan(tabKomorka[i, j], tabZastepcza[i, j]);
                }
            }
        }
コード例 #5
0
ファイル: Form1.cs プロジェクト: SkwaraTomasz/Game-of-life
 void ozyw(Komorka komorka)
 {
     komorka.setStan(true);
     rysunek1.FillRectangle(zywa, komorka.getX() * 10, komorka.getY() * 10, 10, 10);
     rysunek1.DrawRectangle(pen, komorka.getX() * 10, komorka.getY() * 10, 10, 10);
 }