Eu to tentando fazer esse projeto ai faz umas horas e ta dando um erro que aponta pra constante DOIS e diz: label at end of compound statement. Aparece só no meu codigo acima, o codigo hello, world por exemplo não aparece esse erro, pesquisando achei uns comentarios gringos dizendo que é alarme falso, mas não consegui entende-los muito bem, se eu apagar a Constante DOIS o erro continua.
/*
Objetivo: Programar o clássico Pedra, Papel, Tesoura.
Manipular arquivos de texto para salvar quantas vezes o jogador ganhou.
Menu interativo
Datas:inicio 01/01/2024 às 01:55hrs. | Fim 01/01/2024 às 09:22
Do inicio ao fim programando, quebrando a cabeça e aprendendo...
Volto depois para terminar de vez esse projeto.
By Matheus Marcelino.
*/
//Arquivos-cabeçalhos:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <locale.h>
#include <conio.h>
/*
valor da tecla 1 -> 49
valor da tecla 2 -> 50
valor da tecla 3 -> 51
valor da tecla ESC -> 27
*/
#define UM 49
#define DOIS 50
#define TRES 51
#define ESC 27
//Função para imprimir um menu de opções:
void menu(){
printf("\t\tPEDRA PAPEL TESOURA");
printf("\n\t\t\tby Matheus Marcelino");
printf("\n\t__________________________________________");
printf("\n\n\t[1] - Jogar");
printf("\n\t[2] - Conquistas");
printf("\n\t[ESC] - Sair");
printf("\n\t__________________________________________");
printf("\n\n\tPressione a tecla referente a opção desejada.");
}
//Função para ler as opções do menu:
int lerOpc(int op){
do{
//Variável:
op = getch();
//switch para ler as opções com getch;
switch(op){
case UM:
return (op);
break;
case DOIS:
return (op);
break;
}
}while(op != ESC);
return 0;
}
int main(void){
FILE *file; //Essencial para salvar dados.
file = fopen("Dados.txt", "w");
setlocale(LC_ALL, ""); //Função para exibir caracteres.
//Variaveis e função do jogo:
srand(time(NULL)); //semente da função rand.
int maquina = rand() % 3; //responsável pela vez da máquina.
int jogador = 0; //responsável pela vez do jogador.
int ganhou = 0;//variavel vai contar qnts vezes ganhou na partida e dps salvar em um arquivo.txt
int opcao = 0;
int playAgain = 0;
//Chamada de Funções:
menu();
opcao = lerOpc(opcao); //declarei uma variável para armazenar o valor retornado da função lerOpc.
//Parte final do código, com os algoritmos para jogar o jogo ou para ver as conquistas:
switch(opcao){
case UM: //Ou seja, usuário escolheu a opção JOGAR:
do{
system("cls"); //não usei clrscr() porque da erro no CodeBlocks: undefined reference to 'clrscr'
printf("\t\tPEDRA PAPEL TESOURA");
printf("\n\t\t\tby Matheus Marcelino");
printf("\n\t__________________________________________");
printf("\n\n\t[1] - Pedra");
printf("\n\t[2] - Papel");
printf("\n\t[3] - Tesoura");
printf("\n\t__________________________________________");
printf("\n\n\tVocê jogará com um computador.\n");
jogador = getch(); //lê a vez do jogador.
switch(maquina){ //switch para mostrar a decisão da máquina.
case 0:
printf("\n\t computador: Pedra.");
break;
case 1:
printf("\n\t computador: Papel.");
break;
case 2:
printf("\n\t computador: Tesoura.");
break;
}
switch(jogador){ //Switch de decidir se jogador ganhou, perdeu ou empatou.
case UM://jogador escolheu pedra
if(maquina == 0){
printf("\n\t Empate!");
}else if(maquina == 1){
printf("\n\t Derrota!");
}else if(maquina == 2){
printf("\n\t Vitória!");
++ganhou;
}
break;
case DOIS://jogador escolheu papel
if(maquina == 0){
printf("\n\t Vitória!");
++ganhou;
}else if(maquina == 1){
printf("\n\t Empate!");
}else if(maquina == 2){
printf("\n\t Derrota!");
}
break;
case TRES://jogador escolheu tesoura
if(maquina == 0){
printf("\n\t Derrota!");
}else if(maquina == 1){
printf("\n\t Vitória!");
++ganhou;
}else if(maquina == 2){
printf("\n\t Empate!");
}
break;
}
file = fopen("Dados.txt", "r");
if(file == NULL) return 1; //não abriu arquivo.
maquina = rand() % 3;//para não repetir a vez da maquina varias vezes
printf("\n\n\t Pressione 1 para Jogar Novamente.");
printf("\n\t__________________________________________");
playAgain = getch();
}while(playAgain == UM);
break;
case DOIS: //Ou seja, usuário escolheu a opção CONQUISTAS:
}
}