diff --git a/game.c b/game.c new file mode 100644 index 0000000..73142ea --- /dev/null +++ b/game.c @@ -0,0 +1,122 @@ +#include +#include + +void print_pole(char pole[3][3]); +char is_game_won(char pole[3][3]); +void read_date(int* y, int*x); +int main(){ + char pole[3][3]; + + for (size_t y = 0; y < 3; y++)//заполняем по дефолку пробелами + { + for (size_t x = 0; x < 3; x++) + { + pole[y][x] = ' '; + } + + } + printf("Welcome!!!\n"); + while (1) + { + if (is_game_won(pole) == 'o')//безконечный цыул пока один из игроков не выиграет + { + printf("Won first player\n"); + break; + }else if (is_game_won(pole) == 'x') + { + printf("Won second player\n"); + break; + } + print_pole(pole); + printf("First player: (row column)\n"); + int x =0; + int y =0; + read_date(&y,&x); + pole[y][x] = 'o'; + print_pole(pole); + if (is_game_won(pole) == 'o')//проверка на победу + { + printf("Won first player\n"); + break; + }else if (is_game_won(pole) == 'x') + { + printf("Won second player (row column ) \n"); + break; + } + printf("Second player: \n"); + read_date(&y,&x); + pole[y][x] = 'x'; + + } + + +} + +void print_pole(char pole[3][3]){//выводит поле спомощью фор + printf (" 1 2 3\n"); + for (size_t y = 0; y < 3; y++) + { + printf("%ld ", y+1); + for (size_t x = 0; x < 3; x++) + { + printf("%c|", pole[y][x]); + } + printf("\n"); + printf(" -----\n"); + } + +} + +void read_date(int* y, int*x){//считует даные и проверяет их + scanf("%d %d", y, x); + *x = *x -1; + *y = *y -1; + while (*x>2 || *y >2) + { + printf("Wrong input\n"); + scanf("%d %d", y, x); + *x = *x -1; + *y = *y -1; + } + +} +char is_game_won(char pole[3][3]){//проверяет победу + for (size_t y = 0; y < 3; y++) + { + if (pole[y][0] == pole[y][1] && pole[y][1]==pole[y][2]) + { + if (pole[y][0] != ' ') + { + return pole[y][0]; + } + } + + } + for (size_t x = 0; x< 3; x++) + { + if (pole[0][x] == pole[1][x]&&pole[1][x]==pole[2][x]) + { + if (pole[0][x] != ' ') + { + return pole[0][x]; + } + } + + } + if (pole[0][0] == pole[1][1]&&pole[1][1]==pole[2][2]) + { + if (pole[0][0] != ' ') + { + return pole[0][0]; + } + } + if (pole[2][0]==pole[1][1]&&pole[1][1]==pole[0][2]) + { + if (pole[2][0] != ' ') + { + return pole[2][0]; + } + } + + return ' '; +} \ No newline at end of file