Advertisement
Guest User

Untitled

a guest
Jan 18th, 2020
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.15 KB | None | 0 0
  1. #include <stdio.h>
  2. #include "winbgi2.h"
  3. #include <time.h>
  4. #include <stdlib.h>
  5. #include <math.h>
  6. void plansza(int r, int Lx, int Ly);
  7. void fill_rectangles(int *tab[], int tabk, int tabw, int r);
  8. void init(int *tab[], int tabk, int tabw);
  9. void kolumna_test(int *tab[], int tabw);
  10. void DeadOrAlive(int *tab[], int tabk, int tabw);
  11. void DeadAll(int *tab[], int tabk, int tabw);
  12. void main()
  13. {
  14.     srand(time(NULL));
  15.     int Lx, Ly, r;
  16.     Lx = 300;
  17.     Ly = 300;
  18.     r = 10;
  19.     int tabk = Lx/r;
  20.     int tabw = Ly/r;
  21.     printf("%d\t%d",tabk, tabw);
  22.     int **tab;
  23.     tab = (int **)malloc(tabk*sizeof(int*));
  24.     for(int i = 0; i < tabk; i++)
  25.     {
  26.         tab[i]=(int*)malloc(tabw*sizeof(int));
  27.     }
  28.     //DeadAll(tab, tabk, tabw);
  29.     graphics(Lx, Ly);
  30.     init(tab, tabk, tabw);
  31.     fill_rectangles(tab, tabk, tabw, r);
  32.     while(animate(1000))
  33.     {
  34.     plansza(r, Lx, Ly);
  35.     DeadOrAlive(tab, tabk, tabw);
  36.     fill_rectangles(tab, tabk, tabw, r);
  37.     }
  38.    
  39. }
  40. void plansza(int r, int Lx, int Ly)
  41. {
  42.     setcolor(8);
  43.     int Ax = 0;
  44.     int Ay = 0;
  45.     while(Ax<Lx)
  46.     {
  47.         line(Ax,0,Ax,Ly);
  48.         Ax +=r;
  49.     }
  50.     while(Ay<Ly)
  51.     {
  52.         line(0,Ay,Lx,Ay);
  53.         Ay +=r;
  54.     }
  55. }
  56. void fill_rectangles(int *tab[], int tabk, int tabw, int r)
  57. {
  58.     setcolor(15);
  59.     for(int i = 0; i<tabk; i++)
  60.     {
  61.         for(int j = 0; j<tabw; j++)
  62.         {
  63.             if(tab[i][j]==1)
  64.             {
  65.                 int ax = i*r;
  66.                 int ay = j*r;
  67.                 int axx = ax+5;
  68.                 for(int k = 0; k<r; k++)
  69.                 {
  70.                     line(ax, ay, axx, ay);
  71.                     ay+=1;
  72.                 }
  73.             }
  74.         }
  75.     }}
  76. void init(int *tab[], int tabk, int tabw)
  77. {
  78.     for(int i = 0; i<tabk; i++)
  79.     {
  80.         for(int j = 0; j<tabw; j++)
  81.         {
  82.             double a = (double)rand()/RAND_MAX*100;
  83.            
  84.             if(a>=90)
  85.             {
  86.                 tab[i][j]=1;
  87.             }
  88.             else
  89.             {
  90.                 tab[i][j]=0;
  91.             }
  92.         }}
  93. }
  94. void kolumna_test(int *tab[], int tabw)
  95. {for (int i = 0; i<tabw; i++)
  96. {tab[i][10]=1;}
  97. }
  98. void DeadAll(int *tab[], int tabk, int tabw)
  99. {
  100.     for(int i = 0; i<tabk; i++)
  101.     {
  102.         for(int j = 0; j<tabw; i++)
  103.         {
  104.             tab[i][j]=0;
  105.         }
  106.     }
  107. }
  108. void DeadOrAlive(int *tab[], int tabk, int tabw)
  109. {
  110.     int sum = 0;
  111.     for(int i = 0; i<tabk; i++)
  112.     {
  113.         for(int j = 0; j<tabw; i++)
  114.         {
  115.             if(i==0 && j==0)
  116.             {
  117.                 int sum=tab[0][1]+tab[1][1]+tab[1][0];
  118.             }
  119.             if(i==tabk && j==0)
  120.             {
  121.                 int sum=tab[i-1][j]+tab[i-1][j]+tab[i][1];
  122.             }
  123.             if(i==tabk && j==tabw)
  124.             {
  125.                 int sum=tab[i-1][j-1]+tab[i-1][j]+tab[i][j-1];
  126.             }
  127.             if(i==0 && j==tabw)
  128.             {
  129.                 int sum=tab[i][j-1]+tab[1][j]+tab[i][j-1];
  130.             }
  131.             if(i==0 && j!=0 && j != tabw)
  132.             {
  133.                 int sum =tab[0][j+1]+tab[0][j-1]+tab[1][j+1]+tab[1][j-1]+tab[1][j];
  134.             }
  135.             if(i==tabk && j!=0 && j != tabw)
  136.             {
  137.                 int sum =tab[i][j+1]+tab[i][j-1]+tab[i-1][j-1]+tab[i-1][j+1]+tab[i-1][j];
  138.             }
  139.             if(i!=0 && i!=tabk && j==0)
  140.             {
  141.                 int sum =tab[i+1][j]+tab[i-1][j]+tab[i+1][1]+tab[i-1][1]+tab[i][1];
  142.             }
  143.             if(i!=0 && i!=tabk && j==tabk)
  144.             {
  145.                 int sum =tab[i+1][j]+tab[i-1][j]+tab[i+1][j-1]+tab[i-1][j-1]+tab[i][j-1];
  146.             }
  147.             if(j!=0&&i!=0)
  148.             {
  149.                 int sum=tab[i-1][j]+tab[i-1][j+1]+tab[i-1][j-1]+tab[i][j+1]+tab[i][j-1]+tab[i+1][j]+tab[i+1][j+1]+tab[i+1][j-1];
  150.             }
  151.             switch (sum)
  152.             {
  153.             case 2:
  154.                 break;
  155.             case 3:
  156.                 tab[i][j] = 1;
  157.                 break;
  158.             default:
  159.                 tab[i][j]=0;
  160.                 break;
  161.             }
  162.  
  163.         }
  164.     }
  165. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement