Duvida em C

Eu tenho que entregar um projeto na faculdade, mas eu tenho muita dificuldade em programar e acabo por cometer muitos erros e como a aula é ministrada por um professor que fala uma mistura de português com espanhol, não é uma critica a pessoa dele muito menos preconceito, eu não consigo entender e ele não tem paciência para tirar dúvidas. Diante da situação que eu me encontro eu gostaria de uma ajuda.

Esse código deve fazer as seguintes coisas:
Implementar um jogo de matemática básica para auxiliar as crianças do ensino fundamental com o aprendizado das quatro operações aritméticas básicas: soma, subtração, multiplicação e divisão. O jogo será implementado em uma matriz de 6X6. Cada célula da matriz contém um digito de 1 a 9, selecionado randomicamente. O jogador deverá escolher duas células e realizar uma operação com os números que elas mostram.

Regras do Jogo:

  • O jogador deverá escolher um par de números da matrize uma operação aritmética e indicar o resultado da operação aritmética;
  • Cada vez que o jogador acerte o valor da operação, as posições escolhidas não estarão disponíveis e não devem mostrar números;
  • O jogador não pode sempre escolher a mesma operação matemática, invente uma regra para controlar esta situação e garanta que as quatro operações sejam comtempladas(está regra é individual);
  • Depois de três tentativas erradas o jogador pode pedir a resposta;
  • O jogo termina nas seguintes condições: •O jogador acerta todos os resultados das operações de todos os pares em um Máximo 24 tentativas(são 18 pares de números);
  • O jogador ultrapassa as 24tentativas;
  • O jogador deseja terminar. Requisitos do Programa O programa deverá ser implementado em C; É necessário um menu principal para controle do sistema com as funções: regras, jogar e sair; A utilização de funções é obrigatória.

Eu preciso tirar uma nota boa, pois eu sei que na prova tem uma grande chance de eu ir mal. Por favor olhem meu código para mim e sugiram as alterações necessárias.

Meu código:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define SIZE 6
#define MAX_ATTEMPTS 24

void exibirRegras() {
    printf("Regras do Jogo:\n");
    printf("1. O jogador deve escolher um par de números da matriz e uma operação aritmética para executar.\n");
    printf("2. Se o jogador acertar o valor da operação, as posições escolhidas não estarão disponíveis.\n");
    printf("3. O jogador não pode escolher sempre a mesma operação matemática.\n");
    printf("4. Após três tentativas erradas, o jogador pode pedir a resposta.\n");
    printf("5. O jogo termina nas seguintes condições:\n");
    printf("   a. O jogador acerta todos os resultados das operações em no máximo 24 tentativas.\n");
    printf("   b. se o jogador ultrapassa as 24 tentativas o jogo acaba.\n");
    printf("   c. O jogador deseja terminar.\n");
}

void gerarMatriz(int matriz[SIZE][SIZE]) {
    srand(time(NULL));
    for(int i = 0; i < SIZE; i++) {
        for(int j = 0; j < SIZE; j++) {
            matriz[i][j] = rand() % 9 + 1; // números de 1 a 9
        }
    }
}

void exibirMatriz(int matriz[SIZE][SIZE], int matrizDisponivel[SIZE][SIZE]) {
    printf("\nMatriz:\n");
    for(int i = 0; i < SIZE; i++) {
        for(int j = 0; j < SIZE; j++) {
            if(matrizDisponivel[i][j]) {
                printf("%d ", matriz[i][j]);
            } else {
                printf("X ");
            }
        }
        printf("\n");
    }
}

int validarOperacao(int num1, int num2, char operacao, int resultado) {
    switch (operacao) {
        case '+': return (num1 + num2 == resultado);
        case '-': return (num1 - num2 == resultado);
        case '*': return (num1 * num2 == resultado);
        case '/': return (num2 != 0 && num1 / num2 == resultado); // divisão exata
        default: return 0;
    }
}

void jogar() {
    int matriz[SIZE][SIZE];
    int matrizDisponivel[SIZE][SIZE];
    gerarMatriz(matriz);
    
    for(int i = 0; i < SIZE; i++) {
        for(int j = 0; j < SIZE; j++) {
            matrizDisponivel[i][j] = 1; // todas as células disponíveis
        }
    }

    int tentativas = 0;
    int paresAcertados = 0;
    char ultimaOperacao = 0;

    while (tentativas < MAX_ATTEMPTS && paresAcertados < 18) {
        exibirMatriz(matriz, matrizDisponivel);
        
        int x1, y1, x2, y2, resultado;
        char operacao;
        
        printf("\nEscolha a primeira célula (linha coluna): ");
        scanf("%d %d", &x1, &y1);
        
        printf("Escolha a segunda célula (linha coluna): ");
        scanf("%d %d", &x2, &y2);
        
        printf("Escolha a operação (+, -, *, /): ");
        scanf(" %c", &operacao);
        
        if (operacao == ultimaOperacao) {
            printf("Você não pode usar a mesma operação consecutivamente. Tente novamente.\n");
            continue;
        }
        
        printf("Digite o resultado da operação: ");
        scanf("%d", &resultado);
        
        if (validarOperacao(matriz[x1][y1], matriz[x2][y2], operacao, resultado)) {
            printf("Resposta correta!\n");
            matrizDisponivel[x1][y1] = 0;
            matrizDisponivel[x2][y2] = 0;
            paresAcertados++;
        } else {
            printf("Resposta errada.\n");
            tentativas++;
        }
        
        ultimaOperacao = operacao;
    }
    
    if (paresAcertados == 18) {
        printf("Parabéns! Você completou o jogo em %d tentativas.\n", tentativas);
    } else {
        printf("Você excedeu o número de tentativas. Jogo encerrado.\n");
    }
}

int main() {
    int opcao;
    
    do {
        printf("\nMenu Principal:\n");
        printf("1. Regras\n");
        printf("2. Jogar\n");
        printf("3. Sair\n");
        printf("Escolha uma opcao: ");
        scanf("%d", &opcao);
        
        switch (opcao) {
            case 1:
                exibirRegras();
                break;
            case 2:
                jogar();
                break;
            case 3:
                printf("Saindo...\n");
                break;
            default:
                printf("Opcao invalida. Tente novamente.\n");
        }
    } while (opcao != 3);
    
    return 0;
}

Desde já agradeço a qualquer pessoa que tente me ajudar