Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <ncurses.h>
- #include <unistd.h>
- #define size_x 82
- #define size_y 27
- void game();
- void simulate();
- int check(char *core, int y, int x);
- void display(char *core);
- int main() {
- game();
- return 0;
- }
- void game() {
- char horizontal = '-';
- char vertical = '|';
- char space = ' ';
- char core[27][82];
- //TODO сделать миню на свитчкейсах для выбора карты
- FILE *file;
- char input;
- file = freopen("input.txt", "r", stdin);
- if (file == NULL){
- printf("File doesnt exist or is corrupted");
- return;
- }
- for (int y = 0; y <= size_y + 1; y++) {
- for (int x = 0; x <= size_x + 1; x++) {
- input = fgetc(file);
- if (input == ' ') {
- core[y][x] = ' ';
- } else if (input == 'x') {
- core[y][x] = 'x';
- } else if (input == '-') {
- core[y][x] = '-';
- }else if (input == '|') {
- core[y][x] = '|';
- }
- }
- }
- fclose(file);
- display(*core);
- int code;
- //TODO тут нужно сделать такой же цикл, только для макос, чтоб когда он считывал пробел, то выполнял один шаг игры
- cbreak();
- echo();
- initscr();
- while (1) {
- code = getch();
- if (code == 32){
- //TODO добавить очистку экрана или посмотреть будет ли работать move(0,0)
- simulate(*core);
- refresh();
- }
- }
- endwin();
- }
- void display(char *core) {
- printf ("\33c\e[3J");
- char (*p_array)[size_x] = core;
- for (int y = 0; y < size_y; y++) {
- for (int x = 0; x < size_x; x++) {
- printf("%c", p_array[y][x]);
- }
- printf("%c",'\n');
- }
- }
- void simulate(char *core) {
- int support[size_y][size_x];
- char (*array)[size_x] = core;
- for (int y = 1; y < size_y - 1; y++) {
- for (int x = 1; x < size_x - 1; x++) {
- support[y][x] = check(*array, y, x);
- }
- }
- for (int y = 1; y < size_y - 1; y++) {
- for (int x = 1; x < size_x - 1; x++) {
- if (support[y][x] == 3) {
- array[y][x] = 'x';
- } else if (support[y][x] == 2 && array[y][x] == 'x') {
- array[y][x] = 'x';
- } else {
- array[y][x] = ' ';
- }
- }
- }
- display(*array);
- }
- int check(char *core, int y, int x) {
- char (*array)[size_x] = core;
- int count = 0;
- int A, B, C, D;
- //Центр поля
- A = y - 1;
- B = y + 1;
- C = x - 1;
- D = x + 1;
- //Лево центр
- if (x == 1 && y > 1 && y < 25) {
- C = 80;
- }
- //Право центр
- if (x == 80 && y > 1 && y < 25) {
- D = 1;
- }
- //Центр вверх
- if (y == 1 && x > 1 && x < 80) {
- A = 25;
- }
- //Центр низ
- if (y == 25 && x > 1 && x < 80) {
- B = 1;
- }
- //Левый верх угол
- if (y == 1 && x == 1) {
- A = 25;
- C = 80;
- }
- //Правый верх угол
- if (y == 1 && x == 80) {
- A = 25;
- D = 1;
- }
- //Левый низ угол
- if (y == 25 && x == 1) {
- B = 1;
- C = 80;
- }
- //Правй низ угол
- if (y == 25 && x == 80) {
- B = 1;
- D = 1;
- }
- if (array[A][C] == 'x') count++;
- if (array[A][x] == 'x') count++;
- if (array[A][D] == 'x') count++;
- if (array[y][C] == 'x') count++;
- if (array[y][D] == 'x') count++;
- if (array[B][C] == 'x') count++;
- if (array[B][x] == 'x') count++;
- if (array[B][D] == 'x') count++;
- return count;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement