#include <stdio.h>
#include "game.h"

void save_games(char board[3][3], char current_player, int moves_count, const GameStatistics *stats) {
    FILE *file = fopen("save_game.txt", "w");
    if (file == NULL) {
        printf("ERROR\n");
        return;
    }
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
            fprint(file, "%c ", board[i][j]);
        }
        fprint(file, "\n");
    }
    fprint(file, "Current Player: %c\n", current_player);
    fprint(file, "Moves Count: %d\n", moves_count);

    fprintf(file, "X Wins: %d\n", stats->x_wins);
    fprintf(file, "O Wins: %d\n", stats->o_wins);
    fprintf(file, "Draws: %d\n", stats->draws);

    fclose(file);
     printf("Игра успешно сохранена!\n");
}

void print_statistics(const GameStatistics *stats) {
    printf("\nСтатистика:\n");
    printf("Победы X: %d\n", stats->x_wins);
    printf("Победы O: %d\n", stats->o_wins);
    printf("Ничьи: %d\n", stats->draws);
}

void printBoard(char board[3][3]) {
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
            printf("%c ", board[i][j]);
            if (j + 1 != 3) {
                printf("| ");
            }
        }
        printf("\n");
        if (i + 1 != 3) {
            printf("---------\n");
        }
    }
}

void getInput(char board[3][3], char *current_player) {
    int row, col;
    while (1) {
        printf("Игрок %c, введите строку и столбец через пробел: ", *current_player);
        if (scanf("%d %d", &row, &col) != 2) {
            printf("Некорректный ввод, введите два числа через пробел\n");
            while (getchar() != '\n'); // Очистка буфера ввода
            continue;
        }

        if (row < 0 || row > 2 || col < 0 || col > 2) {
            printf("Некорректный ввод, введите значения от 0 до 2\n");
            continue;
        }

        if (board[row][col] != ' ') {
            printf("Эта ячейка уже занята, выберите другую\n");
            continue;
        }

        board[row][col] = *current_player;
        break;
    }
}

char check_winner(char board[3][3]) {
    // Проверка строк и столбцов
    for (int i = 0; i < 3; i++) {
        if (board[i][0] != ' ' && board[i][0] == board[i][1] && board[i][1] == board[i][2]) {
            return board[i][0]; 
        }
        if (board[0][i] != ' ' && board[0][i] == board[1][i] && board[1][i] == board[2][i]) {
            return board[0][i]; 
        }
    }

    // Проверка диагоналей
    if (board[0][0] != ' ' && board[0][0] == board[1][1] && board[1][1] == board[2][2]) {
        return board[0][0]; 
    }
    if (board[0][2] != ' ' && board[0][2] == board[1][1] && board[1][1] == board[2][0]) {
        return board[0][2]; 
    }

    return ' '; // Возвращаем пробел, если победителя нет
}

void restart_game(char board[3][3], char *current_player, int *moves_count) {
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
            board[i][j] = ' ';
        }
    }
    
    *current_player = 'X';
    *moves_count = 0;

    printf("Игра перезапущена! Начинаем новую игру.\n");
}

создай в этом коде Функция `saveGame`
   - Где вызывать: Добавить возможность сохранения игры в любом месте программы, например, по команде игрока, либо по завершении игры. Можно вызвать эту функцию в любом месте, где игроки захотят сохранить прогресс.
   - Как она улучшит программу: Позволяет игрокам сохранить текущее состояние игры, что может быть полезно, если они не могут доиграть партию до конца. Это добавляет гибкость и даёт возможность возобновить игру позже. Сохранение и загрузка игры также могут быть полезны для тренировки или анализа своих предыдущих партий.
и чтоб команда вызывалась в main.c