Advertisement
HeroBaga

Untitled

Aug 21st, 2021
1,514
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 6.55 KB | None | 0 0
  1. #include <stdio.h>
  2. //Библиотеки которые нужно отключить на маке
  3. #include <conio.h>
  4. #include <stdlib.h>
  5.  
  6. //#define size_x 80
  7. //#define size_y 25
  8.  
  9.  
  10. int size_x = 82, size_y = 27;
  11.  
  12. void game();
  13.  
  14. void simulate();
  15.  
  16. int check(char *core, int y, int x);
  17.  
  18. void display(char *core);
  19.  
  20. int main() {
  21.     game();
  22.     return 0;
  23. }
  24.  
  25. void game() {
  26.     char horizontal = '-';
  27.     char vertical = '|';
  28.     char space = ' ';
  29.     char core[27][82];
  30.    //TODO сделать считывания из файла
  31.     for (int y = 0; y < size_y; y++) {
  32.         for (int x = 0; x < size_x; x++) {
  33.             if (y == 0 || y == 26) {
  34.                 core[y][x] = horizontal;
  35.             } else if (x == 0 || x == 81) {
  36.                 core[y][x] = vertical;
  37.             } else {
  38.                 core[y][x] = space;
  39.             }
  40.         }
  41.     }
  42.     //Временая задование значений
  43.     core[4][1] = 'x';
  44.     core[4][2] = 'x';
  45.     core[4][3] = 'x';
  46.     core[3][3] = 'x';
  47.     core[2][2] = 'x';
  48.  
  49.     display(*core);
  50.     //дальше код, который нужно коментить на маке
  51.     int code;
  52.     //TODO тут нужно сделать такой же цикл, только для макос, чтоб когда он считывал пробел, то выполнял один шаг игры
  53.     while (1) {
  54.         code = getch();
  55.         if (code == 32) {
  56.             system("@cls||clear");
  57.             simulate(*core);
  58.         }
  59.     }
  60.  
  61.  
  62. }
  63.  
  64. void display(char *core) {
  65.     char (*p_array)[size_x] = core;
  66.     for (int y = 0; y < size_y; y++) {
  67.         for (int x = 0; x < size_x; x++) {
  68.             printf("%c", p_array[y][x]);
  69.         }
  70.         printf("%c", '\n');
  71.     }
  72. }
  73.  
  74. void simulate(char *core) {
  75.     // TODO массив support создается через малок, он динамичсеки
  76.     // TODO дописать чтоб перезаписывал core
  77.     int support[size_y][size_x];
  78.     char (*array)[size_x] = core;
  79.     for (int y = 1; y < size_y - 1; y++) {
  80.         for (int x = 1; x < size_x - 1; x++) {
  81.             support[y][x] = check(*array, y, x);
  82.         }
  83.     }
  84.     for (int y = 1; y < size_y - 1; y++) {
  85.         for (int x = 1; x < size_x - 1; x++) {
  86.             if (support[y][x] == 3) {
  87.                 array[y][x] = 'x';
  88.             } else if (support[y][x] == 2 && array[y][x] == 'x') {
  89.                 array[y][x] = 'x';
  90.             } else {
  91.                 array[y][x] = ' ';
  92.             }
  93.         }
  94.     }
  95.     display(*array);
  96. }
  97.  
  98. int check(char *core, int y, int x) {
  99.     char (*array)[size_x] = core;
  100.     int count = 0;
  101.     //Центр поля
  102.     if (x > 1 && x < 80 && y > 1 && y < 25) {
  103.         if (array[y - 1][x - 1] == 'x') count++;
  104.         if (array[y - 1][x] == 'x') count++;
  105.         if (array[y - 1][x + 1] == 'x') count++;
  106.         if (array[y][x - 1] == 'x') count++;
  107.         if (array[y][x + 1] == 'x') count++;
  108.         if (array[y + 1][x - 1] == 'x') count++;
  109.         if (array[y + 1][x] == 'x') count++;
  110.         if (array[y + 1][x + 1] == 'x') count++;
  111.     }
  112.     //Лево центр
  113.     if (x == 1 && y > 1 && y < 25) {
  114.         if (array[y - 1][80] == 'x')count++;
  115.         if (array[y - 1][x] == 'x') count++;
  116.         if (array[y - 1][x + 1] == 'x') count++;
  117.         if (array[y][80] == 'x') count++;
  118.         if (array[y][x + 1] == 'x')count++;
  119.         if (array[y + 1][80] == 'x')count++;
  120.         if (array[y + 1][x] == 'x')count++;
  121.         if (array[y + 1][x + 1] == 'x')count++;
  122.     }
  123.     //Право центр
  124.     if (x == 80 && y > 1 && y < 25) {
  125.         if (array[y - 1][x - 1] == 'x') count++;
  126.         if (array[y - 1][x] == 'x') count++;
  127.         if (array[y - 1][1] == 'x') count++;
  128.         if (array[y][x - 1] == 'x') count++;
  129.         if (array[y][1] == 'x') count++;
  130.         if (array[y + 1][x - 1] == 'x') count++;
  131.         if (array[y + 1][x] == 'x') count++;
  132.         if (array[y + 1][1] == 'x') count++;
  133.     }
  134.     //Центр вверх
  135.     if (y == 1 && x > 1 && x < 80) {
  136.         if (array[25][x - 1] == 'x') count++;
  137.         if (array[25][x] == 'x') count++;
  138.         if (array[25][x + 1] == 'x') count++;
  139.         if (array[y][x - 1] == 'x') count++;
  140.         if (array[y][x + 1] == 'x') count++;
  141.         if (array[y + 1][x - 1] == 'x') count++;
  142.         if (array[y + 1][x] == 'x') count++;
  143.         if (array[y + 1][x + 1] == 'x') count++;
  144.     }
  145.     //Центр низ
  146.     if (y == 25 && x > 1 && x < 80) {
  147.         if (array[y - 1][x - 1] == 'x') count++;
  148.         if (array[y - 1][x] == 'x') count++;
  149.         if (array[y - 1][x + 1] == 'x') count++;
  150.         if (array[y][x - 1] == 'x') count++;
  151.         if (array[y][x + 1] == 'x') count++;
  152.         if (array[1][x - 1] == 'x') count++;
  153.         if (array[1][x] == 'x') count++;
  154.         if (array[1][x + 1] == 'x') count++;
  155.     }
  156.     //Левый верх угол
  157.     if(y==1 && x ==1){
  158.         if (array[25][80] == 'x') count++;
  159.         if (array[25][x+1] == 'x') count++;
  160.         if (array[25][x+1] == 'x') count++;
  161.         if (array[y][80] == 'x') count++;
  162.         if (array[y][x + 1] == 'x') count++;
  163.         if (array[y+1][80] == 'x') count++;
  164.         if (array[y + 1][x] == 'x') count++;
  165.         if (array[y + 1][x + 1] == 'x') count++;
  166.     }
  167.     //Правый верх угол
  168.     if(y==1 && x ==80){
  169.         if (array[25][x-1] == 'x') count++;
  170.         if (array[25][x] == 'x') count++;
  171.         if (array[25][1] == 'x') count++;
  172.         if (array[y][x - 1] == 'x') count++;
  173.         if (array[1][1] == 'x') count++;
  174.         if (array[y + 1][x - 1] == 'x') count++;
  175.         if (array[y + 1][x] == 'x') count++;
  176.         if (array[1][2] == 'x') count++;
  177.     }
  178.     //Левый низ угол
  179.     if(y==25 && x==1){
  180.         if (array[y-1][80] == 'x') count++;
  181.         if (array[y - 1][x] == 'x') count++;
  182.         if (array[y - 1][x + 1] == 'x') count++;
  183.         if (array[y][80] == 'x') count++;
  184.         if (array[y][x + 1] == 'x') count++;
  185.         if (array[1][80] == 'x') count++;
  186.         if (array[1][x] == 'x') count++;
  187.         if (array[2][x + 1] == 'x') count++;
  188.     }
  189.     //Правй низ угол
  190.     if(y==25  && x == 80){
  191.         if (array[y - 1][x - 1] == 'x') count++;
  192.         if (array[y - 1][x] == 'x') count++;
  193.         if (array[y - 1][1] == 'x') count++;
  194.         if (array[y][x - 1] == 'x') count++;
  195.         if (array[y][1] == 'x') count++;
  196.         if (array[1][x - 1] == 'x') count++;
  197.         if (array[1][x] == 'x') count++;
  198.         if (array[1][1] == 'x') count++;
  199.     }
  200.     return count;
  201.  
  202. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement