Advertisement
Franek2279

gra w zycie

Jan 22nd, 2023
1,315
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.58 KB | Source Code | 0 0
  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include<stdio.h>
  3. #include<stdlib.h>
  4. #include<math.h>
  5. #include<windows.h>
  6. #include"winbgi2.h"
  7. #include<time.h>
  8.  
  9. void wypelnij(int (&a)[100][100], int num) {
  10.     int aso = (1000 / num)+1;
  11.  
  12.  
  13.     for (int i = 0; i < num; i++) { setlinestyle(0,1,2); line(i * aso, 0, i * aso, 1000); line(0, i * aso, 1000, i * aso); }
  14.     for (int i = 0; i < num; i++) {
  15.         for (int j = 0; j < num; j++) {
  16.  
  17.             if(a[i+1][j+1]==1) { setfillstyle(SOLID_FILL, DARKGRAY);
  18.             rectangle(i*aso,j*aso,i*aso+aso,j*aso+aso);
  19.             floodfill(i * aso + 1, j * aso + 1, DARKGRAY);}
  20.         }
  21.     }
  22. }
  23. void tzwroszada(int (&a)[100][100], int (&b)[100][100],int num) {
  24.    
  25.     for (int i = 1; i <= num; i++) {
  26.         for (int j = 1; j <= num; j++) {
  27.             int sum = 0;
  28.             if (a[i-1][j-1] == 1) { sum++; }
  29.             if (a[i][j-1] == 1) { sum++; }
  30.             if (a[i+1][j-1] == 1) { sum++; }
  31.  
  32.             if (a[i-1][j] == 1) { sum++; }
  33.             if (a[i+1][j] == 1) { sum++; }
  34.  
  35.             if (a[i-1][j+1] == 1) { sum++; }
  36.             if (a[i][j+1] == 1) { sum++; }
  37.             if (a[i+1][j+1] == 1) { sum++; }
  38.  
  39.  
  40.             if (a[i][j] == 1) {
  41.                 if (sum == 2) { b[i][j] = 1; }
  42.                 else { if (sum == 3) { b[i][j] = 1; } else { b[i][j] = 0; } }
  43.             }
  44.            
  45.  
  46.             if (a[i][j] == 0) {
  47.                 if (sum == 3) { b[i][j] = 1;}else { b[i][j] = 0; }
  48.             }
  49.            
  50.             sum = 0;
  51.         }
  52.     }
  53. }
  54. void zerowanie(int (&a)[100][100], int (&b)[100][100],int num) {
  55.     for (int i = 0; i <num; i++) {
  56.         for (int j = 0; j < num; j++) {
  57.             a[i][j] = b[i][j];
  58.             b[i][j] = 0;
  59.         }
  60.     }
  61. }
  62.  
  63. void losowanko(int (&a)[100][100],int num) {
  64.     int k = int((double(rand()) / RAND_MAX) * (num*num));
  65.     for (int i = 0; i < k; i++) {
  66.        
  67.  
  68.         a[int((double(rand()) / RAND_MAX) * num)][int((double(rand()) / RAND_MAX) * num)] = 1;
  69.    
  70.  
  71.     }
  72.  
  73.  
  74. }
  75.  
  76. void zerowanietablicy(int (&a)[100][100],int num) {
  77.     for (int i = 0; i <= num; i++) {
  78.         for (int j = 0; j <= 99; j++) {
  79.             a[i][j] = 0;
  80.         }
  81.     }
  82.  
  83.  
  84. }
  85.  
  86.  
  87. int main(void) {
  88.  
  89.     srand(time(NULL));
  90.    
  91.     printf("Gra w zycie zostanie zainicjowana na planszy o rozmiarze A x A, prosze podac A\n maksymalna wartosc A to 100\n");
  92.     int num;
  93.     scanf("%i", &num);
  94.  
  95.     int a[100][100];
  96.     int b[100][100];
  97.  
  98.  
  99.  
  100.  
  101.  
  102.     int GraphDriver = DETECT, GraphMode;
  103.     initgraph(&GraphDriver, &GraphMode, "", 1010, 1015);
  104.     setpalette(15,DARKGRAY);
  105.     setbkcolor(WHITE);
  106.     cleardevice();
  107.    
  108.     zerowanietablicy(a,num);
  109.     losowanko(a,num);
  110.  
  111.     for (int i = 0; i <= 100000; i++) {
  112.         cleardevice();
  113.         wypelnij(a, num);
  114.         tzwroszada(a, b, num);
  115.         zerowanie(a, b,num);
  116.         Sleep(100);
  117.     }
  118.  
  119.     for (int i = 0; i < num; i++) {
  120.             free(a[i]);
  121.             free(b[i]);
  122.     }
  123.  
  124.     free(a);
  125.     free(b);
  126.    
  127.     closegraph();
  128.     return 0;
  129. }
  130.  
  131.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement