Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- //Библиотеки которые нужно отключить на маке
- #include <conio.h>
- #include <stdlib.h>
- //#define size_x 80
- //#define size_y 25
- int size_x = 82, 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 сделать считывания из файла
- for (int y = 0; y < size_y; y++) {
- for (int x = 0; x < size_x; x++) {
- if (y == 0 || y == 26) {
- core[y][x] = horizontal;
- } else if (x == 0 || x == 81) {
- core[y][x] = vertical;
- } else {
- core[y][x] = space;
- }
- }
- }
- //Временая задование значений
- core[4][1] = 'x';
- core[4][2] = 'x';
- core[4][3] = 'x';
- core[3][3] = 'x';
- core[2][2] = 'x';
- display(*core);
- //дальше код, который нужно коментить на маке
- int code;
- //TODO тут нужно сделать такой же цикл, только для макос, чтоб когда он считывал пробел, то выполнял один шаг игры
- while (1) {
- code = getch();
- if (code == 32) {
- system("@cls||clear");
- simulate(*core);
- }
- }
- }
- void display(char *core) {
- 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) {
- // TODO массив support создается через малок, он динамичсеки
- // TODO дописать чтоб перезаписывал 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;
- //Центр поля
- if (x > 1 && x < 80 && y > 1 && y < 25) {
- if (array[y - 1][x - 1] == 'x') count++;
- if (array[y - 1][x] == 'x') count++;
- if (array[y - 1][x + 1] == 'x') count++;
- if (array[y][x - 1] == 'x') count++;
- if (array[y][x + 1] == 'x') count++;
- if (array[y + 1][x - 1] == 'x') count++;
- if (array[y + 1][x] == 'x') count++;
- if (array[y + 1][x + 1] == 'x') count++;
- }
- //Лево центр
- if (x == 1 && y > 1 && y < 25) {
- if (array[y - 1][80] == 'x')count++;
- if (array[y - 1][x] == 'x') count++;
- if (array[y - 1][x + 1] == 'x') count++;
- if (array[y][80] == 'x') count++;
- if (array[y][x + 1] == 'x')count++;
- if (array[y + 1][80] == 'x')count++;
- if (array[y + 1][x] == 'x')count++;
- if (array[y + 1][x + 1] == 'x')count++;
- }
- //Право центр
- if (x == 80 && y > 1 && y < 25) {
- if (array[y - 1][x - 1] == 'x') count++;
- if (array[y - 1][x] == 'x') count++;
- if (array[y - 1][1] == 'x') count++;
- if (array[y][x - 1] == 'x') count++;
- if (array[y][1] == 'x') count++;
- if (array[y + 1][x - 1] == 'x') count++;
- if (array[y + 1][x] == 'x') count++;
- if (array[y + 1][1] == 'x') count++;
- }
- //Центр вверх
- if (y == 1 && x > 1 && x < 80) {
- if (array[25][x - 1] == 'x') count++;
- if (array[25][x] == 'x') count++;
- if (array[25][x + 1] == 'x') count++;
- if (array[y][x - 1] == 'x') count++;
- if (array[y][x + 1] == 'x') count++;
- if (array[y + 1][x - 1] == 'x') count++;
- if (array[y + 1][x] == 'x') count++;
- if (array[y + 1][x + 1] == 'x') count++;
- }
- //Центр низ
- if (y == 25 && x > 1 && x < 80) {
- if (array[y - 1][x - 1] == 'x') count++;
- if (array[y - 1][x] == 'x') count++;
- if (array[y - 1][x + 1] == 'x') count++;
- if (array[y][x - 1] == 'x') count++;
- if (array[y][x + 1] == 'x') count++;
- if (array[1][x - 1] == 'x') count++;
- if (array[1][x] == 'x') count++;
- if (array[1][x + 1] == 'x') count++;
- }
- //Левый верх угол
- if(y==1 && x ==1){
- if (array[25][80] == 'x') count++;
- if (array[25][x+1] == 'x') count++;
- if (array[25][x+1] == 'x') count++;
- if (array[y][80] == 'x') count++;
- if (array[y][x + 1] == 'x') count++;
- if (array[y+1][80] == 'x') count++;
- if (array[y + 1][x] == 'x') count++;
- if (array[y + 1][x + 1] == 'x') count++;
- }
- //Правый верх угол
- if(y==1 && x ==80){
- if (array[25][x-1] == 'x') count++;
- if (array[25][x] == 'x') count++;
- if (array[25][1] == 'x') count++;
- if (array[y][x - 1] == 'x') count++;
- if (array[1][1] == 'x') count++;
- if (array[y + 1][x - 1] == 'x') count++;
- if (array[y + 1][x] == 'x') count++;
- if (array[1][2] == 'x') count++;
- }
- //Левый низ угол
- if(y==25 && x==1){
- if (array[y-1][80] == 'x') count++;
- if (array[y - 1][x] == 'x') count++;
- if (array[y - 1][x + 1] == 'x') count++;
- if (array[y][80] == 'x') count++;
- if (array[y][x + 1] == 'x') count++;
- if (array[1][80] == 'x') count++;
- if (array[1][x] == 'x') count++;
- if (array[2][x + 1] == 'x') count++;
- }
- //Правй низ угол
- if(y==25 && x == 80){
- if (array[y - 1][x - 1] == 'x') count++;
- if (array[y - 1][x] == 'x') count++;
- if (array[y - 1][1] == 'x') count++;
- if (array[y][x - 1] == 'x') count++;
- if (array[y][1] == 'x') count++;
- if (array[1][x - 1] == 'x') count++;
- if (array[1][x] == 'x') count++;
- if (array[1][1] == 'x') count++;
- }
- return count;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement