rajaba21 0 Denunciar post Postado Dezembro 5, 2013 Pessoal, Bom dia, fiz um jogo em c que é um labirinto, acontece que nesse jogo tenho que gravar o nome do jogador e sua pontuação, depois disso comparar e mostrar as 3 maiores pontuações, segue baixo o código completo. #include <stdio.h> #include <stdlib.h> //Definições do desenho do mapa #define SOLO 0 #define BARREIRA 1 #define VOCE 2 #define OBJETIVO 3 FILE *arq; int coluna_atual=1, linha_atual=1, nivel, subnivel, linha, coluna, opcao, contl, contc, contadorpontos=0;; char mov; //char nome[40]; //Mapas int mapa[10][10] = {{1,1,1,1,1,1,1,1,1,1}, {1,2,1,1,0,0,1,0,0,1}, {1,0,1,0,1,0,1,0,0,1}, {1,0,1,1,1,0,1,1,0,1}, {1,0,0,0,0,0,0,0,0,1}, {1,1,1,1,1,1,1,1,0,1}, {1,0,0,0,0,0,0,0,0,1}, {1,0,1,1,1,1,1,1,1,1}, {1,0,0,0,0,0,0,0,0,3}, {1,1,1,1,1,1,1,1,1,1}}; int mapa2[10][10]={ 1,1,1,1,1,1,1,1,1,1, 1,1,0,0,0,0,0,0,0,1, 1,1,0,0,0,0,0,0,0,1, 1,0,0,1,1,0,1,1,0,1, 1,1,0,1,1,0,1,1,0,1, 1,0,0,0,1,1,1,0,0,1, 1,1,0,0,0,0,1,1,0,1, 1,0,0,1,0,1,1,0,0,1, 1,1,1,1,0,0,1,1,0,3, 1,1,1,1,1,1,1,1,1,1}; int mapa22[20][20] = {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1, 1,1,1,1,0,1,1,0,1,1,0,0,0,0,0,1,1,1,0,1, 1,1,0,1,0,1,0,0,1,0,0,1,1,1,1,1,0,1,1,1, 1,0,0,1,1,1,1,1,1,1,0,1,0,0,0,1,0,0,0,1, 1,0,1,1,0,0,0,0,0,0,0,1,0,1,0,1,0,0,0,1, 1,0,1,0,0,1,1,0,1,1,1,1,0,0,0,1,1,1,0,1, 1,0,1,0,1,1,0,0,0,1,0,1,0,1,0,0,0,0,0,1, 1,0,1,0,1,1,0,1,0,1,0,0,0,1,0,1,1,0,1,1, 1,0,0,0,1,1,0,0,0,1,1,0,0,1,0,0,1,0,0,1, 1,1,0,0,1,1,1,0,0,0,0,0,0,1,0,0,1,1,0,1, 1,1,1,0,0,0,0,0,1,0,0,0,1,1,1,1,1,0,0,1, 1,0,0,0,0,0,1,0,0,0,1,1,1,0,0,0,0,1,1,1, 1,1,1,0,0,1,1,1,1,0,0,0,1,1,1,1,0,0,0,1, 1,0,0,1,0,1,0,0,1,1,1,1,1,0,0,1,0,1,0,1, 1,1,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1, 1,0,1,1,0,1,1,1,0,0,0,0,1,0,0,0,1,1,0,1, 1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,0,1,0,0,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,1}; struct JOGADOR { char nome[40]; int pontuacao, pontuacum; } JOGADOR; //Função que irá efetuar o desenho do mapa void desenhar_mapa() { switch (nivel) { case(1): { if (subnivel==1) { for (linha=0; linha<10; linha++) { for (coluna=0; coluna<10; coluna++) { if (mapa[linha][coluna]==VOCE) { printf ("i"); continue; } if (mapa[linha][coluna]==SOLO) printf (" "); if (mapa[linha][coluna]==BARREIRA) printf ("*"); if (mapa[linha][coluna]==OBJETIVO) printf ("+"); } printf ("\n"); } } if (subnivel==2) { for (linha=0; linha<10; linha++) { for (coluna=0; coluna<10; coluna++) { if (mapa2[linha][coluna]==VOCE) { printf ("i"); continue; } if (mapa2[linha][coluna]==SOLO) printf (" "); if (mapa2[linha][coluna]==BARREIRA) printf ("*"); if (mapa2[linha][coluna]==OBJETIVO) printf ("+"); } printf ("\n"); } } /*if (subnivel==3) { for (linha=0; linha<10; linha++) { for (coluna=0; coluna<10; coluna++) { if (mapa3[linha][coluna]==VOCE) { printf ("i"); continue; } if (mapa2[linha][coluna]==SOLO) printf (" "); if (mapa2[linha][coluna]==BARREIRA) printf ("*"); if (mapa2[linha][coluna]==OBJETIVO) printf ("+"); } printf ("\n"); } }*/ break; } case(2): { for (linha=0; linha<11; linha++) { for (coluna=0; coluna<11; coluna++) { if ((linha==linha_atual) && (coluna==coluna_atual)) { printf ("i"); continue; } if (mapa[linha][coluna]==SOLO) printf (" "); if (mapa[linha][coluna]==BARREIRA) printf ("*"); if (mapa[linha][coluna]==OBJETIVO) printf ("+"); } printf ("\n"); } } case(3): { for (linha=0; linha<12; linha++) { for (coluna=0; coluna<12; coluna++) { if ((linha==linha_atual) && (coluna==coluna_atual)) { printf ("i"); continue; } if (mapa[linha][coluna]==SOLO) printf (" "); if (mapa[linha][coluna]==BARREIRA) printf ("*"); if (mapa[linha][coluna]==OBJETIVO) printf ("+"); } printf ("\n"); } break; } case(4): { for (linha=0; linha<13; linha++) { for (coluna=0; coluna<13; coluna++) { if ((linha==linha_atual) && (coluna==coluna_atual)) { printf ("i"); continue; } if (mapa[linha][coluna]==SOLO) printf (" "); if (mapa[linha][coluna]==BARREIRA) printf ("*"); if (mapa[linha][coluna]==OBJETIVO) printf ("+"); } printf ("\n"); } break; } case(5): { for (linha=0; linha<14; linha++) { for (coluna=0; coluna<14; coluna++) { if ((linha==linha_atual) && (coluna==coluna_atual)) { printf("i"); continue; } if (mapa[linha][coluna]==SOLO) printf (" "); if (mapa[linha][coluna]==BARREIRA) printf ("*"); if (mapa[linha][coluna]==OBJETIVO) printf ("+"); } printf ("\n"); } break; } case(6): { for (linha=0; linha<15; linha++) { for (coluna=0; coluna<15; coluna++) { if ((linha==linha_atual) && (coluna==coluna_atual)) { printf ("i"); continue; } if (mapa[linha][coluna]==SOLO) printf (" "); if (mapa[linha][coluna]==BARREIRA) printf ("*"); if (mapa[linha][coluna]==OBJETIVO) printf ("+"); } printf ("\n"); } break; } case(7): { for (linha=0; linha<16; linha++) { for (coluna=0; coluna<16; coluna++) { if ((linha==linha_atual) && (coluna==coluna_atual)) { printf ("i"); continue; } if (mapa[linha][coluna]==SOLO) printf (" "); if (mapa[linha][coluna]==BARREIRA) printf ("*"); if (mapa[linha][coluna]==OBJETIVO) printf ("+"); } printf ("\n"); } break; } case(8): { for (linha=0; linha<17; linha++) { for (coluna=0; coluna<17; coluna++) { if ((linha==linha_atual) && (coluna==coluna_atual)) { printf("i"); continue; } if (mapa[linha][coluna]==SOLO) printf (" "); if (mapa[linha][coluna]==BARREIRA) printf ("*"); if (mapa[linha][coluna]==OBJETIVO) printf ("+"); } printf ("\n"); } break; } case(9): { for (linha=0; linha<18; linha++) { for (coluna=0; coluna<18; coluna++) { if ((linha==linha_atual) && (coluna==coluna_atual)) { printf("i"); continue; } if (mapa[linha][coluna]==SOLO) printf (" "); if (mapa[linha][coluna]==BARREIRA) printf ("*"); if (mapa[linha][coluna]==OBJETIVO) printf ("+"); } printf ("\n"); } break; } case(10): { for (linha=0; linha<19; linha++) { for (coluna=0; coluna<19; coluna++) { if ((linha==linha_atual) && (coluna==coluna_atual)) { printf ("i"); continue; } if (mapa[linha][coluna]==SOLO) printf (" "); if (mapa[linha][coluna]==BARREIRA) printf ("*"); if (mapa[linha][coluna]==OBJETIVO) printf ("+"); } printf ("\n"); } break; } } } void ranking() { } void creditos() { } void gravarranking() { arq = fopen("ranking.dat", "a"); if (arq == NULL) { printf("Ocorreu um problema ao abrir o arquivo"); } else { fputs(JOGADOR.nome, arq); fputs("\t", arq); //fputs(JOGADOR.pontuacum, arq); fputs("\n", arq); if(ferror(arq)) { printf("\nErro ao gravar nome"); } } fclose(arq); } /*void imprimeranking(); { int valor, menor1=99999999, menor2=99999998, menor3=99999997; char nmenor1[40], nmenor2[40], nmenor3[40]; arq = fopen("ranking.dat", "r"); if (arq == NULL) { printf("Ocorreu um problema ao abrir o arquivo"); } else { while (!feof(arq)) { fgets(JOGADOR,10,arq); if(ferror(arq)) { printf("\nErro ao ler arquivo"); } else { valor=atoi(JOGADOR.pontuacum); //printf("\n%s", str); //printf("\t%d",valor); if (valor<menor1) { if (valor<menor2) { if (valor<menor3) { menor3=valor; strcpy(nmenor3[40],JOGADOR.nome); } menor2=valor; strcpy(nmenor2[40],JOGADOR.nome); } menor1=valor; strcpy(nmenor1[40],JOGADOR.nome); } } } printf ("\nRanking!"); printf ("\n%s\t\t5d", nmenor3, menor3); printf ("\n%s\t\t5d", nmenor2, menor2); printf ("\n%s\t\t5d", nmenor2, menor2); system ("pause"); } }*/ void selecao() { do { printf("\n ______ _ _ ___ "); printf("\n /_____/ | | | | | _| "); printf("\n | | | |==| | | =_ "); printf("\n |_| |_| |_| |___| "); printf("\n "); printf("\n ___ _ ______ "); printf("\n | _| | | /_____/ "); printf("\n | =_ X | | | | "); printf("\n |___| |_| |_| "); printf("\n "); printf("\n "); printf("\t\t\t\t 1 START GAME\n"); printf("\t\t\t 2 RANKING\n"); printf("\t\t\t\t 3 CREDITS\n"); printf("\t\t\t\t\t 4 SAIR\n"); printf("\nDigite o numero da opcao: "); scanf("%d", &opcao); switch (opcao) { case (1): { printf ("Digite seu nome: "); fflush (stdin); gets (JOGADOR.nome); printf ("\n%s, entre com o Nivel desejado (1-10): ", JOGADOR.nome); fflush (stdin); scanf ("%d", &nivel); if (nivel >=1 && nivel <=10) { printf ("\nEntre com o Sub Nivel desejado (1-3): "); fflush (stdin); scanf ("%d", &subnivel); system ("cls"); } else { exit (0); } opcao=4; break; } case (2): { ranking (); break; } case (3): { creditos (); break; } case (4): { break; } } }while (opcao != 4); } void movimentacao() { if (opcao==4 && nivel != 1 && nivel != 2 && nivel != 3) { system("exit"); } else { contadorpontos=0; while ((mov!='x') && (mov!='X')) { //contadorpontos++; system ("cls"); desenhar_mapa (); printf ("\nX para sair!\n"); printf ("\n\n (W)\n(A)+(D)\n (S)\n\n"); //Controle fflush (stdin); mov=getch(); if ((mov != 'w') && (mov != 'W') && (mov != 's') && (mov != 'S') && (mov != 'a') && (mov != 'A') && (mov != 'd') && (mov != 'D') && (mov != 'x') && (mov != 'X')) { printf ("\nPOR FAVOR PRESSIONE UMA DAS TECLAS VALIDAS!\n"); getchar (); getchar (); } if ((mov == 'w') || (mov == 'W')) { linha_atual=linha_atual-1; //Se não for solo ou objetivos retornará posição anterior if ((mapa[linha_atual][coluna_atual] != SOLO) && (mapa[linha_atual][coluna_atual] != OBJETIVO)) { linha_atual=linha_atual+1; JOGADOR.pontuacao=JOGADOR.pontuacao+1; printf ("\nMovimento Invalido!\n"); system ("pause"); getchar (); getchar (); } if (mapa[linha_atual][coluna_atual] == OBJETIVO) { JOGADOR.pontuacao=JOGADOR.pontuacao+1; printf ("Voce chegou ao final!\n\n"); system ("pause"); selecao (); break; } if (mapa[linha_atual][coluna_atual]==SOLO) { JOGADOR.pontuacao=JOGADOR.pontuacao+1; mapa[linha_atual][coluna_atual]=VOCE; mapa[linha_atual+1][coluna_atual]=SOLO; } } if ((mov == 's') || (mov == 'S')) { linha_atual=linha_atual+1; //Se não for solo ou objetivos retornará posição anterior if ((mapa[linha_atual][coluna_atual] != SOLO) && (mapa[linha_atual][coluna_atual] != OBJETIVO)) { linha_atual=linha_atual-1; printf ("\nMovimento Invalido!\n"); JOGADOR.pontuacao=JOGADOR.pontuacao+1; system ("pause"); getchar (); getchar (); } if (mapa[linha_atual][coluna_atual] == OBJETIVO) { printf ("Voce chegou ao final!\n\n"); system ("pause"); selecao (); break; } if (mapa[linha_atual][coluna_atual]==SOLO) { JOGADOR.pontuacao=JOGADOR.pontuacao+1; mapa[linha_atual][coluna_atual]=VOCE; mapa[linha_atual-1][coluna_atual]=SOLO; } } if ((mov == 'd') || (mov == 'D')) { coluna_atual = coluna_atual + 1; //Se não for solo ou objetivos retornará posição anterior if ((mapa[linha_atual][coluna_atual] != SOLO) && (mapa[linha_atual][coluna_atual] != OBJETIVO)) { JOGADOR.pontuacao=JOGADOR.pontuacao+1; coluna_atual=coluna_atual-1; printf ("\nMovimento Invalido!\n"); system ("pause"); getchar (); getchar (); } if (mapa[linha_atual][coluna_atual] == OBJETIVO) { JOGADOR.pontuacao=JOGADOR.pontuacao+1; printf ("Voce chegou ao final!\n\n"); system ("pause"); selecao (); break; } if (mapa[linha_atual][coluna_atual]==SOLO) { JOGADOR.pontuacao=JOGADOR.pontuacao+1; mapa[linha_atual][coluna_atual]=VOCE; mapa[linha_atual][coluna_atual-1]=SOLO; } } if ((mov == 'a') || (mov == 'A')) { coluna_atual=coluna_atual-1; //Se não for solo ou objetivos retornará posição anterior if ((mapa[linha_atual][coluna_atual] != SOLO) && (mapa[linha_atual][coluna_atual] != OBJETIVO)) { JOGADOR.pontuacao=JOGADOR.pontuacao+1; coluna_atual=coluna_atual+1; printf ("\nMovimento Invalido!\n"); system ("pause"); getchar (); getchar (); } if (mapa[linha_atual][coluna_atual] == OBJETIVO) { JOGADOR.pontuacao=JOGADOR.pontuacao+1; printf ("Voce chegou ao final!\n\n"); system ("pause"); selecao (); break; } if (mapa[linha_atual][coluna_atual]==SOLO) { JOGADOR.pontuacao=JOGADOR.pontuacao+1; mapa[linha_atual][coluna_atual]=VOCE; mapa[linha_atual][coluna_atual+1]=SOLO; } } } } JOGADOR.pontuacum=JOGADOR.pontuacum+JOGADOR.pontuacao; gravarranking(); } main() { fflush (stdin); arq = fopen("ranking.dat", "r"); if (arq == NULL) { arq = fopen("ranking.dat", "w"); if (arq == NULL) { printf("Ocorreu um problema ao criar o arquivo"); } else { printf ("Arquivo ranking.dat criado com sucesso!\n"); system ("pause"); } } fclose(arq); selecao (); movimentacao (); } Por favor me ajudem! Compartilhar este post Link para o post Compartilhar em outros sites
reebr 94 Denunciar post Postado Dezembro 5, 2013 Você pode salvar o Registro inteiro: http://www.cplusplus.com/reference/cstdio/fwrite/ http://www.cplusplus.com/reference/cstdio/fread/ Compartilhar este post Link para o post Compartilhar em outros sites