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