Advertisement
Guest User

Untitled

a guest
Nov 27th, 2015
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 12.77 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using System.Windows.Forms;
  10.  
  11. namespace grawzycie
  12. {
  13. public partial class Form1 : Form
  14. {
  15. public Form1()
  16. {
  17. InitializeComponent();
  18. }
  19.  
  20. static int n = 55, m = 55;
  21. int prawa, lewa, gora, dol, prawygornyskos, prawydolnyskos, lewygornyskos, lewydolnyskos, srodek;
  22. int ilz = 0;
  23. int zywa = 0;
  24.  
  25. int[,] tab = new int[n, m];
  26. int[,] tabtymczasowa = new int[n, m];
  27.  
  28. //zerowanie tablicy
  29. private void Form1_Load(object sender, EventArgs e)
  30. {
  31. zero();
  32. }
  33.  
  34. private void zero()
  35. {
  36. for (int i = 0; i < n; i++)
  37. {
  38. for (int j = 0; j < m; j++)
  39. {
  40. tab[i, j] = 0;
  41. tabtymczasowa[i, j] = 0;
  42. }
  43. }
  44. }
  45.  
  46. private void rysujplansze()
  47. {
  48. Graphics g = pictureBox1.CreateGraphics();
  49. Pen pen = new Pen(Brushes.Black);
  50. int u = 0;
  51. int k = 0;
  52. for (int i = 0; i < n; i++)
  53. {
  54. k = 0;
  55. for (int j = 0; j < m; j++)
  56. {
  57. g.DrawRectangle(pen, k, u, 12, 12);
  58. if (tab[i, j] == 1)
  59. {
  60. g.FillRectangle(Brushes.Black, k, u, 12, 12);
  61. }
  62. k = k + 12;
  63. }
  64. u = u + 12;
  65. }
  66. }
  67.  
  68. private void planszatymczasowa()
  69. {
  70. Graphics g = pictureBox1.CreateGraphics();
  71. Pen pen = new Pen(Brushes.Black);
  72. int k = 0;
  73. int u = 0;
  74. //wyswietlenie
  75. for (int i = 0; i < n; i++)
  76. {
  77. k = 0;
  78. for (int j = 0; j < m; j++)
  79. {
  80. if (tabtymczasowa[i, j] == 1)
  81. {
  82. g.FillRectangle(Brushes.Black, k, u, 12, 12);
  83. }
  84. k = k + 12;
  85. }
  86. u = u + 12;
  87. }
  88. }
  89.  
  90. //krok
  91. private void button1_Click(object sender, EventArgs e)
  92. {
  93. timer1.Start();
  94. }
  95.  
  96. //ustawienie wartosci sąsiadów, | i -- j -> + <- - ^ - v +
  97. private void sasiedzi(int i , int j)
  98. {
  99. srodek = tabtymczasowa[i, j];
  100. if (i > 0 && i < n - 1 && j > 0 && j < n - 1)
  101. {
  102. prawa = tabtymczasowa[i, j + 1];
  103. lewa = tabtymczasowa[i, j - 1];
  104. gora = tabtymczasowa[i - 1, j];
  105. dol = tabtymczasowa[i + 1, j];
  106. prawygornyskos = tabtymczasowa[i - 1, j + 1];
  107. prawydolnyskos = tabtymczasowa[i + 1, j + 1];
  108. lewygornyskos = tabtymczasowa[i - 1, j - 1];
  109. lewydolnyskos = tabtymczasowa[i + 1, j - 1];
  110. }
  111. //lewy gorny rog
  112. if (i == 0 && j == 0)
  113. {
  114. dol = tabtymczasowa[i + 1, j];
  115. gora = tabtymczasowa[n - 1, j];
  116. prawygornyskos = tabtymczasowa[n - 1, j + 1];
  117. lewygornyskos = tabtymczasowa[n - 1, n - 1];
  118. prawa = tabtymczasowa[i, j + 1];
  119. lewa = tabtymczasowa[i, n - 1];
  120. prawydolnyskos = tabtymczasowa[i + 1, j + 1];
  121. lewydolnyskos = tabtymczasowa[i + 1, n - 1];
  122. }
  123. //prawy dolny rog
  124. if (i == n - 1 && j == n - 1)
  125. {
  126. lewa = tabtymczasowa[i, j - 1];
  127. gora = tabtymczasowa[i - 1, j];
  128. lewygornyskos = tabtymczasowa[i - 1, j - 1];
  129. dol = tabtymczasowa[0, n - 1];
  130. lewydolnyskos = tabtymczasowa[0, j - 1];
  131. prawa = tabtymczasowa[i, 0];
  132. prawygornyskos = tabtymczasowa[i - 1, 0];
  133. prawydolnyskos = tabtymczasowa[0, 0];
  134. }
  135. //prawy gorny rog
  136. if (i == 0 && j == n - 1)
  137. {
  138. lewa = tabtymczasowa[i, j - 1];
  139. dol = tabtymczasowa[i + 1, j];
  140. prawa = tabtymczasowa[i, 0];
  141. gora = tabtymczasowa[n - 1, j];
  142. lewygornyskos = tabtymczasowa[n - 1, j - 1];
  143. prawydolnyskos = tabtymczasowa[i + 1, 0];
  144. lewydolnyskos = tabtymczasowa[i + 1, j - 1];
  145. prawygornyskos = tabtymczasowa[n - 1, 0];
  146. }
  147. //lewy dolny rog
  148. if (i == n - 1 && j == 0)
  149. {
  150. prawa = tabtymczasowa[i, j + 1];
  151. gora = tabtymczasowa[i - 1, j];
  152. lewa = tabtymczasowa[i, n - 1];
  153. dol = tabtymczasowa[0, j];
  154. prawydolnyskos = tabtymczasowa[0, j + 1];
  155. lewydolnyskos = tabtymczasowa[0, n - 1];
  156. lewygornyskos = tabtymczasowa[i - 1, n - 1];
  157. prawygornyskos = tabtymczasowa[i - 1, j + 1];
  158. }
  159. //gorna krawędz bez rogów
  160. if (i == 0 && j > 0 && j<n-1)
  161. {
  162. prawa = tabtymczasowa[i, j + 1];
  163. lewa = tabtymczasowa[i, j - 1];
  164. dol = tabtymczasowa[i + 1, j];
  165. gora = tabtymczasowa[n - 1, j];
  166. prawygornyskos = tabtymczasowa[n - 1, j + 1];
  167. lewygornyskos = tabtymczasowa[n - 1, j - 1];
  168. prawydolnyskos = tabtymczasowa[i + 1, j + 1];
  169. lewydolnyskos = tabtymczasowa[i + 1, j - 1];
  170. }
  171. //prawa krawędz bez rogów
  172. if (i > 0 && i < n - 1 && j == n - 1)
  173. {
  174. prawa = tabtymczasowa[i, 0];
  175. lewa = tabtymczasowa[i, j - 1];
  176. gora = tabtymczasowa[i - 1, j];
  177. dol = tabtymczasowa[i + 1, j];
  178. lewydolnyskos = tabtymczasowa[i + 1, j - 1];
  179. lewygornyskos = tabtymczasowa[i - 1, j - 1];
  180. prawygornyskos = tabtymczasowa[i - 1, 0];
  181. prawydolnyskos = tabtymczasowa[i + 1, 0];
  182. }
  183. //dolna krawędz bez rogów
  184. if (i == n - 1 && j > 0 && j < n - 1)
  185. {
  186. prawa = tabtymczasowa[i, j + 1];
  187. lewa = tabtymczasowa[i, j - 1];
  188. gora = tabtymczasowa[i - 1, j];
  189. dol = tabtymczasowa[0, j];
  190. prawygornyskos = tabtymczasowa[i - 1, j + 1];
  191. prawydolnyskos = tabtymczasowa[0, j + 1];
  192. lewygornyskos = tabtymczasowa[i - 1, j - 1];
  193. lewydolnyskos = tabtymczasowa[0, j - 1];
  194. }
  195. //lewa krawędz bez rogów
  196. if (i > 0 && i< n-1 && j == 0)
  197. {
  198. prawa = tabtymczasowa[i, j + 1];
  199. gora = tabtymczasowa[i - 1, j];
  200. dol = tabtymczasowa[i + 1, j];
  201. lewa = tabtymczasowa[i, n - 1];
  202. lewygornyskos = tabtymczasowa[i - 1, n - 1];
  203. lewydolnyskos = tabtymczasowa[i + 1, n - 1];
  204. prawydolnyskos = tabtymczasowa[i + 1, j + 1];
  205. prawygornyskos = tabtymczasowa[i - 1, j + 1];
  206. }
  207. }
  208.  
  209. //stale
  210. private void button2_Click(object sender, EventArgs e)
  211. {
  212. zero();
  213. pictureBox1.Refresh();
  214. tab[12, 12] = 1;
  215. tab[12, 13] = 1;
  216. tab[13, 11] = 1;
  217. tab[14, 11] = 1;
  218. tab[13, 14] = 1;
  219. tab[14, 14] = 1;
  220. tab[15, 12] = 1;
  221. tab[15, 13] = 1;
  222. rysujplansze();
  223. }
  224.  
  225. //oscylator
  226. private void button3_Click(object sender, EventArgs e)
  227. {
  228. zero();
  229. pictureBox1.Refresh();
  230. tab[12, 12] = 1;
  231. tab[13, 12] = 1;
  232. tab[14, 12] = 1;
  233. rysujplansze();
  234. }
  235.  
  236. //glider
  237. private void button4_Click(object sender, EventArgs e)
  238. {
  239. zero();
  240. pictureBox1.Refresh();
  241. tab[12, 12] = 1;
  242. tab[12, 13] = 1;
  243. tab[12, 14] = 1;
  244. tab[13, 12] = 1;
  245. tab[14, 13] = 1;
  246. rysujplansze();
  247. }
  248.  
  249. //lwss
  250. private void button5_Click(object sender, EventArgs e)
  251. {
  252. zero();
  253. pictureBox1.Refresh();
  254. tab[11, 13] = 1;
  255. tab[11, 16] = 1;
  256. tab[12, 12] = 1;
  257. tab[13, 12] = 1;
  258. tab[14, 12] = 1;
  259. tab[14, 13] = 1;
  260. tab[14, 14] = 1;
  261. tab[14, 15] = 1;
  262. tab[13, 16] = 1;
  263. rysujplansze();
  264. }
  265.  
  266. //diehard
  267. private void button6_Click(object sender, EventArgs e)
  268. {
  269. zero();
  270. pictureBox1.Refresh();
  271. tab[12, 12] = 1;
  272. tab[12, 13] = 1;
  273. tab[13, 13] = 1;
  274. tab[11, 18] = 1;
  275. tab[13, 17] = 1;
  276. tab[13, 18] = 1;
  277. tab[13, 19] = 1;
  278. rysujplansze();
  279. }
  280.  
  281. //glider gun
  282. private void button7_Click(object sender, EventArgs e)
  283. {
  284. zero();
  285. pictureBox1.Refresh();
  286. tab[15, 5] = 1;
  287. tab[15, 6] = 1;
  288. tab[16, 5] = 1;
  289. tab[16, 6] = 1;
  290. tab[15, 15] = 1;
  291. tab[16, 15] = 1;
  292. tab[17, 15] = 1;
  293. tab[14, 16] = 1;
  294. tab[13, 17] = 1;
  295. tab[13, 18] = 1;
  296. tab[18, 16] = 1;
  297. tab[19, 17] = 1;
  298. tab[19, 18] = 1;
  299. tab[16, 19] = 1;
  300. tab[14, 20] = 1;
  301. tab[15, 21] = 1;
  302. tab[16, 21] = 1;
  303. tab[17, 21] = 1;
  304. tab[16, 22] = 1;
  305. tab[18, 20] = 1;
  306. tab[12, 27] = 1;
  307. tab[12, 29] = 1;
  308. tab[11, 29] = 1;
  309. tab[13, 25] = 1;
  310. tab[14, 25] = 1;
  311. tab[15, 25] = 1;
  312. tab[13, 26] = 1;
  313. tab[14, 26] = 1;
  314. tab[15, 26] = 1;
  315. tab[16, 27] = 1;
  316. tab[16, 29] = 1;
  317. tab[17, 29] = 1;
  318. tab[13, 39] = 1;
  319. tab[13, 40] = 1;
  320. tab[14, 39] = 1;
  321. tab[14, 40] = 1;
  322. rysujplansze();
  323. }
  324.  
  325. private void timer1_Tick(object sender, EventArgs e)
  326. {
  327. pictureBox1.Refresh();
  328. //kopiowanie do tabtymczasowej
  329. for (int i = 0; i < n; i++)
  330. {
  331. for (int j = 0; j < m; j++)
  332. {
  333. tabtymczasowa[i, j] = tab[i, j];
  334. }
  335. }
  336.  
  337. //obliczenia
  338. for (int i = 0; i < n; i++)
  339. {
  340. for (int j = 0; j < m; j++)
  341. {
  342. sasiedzi(i, j);
  343. ilz = 0;
  344. zywa = 0;
  345. if (tabtymczasowa[i, j] == 0)
  346. {
  347. if (lewa == 1) ilz++;
  348. if (prawa == 1) ilz++;
  349. if (gora == 1) ilz++;
  350. if (dol == 1) ilz++;
  351. if (lewydolnyskos == 1) ilz++;
  352. if (lewygornyskos == 1) ilz++;
  353. if (prawydolnyskos == 1) ilz++;
  354. if (prawygornyskos == 1) ilz++;
  355.  
  356. //3 zywych sasiadow = rodzi sie
  357. if (ilz == 3)
  358. {
  359. tab[i, j] = 1;
  360. }
  361. }
  362. if (tabtymczasowa[i, j] == 1)
  363. {
  364. if (lewa == 1) zywa++;
  365. if (prawa == 1) zywa++;
  366. if (gora == 1) zywa++;
  367. if (dol == 1) zywa++;
  368. if (lewydolnyskos == 1) zywa++;
  369. if (lewygornyskos == 1) zywa++;
  370. if (prawydolnyskos == 1) zywa++;
  371. if (prawygornyskos == 1) zywa++;
  372.  
  373. //2 lub 3 sasiadow zywych to nadal zywa inaczej martwa
  374. if (zywa < 2 || zywa > 3)
  375. {
  376. tab[i, j] = 0;
  377. }
  378. }
  379. }
  380. }
  381. planszatymczasowa();
  382. }
  383.  
  384. private void button8_Click(object sender, EventArgs e)
  385. {
  386. timer1.Stop();
  387. }
  388. }
  389. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement