Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows.Forms;
- namespace grawzycie
- {
- public partial class Form1 : Form
- {
- public Form1()
- {
- InitializeComponent();
- }
- static int n = 55, m = 55;
- int prawa, lewa, gora, dol, prawygornyskos, prawydolnyskos, lewygornyskos, lewydolnyskos, srodek;
- int ilz = 0;
- int zywa = 0;
- int[,] tab = new int[n, m];
- int[,] tabtymczasowa = new int[n, m];
- //zerowanie tablicy
- private void Form1_Load(object sender, EventArgs e)
- {
- zero();
- }
- private void zero()
- {
- for (int i = 0; i < n; i++)
- {
- for (int j = 0; j < m; j++)
- {
- tab[i, j] = 0;
- tabtymczasowa[i, j] = 0;
- }
- }
- }
- private void rysujplansze()
- {
- Graphics g = pictureBox1.CreateGraphics();
- Pen pen = new Pen(Brushes.Black);
- int u = 0;
- int k = 0;
- for (int i = 0; i < n; i++)
- {
- k = 0;
- for (int j = 0; j < m; j++)
- {
- g.DrawRectangle(pen, k, u, 12, 12);
- if (tab[i, j] == 1)
- {
- g.FillRectangle(Brushes.Black, k, u, 12, 12);
- }
- k = k + 12;
- }
- u = u + 12;
- }
- }
- private void planszatymczasowa()
- {
- Graphics g = pictureBox1.CreateGraphics();
- Pen pen = new Pen(Brushes.Black);
- int k = 0;
- int u = 0;
- //wyswietlenie
- for (int i = 0; i < n; i++)
- {
- k = 0;
- for (int j = 0; j < m; j++)
- {
- if (tabtymczasowa[i, j] == 1)
- {
- g.FillRectangle(Brushes.Black, k, u, 12, 12);
- }
- k = k + 12;
- }
- u = u + 12;
- }
- }
- //krok
- private void button1_Click(object sender, EventArgs e)
- {
- timer1.Start();
- }
- //ustawienie wartosci sąsiadów, | i -- j -> + <- - ^ - v +
- private void sasiedzi(int i , int j)
- {
- srodek = tabtymczasowa[i, j];
- if (i > 0 && i < n - 1 && j > 0 && j < n - 1)
- {
- prawa = tabtymczasowa[i, j + 1];
- lewa = tabtymczasowa[i, j - 1];
- gora = tabtymczasowa[i - 1, j];
- dol = tabtymczasowa[i + 1, j];
- prawygornyskos = tabtymczasowa[i - 1, j + 1];
- prawydolnyskos = tabtymczasowa[i + 1, j + 1];
- lewygornyskos = tabtymczasowa[i - 1, j - 1];
- lewydolnyskos = tabtymczasowa[i + 1, j - 1];
- }
- //lewy gorny rog
- if (i == 0 && j == 0)
- {
- dol = tabtymczasowa[i + 1, j];
- gora = tabtymczasowa[n - 1, j];
- prawygornyskos = tabtymczasowa[n - 1, j + 1];
- lewygornyskos = tabtymczasowa[n - 1, n - 1];
- prawa = tabtymczasowa[i, j + 1];
- lewa = tabtymczasowa[i, n - 1];
- prawydolnyskos = tabtymczasowa[i + 1, j + 1];
- lewydolnyskos = tabtymczasowa[i + 1, n - 1];
- }
- //prawy dolny rog
- if (i == n - 1 && j == n - 1)
- {
- lewa = tabtymczasowa[i, j - 1];
- gora = tabtymczasowa[i - 1, j];
- lewygornyskos = tabtymczasowa[i - 1, j - 1];
- dol = tabtymczasowa[0, n - 1];
- lewydolnyskos = tabtymczasowa[0, j - 1];
- prawa = tabtymczasowa[i, 0];
- prawygornyskos = tabtymczasowa[i - 1, 0];
- prawydolnyskos = tabtymczasowa[0, 0];
- }
- //prawy gorny rog
- if (i == 0 && j == n - 1)
- {
- lewa = tabtymczasowa[i, j - 1];
- dol = tabtymczasowa[i + 1, j];
- prawa = tabtymczasowa[i, 0];
- gora = tabtymczasowa[n - 1, j];
- lewygornyskos = tabtymczasowa[n - 1, j - 1];
- prawydolnyskos = tabtymczasowa[i + 1, 0];
- lewydolnyskos = tabtymczasowa[i + 1, j - 1];
- prawygornyskos = tabtymczasowa[n - 1, 0];
- }
- //lewy dolny rog
- if (i == n - 1 && j == 0)
- {
- prawa = tabtymczasowa[i, j + 1];
- gora = tabtymczasowa[i - 1, j];
- lewa = tabtymczasowa[i, n - 1];
- dol = tabtymczasowa[0, j];
- prawydolnyskos = tabtymczasowa[0, j + 1];
- lewydolnyskos = tabtymczasowa[0, n - 1];
- lewygornyskos = tabtymczasowa[i - 1, n - 1];
- prawygornyskos = tabtymczasowa[i - 1, j + 1];
- }
- //gorna krawędz bez rogów
- if (i == 0 && j > 0 && j<n-1)
- {
- prawa = tabtymczasowa[i, j + 1];
- lewa = tabtymczasowa[i, j - 1];
- dol = tabtymczasowa[i + 1, j];
- gora = tabtymczasowa[n - 1, j];
- prawygornyskos = tabtymczasowa[n - 1, j + 1];
- lewygornyskos = tabtymczasowa[n - 1, j - 1];
- prawydolnyskos = tabtymczasowa[i + 1, j + 1];
- lewydolnyskos = tabtymczasowa[i + 1, j - 1];
- }
- //prawa krawędz bez rogów
- if (i > 0 && i < n - 1 && j == n - 1)
- {
- prawa = tabtymczasowa[i, 0];
- lewa = tabtymczasowa[i, j - 1];
- gora = tabtymczasowa[i - 1, j];
- dol = tabtymczasowa[i + 1, j];
- lewydolnyskos = tabtymczasowa[i + 1, j - 1];
- lewygornyskos = tabtymczasowa[i - 1, j - 1];
- prawygornyskos = tabtymczasowa[i - 1, 0];
- prawydolnyskos = tabtymczasowa[i + 1, 0];
- }
- //dolna krawędz bez rogów
- if (i == n - 1 && j > 0 && j < n - 1)
- {
- prawa = tabtymczasowa[i, j + 1];
- lewa = tabtymczasowa[i, j - 1];
- gora = tabtymczasowa[i - 1, j];
- dol = tabtymczasowa[0, j];
- prawygornyskos = tabtymczasowa[i - 1, j + 1];
- prawydolnyskos = tabtymczasowa[0, j + 1];
- lewygornyskos = tabtymczasowa[i - 1, j - 1];
- lewydolnyskos = tabtymczasowa[0, j - 1];
- }
- //lewa krawędz bez rogów
- if (i > 0 && i< n-1 && j == 0)
- {
- prawa = tabtymczasowa[i, j + 1];
- gora = tabtymczasowa[i - 1, j];
- dol = tabtymczasowa[i + 1, j];
- lewa = tabtymczasowa[i, n - 1];
- lewygornyskos = tabtymczasowa[i - 1, n - 1];
- lewydolnyskos = tabtymczasowa[i + 1, n - 1];
- prawydolnyskos = tabtymczasowa[i + 1, j + 1];
- prawygornyskos = tabtymczasowa[i - 1, j + 1];
- }
- }
- //stale
- private void button2_Click(object sender, EventArgs e)
- {
- zero();
- pictureBox1.Refresh();
- tab[12, 12] = 1;
- tab[12, 13] = 1;
- tab[13, 11] = 1;
- tab[14, 11] = 1;
- tab[13, 14] = 1;
- tab[14, 14] = 1;
- tab[15, 12] = 1;
- tab[15, 13] = 1;
- rysujplansze();
- }
- //oscylator
- private void button3_Click(object sender, EventArgs e)
- {
- zero();
- pictureBox1.Refresh();
- tab[12, 12] = 1;
- tab[13, 12] = 1;
- tab[14, 12] = 1;
- rysujplansze();
- }
- //glider
- private void button4_Click(object sender, EventArgs e)
- {
- zero();
- pictureBox1.Refresh();
- tab[12, 12] = 1;
- tab[12, 13] = 1;
- tab[12, 14] = 1;
- tab[13, 12] = 1;
- tab[14, 13] = 1;
- rysujplansze();
- }
- //lwss
- private void button5_Click(object sender, EventArgs e)
- {
- zero();
- pictureBox1.Refresh();
- tab[11, 13] = 1;
- tab[11, 16] = 1;
- tab[12, 12] = 1;
- tab[13, 12] = 1;
- tab[14, 12] = 1;
- tab[14, 13] = 1;
- tab[14, 14] = 1;
- tab[14, 15] = 1;
- tab[13, 16] = 1;
- rysujplansze();
- }
- //diehard
- private void button6_Click(object sender, EventArgs e)
- {
- zero();
- pictureBox1.Refresh();
- tab[12, 12] = 1;
- tab[12, 13] = 1;
- tab[13, 13] = 1;
- tab[11, 18] = 1;
- tab[13, 17] = 1;
- tab[13, 18] = 1;
- tab[13, 19] = 1;
- rysujplansze();
- }
- //glider gun
- private void button7_Click(object sender, EventArgs e)
- {
- zero();
- pictureBox1.Refresh();
- tab[15, 5] = 1;
- tab[15, 6] = 1;
- tab[16, 5] = 1;
- tab[16, 6] = 1;
- tab[15, 15] = 1;
- tab[16, 15] = 1;
- tab[17, 15] = 1;
- tab[14, 16] = 1;
- tab[13, 17] = 1;
- tab[13, 18] = 1;
- tab[18, 16] = 1;
- tab[19, 17] = 1;
- tab[19, 18] = 1;
- tab[16, 19] = 1;
- tab[14, 20] = 1;
- tab[15, 21] = 1;
- tab[16, 21] = 1;
- tab[17, 21] = 1;
- tab[16, 22] = 1;
- tab[18, 20] = 1;
- tab[12, 27] = 1;
- tab[12, 29] = 1;
- tab[11, 29] = 1;
- tab[13, 25] = 1;
- tab[14, 25] = 1;
- tab[15, 25] = 1;
- tab[13, 26] = 1;
- tab[14, 26] = 1;
- tab[15, 26] = 1;
- tab[16, 27] = 1;
- tab[16, 29] = 1;
- tab[17, 29] = 1;
- tab[13, 39] = 1;
- tab[13, 40] = 1;
- tab[14, 39] = 1;
- tab[14, 40] = 1;
- rysujplansze();
- }
- private void timer1_Tick(object sender, EventArgs e)
- {
- pictureBox1.Refresh();
- //kopiowanie do tabtymczasowej
- for (int i = 0; i < n; i++)
- {
- for (int j = 0; j < m; j++)
- {
- tabtymczasowa[i, j] = tab[i, j];
- }
- }
- //obliczenia
- for (int i = 0; i < n; i++)
- {
- for (int j = 0; j < m; j++)
- {
- sasiedzi(i, j);
- ilz = 0;
- zywa = 0;
- if (tabtymczasowa[i, j] == 0)
- {
- if (lewa == 1) ilz++;
- if (prawa == 1) ilz++;
- if (gora == 1) ilz++;
- if (dol == 1) ilz++;
- if (lewydolnyskos == 1) ilz++;
- if (lewygornyskos == 1) ilz++;
- if (prawydolnyskos == 1) ilz++;
- if (prawygornyskos == 1) ilz++;
- //3 zywych sasiadow = rodzi sie
- if (ilz == 3)
- {
- tab[i, j] = 1;
- }
- }
- if (tabtymczasowa[i, j] == 1)
- {
- if (lewa == 1) zywa++;
- if (prawa == 1) zywa++;
- if (gora == 1) zywa++;
- if (dol == 1) zywa++;
- if (lewydolnyskos == 1) zywa++;
- if (lewygornyskos == 1) zywa++;
- if (prawydolnyskos == 1) zywa++;
- if (prawygornyskos == 1) zywa++;
- //2 lub 3 sasiadow zywych to nadal zywa inaczej martwa
- if (zywa < 2 || zywa > 3)
- {
- tab[i, j] = 0;
- }
- }
- }
- }
- planszatymczasowa();
- }
- private void button8_Click(object sender, EventArgs e)
- {
- timer1.Stop();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement