Advertisement
HeroBaga

Untitled

Aug 22nd, 2021
1,147
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.00 KB | None | 0 0
  1. #include <stdio.h>
  2. //Библиотеки которые нужно отключить на маке
  3. #include <conio.h>
  4. #include <stdlib.h>
  5. //Библиотека для работы мака
  6. #include <curses.h>
  7. #include <unistd.h>
  8.  
  9.  
  10. WINDOW *win
  11.  
  12. int size_x = 82, size_y = 27;
  13.  
  14. void game();
  15.  
  16. void simulate();
  17.  
  18. int check(char *core, int y, int x);
  19.  
  20. void display(char *core);
  21.  
  22. int main() {
  23.     game();
  24.     return 0;
  25. }
  26.  
  27. void game() {
  28.     char horizontal = '-';
  29.     char vertical = '|';
  30.     char space = ' ';
  31.     char core[27][82];
  32.     //TODO сделать миню на свитчкейсах для выбора карты
  33.     FILE *file;
  34.     char input;
  35.     file = freopen("input.txt", "r", stdin);
  36.     if (file == NULL){
  37.         printf("File doesnt exist or is currupted");
  38.         return;
  39.     }
  40.     for (int y = 0; y < size_y + 1; y++) {
  41.         for (int x = 0; x < size_x + 1; x++) {
  42.             input = fgetc(file);
  43.             if (input == ' ') {
  44.                 core[y][x] = ' ';
  45.             } else if (input == 'x') {
  46.                 core[y][x] = 'x';
  47.             } else if (input == '-') {
  48.                 core[y][x] = '-';
  49.             }else if (input == '|') {
  50.                 core[y][x] = '|';
  51.             }
  52.         }
  53.  
  54.     }
  55.     fclose(file);
  56.  
  57.     display(*core);
  58.     char code;
  59.     //TODO тут нужно сделать такой же цикл, только для макос, чтоб когда он считывал пробел, то выполнял один шаг игры
  60.     win = initscr();
  61.     noecho();
  62.     nodelay(win, true);
  63.     curs_set(0);
  64.     while (1) {
  65.         code = getch();
  66.         if (code == ' '){
  67.             //TODO добавить очистку экрана или посмотреть будет ли работать move(0,0)
  68.             simulate(*core);
  69.         }
  70.     }
  71.  
  72.  
  73. }
  74.  
  75. void display(char *core) {
  76.     char (*p_array)[size_x] = core;
  77.     for (int y = 0; y < size_y; y++) {
  78.         for (int x = 0; x < size_x; x++) {
  79.             printf("%c", p_array[y][x]);
  80.         }
  81.         printf("%c", '\n');
  82.     }
  83. }
  84.  
  85. void simulate(char *core) {
  86.     int support[size_y][size_x];
  87.     char (*array)[size_x] = core;
  88.     for (int y = 1; y < size_y - 1; y++) {
  89.         for (int x = 1; x < size_x - 1; x++) {
  90.             support[y][x] = check(*array, y, x);
  91.         }
  92.     }
  93.     for (int y = 1; y < size_y - 1; y++) {
  94.         for (int x = 1; x < size_x - 1; x++) {
  95.             if (support[y][x] == 3) {
  96.                 array[y][x] = 'x';
  97.             } else if (support[y][x] == 2 && array[y][x] == 'x') {
  98.                 array[y][x] = 'x';
  99.             } else {
  100.                 array[y][x] = ' ';
  101.             }
  102.         }
  103.     }
  104.     display(*array);
  105. }
  106.  
  107. int check(char *core, int y, int x) {
  108.     char (*array)[size_x] = core;
  109.     int count = 0;
  110.     int A, B, C, D;
  111.     //Центр поля
  112.     A = y - 1;
  113.     B = y + 1;
  114.     C = x - 1;
  115.     D = x + 1;
  116.     //Лево центр
  117.     if (x == 1 && y > 1 && y < 25) {
  118.         C = 80;
  119.     }
  120.     //Право центр
  121.     if (x == 80 && y > 1 && y < 25) {
  122.         D = 1;
  123.     }
  124.     //Центр вверх
  125.     if (y == 1 && x > 1 && x < 80) {
  126.         A = 25;
  127.     }
  128.     //Центр низ
  129.     if (y == 25 && x > 1 && x < 80) {
  130.         B = 1;
  131.     }
  132.     //Левый верх угол
  133.     if (y == 1 && x == 1) {
  134.         A = 25;
  135.         C = 80;
  136.     }
  137.     //Правый верх угол
  138.     if (y == 1 && x == 80) {
  139.         A = 25;
  140.         D = 1;
  141.     }
  142.     //Левый низ угол
  143.     if (y == 25 && x == 1) {
  144.         B = 1;
  145.         C = 80;
  146.     }
  147.     //Правй низ угол
  148.     if (y == 25 && x == 80) {
  149.         B = 1;
  150.         D = 1;
  151.     }
  152.     if (array[A][C] == 'x') count++;
  153.     if (array[A][x] == 'x') count++;
  154.     if (array[A][D] == 'x') count++;
  155.     if (array[y][C] == 'x') count++;
  156.     if (array[y][D] == 'x') count++;
  157.     if (array[B][C] == 'x') count++;
  158.     if (array[B][x] == 'x') count++;
  159.     if (array[B][D] == 'x') count++;
  160.     return count;
  161. }
  162.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement