Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #define sz 20 //Размер поля
- //#include <conio.h>//Возможно в другом компиляторе нужно будет это подключить. У меня Pelles C.
- char arr[sz][sz];//Массив с полем
- void print();//Функция которая выводит текстом поле
- void tick();//Один "тик" игры
- void main(){
- arr[1][3]=1; arr[2][3]=1; arr[3][3]=1; arr[3][2]=1; arr[2][1]=1;
- //Планер в левом верхнем углу
- 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;
- //Планер в левом нижнем углу, чтоб они столкнулись
- print();
- while (getchar()!='q'){
- tick();
- print();
- }
- }
- void print(){
- _clrscr();//Какая-то древняя хрень, которая консольку чистит.
- for (int y=0;y<sz;y++){
- for (int x=0;x<sz;x++)
- putchar(arr[x][y]>0?'+':'-');
- printf("\n");
- }
- }
- void tick(){
- char brr[sz][sz];//Временный массив с полем, чтоб нагляднее
- for (int x=0;x<sz;x++)
- for (int y=0;y<sz;y++){
- int a=arr[x][y];//Жива ли текущая клетка, первый бит проверяю
- #define g(dx,dy) arr[(x+sz+dx)%sz][(y+sz+dy)%sz]
- //Бурда, которая соседние клетки смотрит.
- 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);
- brr[x][y]=((b==3)||(b==2&&a==1))?1:0;//Условия жизни клетки. 1 - живая, 0 - мёртвая.
- }
- for (int y=0;y<sz;y++)//Временный переписываю в основной.
- for (int x=0;x<sz;x++)
- arr[x][y]=brr[x][y];
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement