Advertisement
Guest User

Untitled

a guest
Jan 4th, 2016
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.68 KB | None | 0 0
  1. #include <stdio.h>
  2. #define sz 20 //Размер поля
  3. //#include <conio.h>//Возможно в другом компиляторе нужно будет это подключить. У меня Pelles C.
  4. char arr[sz][sz];//Массив с полем
  5. void print();//Функция которая выводит текстом поле
  6. void tick();//Один "тик" игры
  7.  
  8. void main(){   
  9. arr[1][3]=1;    arr[2][3]=1;    arr[3][3]=1;    arr[3][2]=1;    arr[2][1]=1;
  10.     //Планер в левом верхнем углу
  11. arr[1][sz-4]=1; arr[2][sz-4]=1; arr[3][sz-4]=1; arr[3][sz-3]=1; arr[2][sz-2]=1;
  12.     //Планер в левом нижнем углу, чтоб они столкнулись
  13. print();
  14. while (getchar()!='q'){
  15.     tick();
  16.     print();
  17.     }
  18. }
  19.  
  20. void print(){
  21.     _clrscr();//Какая-то древняя хрень, которая консольку чистит.
  22.     for (int y=0;y<sz;y++){
  23.         for (int x=0;x<sz;x++)
  24.         putchar(arr[x][y]>0?'+':'-');      
  25.     printf("\n");
  26.     }
  27. }
  28. void tick(){
  29. char brr[sz][sz];//Временный массив с полем, чтоб нагляднее
  30. for (int x=0;x<sz;x++)
  31.     for (int y=0;y<sz;y++){
  32.     int a=arr[x][y];//Жива ли текущая клетка, первый бит проверяю
  33.     #define g(dx,dy) arr[(x+sz+dx)%sz][(y+sz+dy)%sz]
  34.     //Бурда, которая соседние клетки смотрит.
  35.     int b=g(-1,-1)+g(-1,0)+g(-1,1)+g(0,-1)+g(0,1)+g(1,-1)+g(1,0)+g(1,1);   
  36.     brr[x][y]=((b==3)||(b==2&&a==1))?1:0;//Условия жизни клетки. 1 - живая, 0 - мёртвая.
  37.         }
  38. for (int y=0;y<sz;y++)//Временный переписываю в основной.
  39.     for (int x=0;x<sz;x++)
  40.         arr[x][y]=brr[x][y];
  41. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement