Code:
void gp1_Ques(struct perg *p, char *usr1)
{
FILE *f; //apontador para ficheiro
f=fopen("gp1.dat", "r"); //abertura do ficheiro
int reg=0,reg1, i; //Variaveis contadoras de perguntas e random
int random; // Variável de random
int op, resposta; //Variáveis opções utilizadores
int qual, result=0; //Variáveis resultados
rewind(f); //retorna a posição corrente do ficheiro para o início
srand(time(NULL)); //função random
system("cls");
fseek(f, 0, SEEK_END);
reg=ftell(f) /sizeof *p;
fseek(f, 0 , SEEK_SET);
if (reg<=0) //condição que verifica se existem registos
{
printf ("Sem registos \n");
printf ("\n Necessario ter registos para jogar...\n");
return;
}
else
{
printf ("\n*=============================================================================*\n");
printf ("| >>>>Visualizao de perguntas<<<< |\n");
printf ("*=============================================================================*\n");
printf (" \n");
printf ("\n TOTAL de perguntas: %d \n",reg); //conta as perguntas
printf ("\n O seu score maximo sera: %d\n",reg/10); //pontuação máxima do jogo
qual = reg-19; //contagem minima para passar de fase
printf ("\n Para a qualificacao precisa de: %d\n",qual); //total minimo para passar fase
//testes para ver se funciona o random
random=rand()%reg; //função random
reg1 = random; //atribui a variavel reg o valor de random
}
printf("\n\n\n Quer comecar a jogar ?(Sim=1; Nao=0) \n");
printf ("*=============================================================================*\n");
scanf("%d", &op);
system("cls");
if(op==1)
{
for(i=0; i<=2;i++)
{
fseek(f, reg1 * sizeof *p, SEEK_SET);
fread(p, sizeof *p, 1, f);
printf("Bemvindo ao jogo %s", usr1);
printf("\nPergunta : %s", p->ques);
printf("\nOpcao 1 : %s",p->op1);
printf("\nOpcao 2 : %s",p->op2);
printf("\nOpcao 3 : %s",p->op3);
printf("\nOpcao 4 : %s",p->op4);
printf("\nResposta correta?\n");
scanf("%d", &resposta);
getchar();
if(resposta==p->res)
{
printf("\nRight answer...\n");
result++;
random=rand()%reg; //random
reg1 = random; //
fseek(f, reg1 * sizeof *p, SEEK_SET);
fread(p, sizeof *p, 1, f);
printf("\nPergunta : %s", p->ques);
printf("\nOpcao 1 : %s",p->op1);
printf("\nOpcao 2 : %s",p->op2);
printf("\nOpcao 3 : %s",p->op3);
printf("\nOpcao 4 : %s",p->op4);
printf("\nRight answer?\n");
scanf("%d", &resposta);
getchar();
if(resposta==p->res)
{
printf("\nRight answer\n");
result++;
}
else
{
printf("Wrong...\n");
}
}
else
{
printf("One mor chance \n");
random=rand()%reg; //random
reg1 = random; //
fseek(f, reg1 * sizeof *p, SEEK_SET);
fread(p, sizeof *p, 1, f);
printf("\nPergunta : %s", p->ques);
printf("\nOpcao 1 : %s",p->op1);
printf("\nOpcao 2 : %s",p->op2);
printf("\nOpcao 3 : %s",p->op3);
printf("\nOpcao 4 : %s",p->op4);
printf("\nRight answer?\n");
scanf("%d", &resposta);
getchar();
if(resposta==p->res)
{
printf("\nRight answer...\n");
result++;
}
else
{
printf("Wrong...\n");
}
}
}
}
else if (op==0)
{
jogo();
}
else
{
printf("\n Invalid option\n");
Sleep(2000);
jogo();
}
fclose(f);
}