The 5 High Scores in C

  • irwingato
    Likes 0

    Problem Description

    I need to save the five high scores and show them to the users in the menu, in trying to save and show up the high scores but i couldn’t do this here is my code

    /*
        Jogo interativo Tetris implementado em linguagem C para uso 
        no console (terminal de comandos)
    
        Para executar:
            > start programa.exe
    
        Autor: Irwing Seiji Ato
        Data: 28/08/2019
    
    */
    
    #include "car_race.h"
    #include "display.h"
    #include <stdlib.h>
    #include <time.h>
    #include <locale.h>
    #define DEBUG 1
    
    /*
        Parte principal do programa, responsável por iniciar e 
        chamar as funções auxiliares.
    */
    int  Novojogo(){
        char matrix[ROWS][COLUMNS];
        //posição inicial do carro principal
        Carro principal;
    
        principal.i = ROWS-4;
        principal.j = COLUMNS/2;
        principal.height = 4;
        principal.width = 5; 
        
        //posição inicial do carro inimigo
        Carro inimigo;
        
        inimigo.i = 0;
        inimigo.j = COLUMNS-3;
        inimigo.height = 4;
        inimigo.width = 5;
    
        Carro inimigo2;
        
        inimigo2.j = COLUMNS-3;
        inimigo2.height = 4;
        inimigo2.width = 5;
    
        Carro inimigo3;
    
        inimigo3.j = COLUMNS-3;
        inimigo3.height = 4;
        inimigo3.width = 5;
    
        int keypressed=0;
        int cont = 0;
        int velocidade = 3;
        int faixa1 = 0;
        int random = 0;
        int score = 0;
        char nome[100];
        int jogadorscore = 0;
        FILE *fp;
        //inicializando matriz
        init(matrix);
    
        //apagar o cursor da tela
        ShowConsoleCursor(0);
        system("cls");
        
        //animação do jogo
        while(keypressed != ESC){        
            gotoxy(0,0);
            ShowConsoleCursor(0);
            #if DEBUG == 1
            printf("posicao = (%d, %d)\n", inimigo.i, inimigo.j);
            printf("dimensao = (%d, %d)\n", inimigo.width, inimigo.height);
            #endif    
    
            //printo o carros na tela        
            drawCarro(matrix, &principal, PIXEL);
            drawCarro(matrix, &inimigo, PIXEL);
            drawCarro(matrix, &inimigo2, PIXEL);
            drawCarro(matrix, &inimigo3, PIXEL);
            //mostro a matriz na tela
            printf("SCORE: %d \n", score);
            if(score< 40000){
                printf("Fase: 1");
            }
            else{
                printf("Fase: 2");
            }
            printMatrix(matrix,cont,faixa1);             
            int i;
            
            if(score >= 40000){ 
            if(velocidade == 3){
                        velocidade = 1;
                    }
            }
    
            if(!collisionCar (matrix, principal)){
            drawCarro(matrix, &principal, EMPTY);
            drawCarro(matrix, &inimigo, EMPTY);
            drawCarro(matrix, &inimigo2, EMPTY);
            drawCarro(matrix, &inimigo3, EMPTY);      
    
            if((cont%velocidade)==0){
            //alternar animação estrada
                if(faixa1 == 0) faixa1 = 1;
                else faixa1 = 0;
    
            inimigo2.i++;
            inimigo3.i++;
    
            if(inimigo2.i == 25)score += 50;
    
            else if(inimigo3.i == 25)score += 50;
    
            if(inimigo.i < (ROWS)){ inimigo.i++;
            if(inimigo.i == 25)score += 50;
            }      
                
                srand(time(NULL));
                random = (rand()%8)+1;
                if(random == 1){
                    if(inimigo3.i == ROWS -3){
                        initCar(&inimigo);
                        inimigo.j = 4;
                    }
                    if(inimigo.i == 8){
                        initCar(&inimigo2);
                        inimigo2.j = 4;
                    }    
                    if(inimigo2.i == 8){
                        initCar(&inimigo3);
                        inimigo3.j = 4;
                    }
                }
    
                else if(random == 2){
                    if(inimigo3.i == ROWS -3){
                        initCar(&inimigo);
                        inimigo.j = 4;
                    }
                    if(inimigo.i == 8){
                        initCar(&inimigo2);
                        inimigo2.j = COLUMNS-3;
                    }
                    if(inimigo2.i == 8){
                        initCar(&inimigo3);
                        inimigo3.j = 4;
                    }
                }
    
                else if(random == 3){
                    if(inimigo3.i == ROWS -3){
                        initCar(&inimigo);
                        inimigo.j = 4;
                    }
                    if(inimigo.i == 8){
                        initCar(&inimigo2);
                        inimigo2.j = 4;
                    }
                    if(inimigo2.i == 8){
                        initCar(&inimigo3);
                        inimigo3.j = COLUMNS-3;
                    }
                }
    
                else if(random == 4){
                    if(inimigo3.i == ROWS -3){
                        initCar(&inimigo);
                        inimigo.j = 4;
                    }
                    if(inimigo.i == 8){
                        initCar(&inimigo2);
                        inimigo2.j = COLUMNS-3;
                    }
                    if(inimigo2.i == 8){
                        initCar(&inimigo3);
                        inimigo3.j = COLUMNS-3;
                    }
                }
    
                else if(random == 5){
                    if(inimigo3.i == ROWS -3){
                        initCar(&inimigo);
                        inimigo.j = COLUMNS-3;
                    }
                    if(inimigo.i == 8){
                        initCar(&inimigo2);
                        inimigo2.j = 4;
                    }
                    if(inimigo2.i == 8){
                    initCar(&inimigo3);
                    inimigo3.j = 4;
                    }
                }           
    
                else if(random == 6){
                    if(inimigo3.i == ROWS -3){
                        initCar(&inimigo);
                        inimigo.j = COLUMNS-3;
                    }
                    if(inimigo.i == 8){
                        initCar(&inimigo2);
                        inimigo2.j = COLUMNS-3;
                    }
                    if(inimigo2.i == 8){
                        initCar(&inimigo3);
                        inimigo3.j = 4;
                    }
                }
    
                else if(random == 7){
                    if(inimigo3.i == ROWS -3){
                        initCar(&inimigo);
                        inimigo.j = COLUMNS-3;
                    }
                    if(inimigo.i == 8){
                        initCar(&inimigo2);
                        inimigo2.j = 4;
                    }
                    if(inimigo2.i == 8){
                        initCar(&inimigo3);
                        inimigo3.j = COLUMNS-3;
                    }
                }
    
                else if(random == 8){
                    if(inimigo3.i == ROWS -3){
                        initCar(&inimigo);
                        inimigo.j = COLUMNS-3;
                    }
                    if(inimigo.i == 8){
                        initCar(&inimigo2);
                        inimigo2.j = COLUMNS-3;
                    }
                    if(inimigo2.i == 8){
                        initCar(&inimigo3);
                        inimigo3.j = COLUMNS-3;
                    }
                }        
            }
            cont++; 
            }else{
                struct Pontuacao novapontuacao;
                printf("Fim de jogo\n");
                system("cls");
                fp = fopen("highscores.bin","ab");
                printf("Digite o seu nome:");
                fflush(stdin);
                gets(nome);
                jogadorscore = score;
                fwrite(&novapontuacao,sizeof(struct Pontuacao), 1, fp);                           
                break;
            }
    
            //lendo teclas
            keypressed = 0;         
            if(kbhit()) keypressed = getch();            
            if(keypressed == ARROWS) keypressed = getch();
    
            switch(keypressed){
                case TECLA_a:
                case TECLA_A:
                case LEFT: 
                    if(principal.j - (principal.width/2) > 2) principal.j--; //vai para esquerda
                break; 
                case TECLA_d:
                case TECLA_D:
                case RIGHT: 
                    if(principal.j + (principal.width/2) < (COLUMNS-1)) principal.j++; //vai para a direita 
                break;
                case TECLA_ESPACO:
                    if(velocidade == 3){
                        velocidade = 1;
                    }else{
                        velocidade = 3;
                    }
                break;
                }
            }
    
        return 0;
    }
    
    void Menu(){
    	system("color 0E");
    	system("cls");
    	printf("--------------------------------------------------\n\n");
    	printf("\t\tCar Racing \n");
    	printf("__________________________________________________\n ");
    	printf("1-Novo jogo\n ");
    	printf("2-High Scores\n ");
    	printf("3-Sair\n ");	
    	printf("---------------------------------------------------\n\n");
    }
    
    void Highscores(){
        struct Pontuacao novapontuacao;
        int i
        fp = fopen("highscores.bin", "rb");
        while(fread(&novapontuacao, sizeof(struct Pontuacao), 1 fp)){
            for(i = 0; i<5; i++){
    		for (j = 0; j<5-i-1; j++){
    			if(a[j]> a [j+1]){
    				aux = a[j];
    				a[j] = a[j+1];
    				a[j+1] = aux;
    			}
    		}
    	}
        }
    }
    
    int main(){
        int opcao;    
        while(opcao != 3){
            Menu();        
            printf("\nEntre com a opcao desejada:");
            scanf("%d",&opcao);
    
            switch(opcao){
                case 1: Novojogo();break;
                case 2: Highscores();break;
                case 3: exit(0); 
            }
        }
    }
    

     

  • Sonar Systems admin
    Likes 0

    What happens?

Login to reply