Jump to content

Jogo do placard


Fernando Costa

Recommended Posts

Fiz isto alguem poderia dar uma sugestão para melhorar isto??

Cumprimentos

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
#include <string.h>
//funçao para gerar golos em futebol americano e basquetebol visto que as pontuaçoes sao superiores as do futebol
int Golo(){
    int x=rand()%100;//gera um numero de o a 100
    return x;
}
//funçao que calcula o ganho monetario
float Ganho(float a, float b){//a=cota para o resultado b=aposta
    int ganho=a*b;//multiplica a cota pela a posta
    return ganho;
}
//funçao para gerar resultados de futebol
int Golos(){
    int x=rand() % 10;//gera um numero entre o 0 e 10
    return x;
}
//função para gerar cotas
float Cotas(){
    int x;
    x=rand() % 100;//gera um numerp entre 0 e 100
    x=x/10;//divide esse numero por 11 para criar um numero mais peque e com casas decimais
    x=x+1;//soma um pois o minimo de cota é 1.00
    return x;
}
//função que serve para mostrar a lista de jogos
char Mostra(char url[]){
        char ch;//determina que é um arquivo par escrever
        FILE *arq;//identifica o arquivo(arq) como file em uso
        arq = fopen(url, "r");//abre o arquivo apenas em modo de leitura("r")
        while( (ch=fgetc(arq))!= EOF )//enquanto houver caracteres continua a leitura dos mesmos
        putchar(ch);//coloca os caracterees na consola
        fclose(arq);//fecha o arquivo
    }
    
int Pontos(){
    int x=rand()%2;//gera um numero de o a 100
    return x;
}
int Ponto(){
    int x=rand()%2;//gera um numero de o a 100
    return x;
}
int main(int argc, char *argv[]) {
    int opcao;
    float carregado=0;//pois o saldo inicial é zero
    float aposta;
    while(opcao!=5){
    printf("Selecione a sua opcao\n1-Ver/Carregar saldo\n2-Jogar\n3-Listar os jogos dispiniveis\n4-Gravar\n5-Sair\n");
    scanf("%i", &opcao);//recebe a opcao
    if(opcao==1){//o utilizador pode ver e carrega o saldo
        int opcao2;
            printf("O seu saldo: %.3f euros\nDeseja carregar?\n1(sim) 2(nao)\n",carregado);
            scanf("%i", &opcao2);//recebe se pertender carregar
            if(opcao2==1){//caso pertenda carregar
            float a;
                printf("Com quanto deseja carregar?\n");
                scanf("%f", &a);//recebe a quantia
                carregado=carregado+a;//atualiza saldo
                printf("\n");
            }
            else//caso nao pertenda carregar
            {printf("Nao pode jogar\n\n");}
    }
    if(opcao==2){//o utlizador faz apostas
        int modalidade;
            printf("Qual a modalidade em que pertende apostar?\n1-Tenis\n2-Futebol\n3-Basquetebol\n");
            scanf("%i", &modalidade);
            if(modalidade==1){//o utilizador escolhe Tenis como modalidade
                    int jogo;
                    float a=Cotas();//cota vitoria visitada
                    float c=Cotas();//cota vitoria visitante
                    Mostra("tenis.txt");//metodo que escreve os jogos disponiveis
                    printf("\n");
                    printf("Em que jogo deseja apostar?\n");
                    scanf("%i",&jogo);//recebe a indicaçao do jogo
                    printf("----------COTAS---------\n");
                    printf("CASA %.3f  %.3f FORA\n",a,c);//apresenta as cotas
                    printf("Quanto pertende apostar?\n");
                    scanf("%f", &aposta);//recebe a aposta
                    if(aposta<=carregado){//caso possua o dinheiro que pertende apostar
                        int e;
                        printf("Em que resultado?\n1(Vitoria Visitado) 2(Vitoria Visitante)\n");
                        scanf("%i", &e);//recebe o prognostico
                        int w=Pontos();//gera pontos visitado
                        int z=Ponto();//gera pontos visitante
                        if(w>z&&e==1){//caso escolha vitoria do visitado
                            printf("Resultado\nCASA %.1i VS %.1i FORA\n",w, z);    
                            float x=Ganho(a, aposta);//funçao dos ganhos
                            carregado=carregado+x;//atualiza o slado
                            printf("O seu saldo atual e: %.3f euros", carregado);//mostra o saldo atualizado
                        }
                        if(w<z&&e==2){//casoescolha vitoria de visitante
                            printf("Resultado\nCASA %.1i VS %.1i FORA\n",w, z);    
                            float x=Ganho(c, aposta);//funçao dos ganhos
                            carregado=carregado+(x-aposta);//atualiza o slado
                            printf("O seu saldo atual e: %.3f euros", carregado);//mostra o saldo atualizado
                        }
                        if(w==z){//Como no tenis não há empates
                            w=2;
                            z=1;
                            printf("Resultado\nCASA %.1i VS %.1i FORA\n",w, z);
                            if(e==1){
                                float x=Ganho(a, aposta);//funçao dos ganhos
                                carregado=carregado+(x-aposta);//atualiza o slado
                                printf("O seu saldo atual e: %.3f euros", carregado);//mostra o saldo atualizado
                            }
                            if(e==2){
                                float x=Ganho(a, aposta);//funçao dos ganhos
                                carregado=carregado-aposta;//atualiza o slado
                                printf("O seu saldo atual e: %.3f euros", carregado);//mostra o saldo atualizado
                            }    
                        }    
                        else{
                        printf("Perdeu o que apostou\n");
                        carregado=carregado-aposta;//atualiza o saldo
                        printf("O seu saldo e : %.3f euros",carregado);//mostra o saldo atualizado
                        }
                    }
                    if(aposta>carregado)
                    {printf("Nao possui essa quantida\n");}
            }
            if(modalidade==2){//o utilizador escolhe Futebol como modalidade
                    int jogo;
                    float a=Cotas();//cota vitoria visitado
                    float b=Cotas();//cota empate
                    float c=Cotas();//cota vitoria visitante
                    Mostra("futebol.txt");//metodo que escreve os jogos disponiveis
                    printf("Em que jogo deseja apostar?\n");
                    scanf("%i",&jogo);//recebe a indicaçao do jogo
                    printf("----------COTAS---------\n");
                    printf("CASA %.3f %.3f %.3f FORA\n",a,b,c);//apresenta as cotas
                    printf("Quanto pertende apostar?\n");
                    scanf("%f", &aposta);//recebe a aposta
                    if(aposta<=carregado){//caso possua o dinheiro que pertende apostar
                        int e;
                        printf("Em que resultado?\n1(Vitoria Visitado) 2(Empate) 3(Vitoria Visitante)");
                        scanf("%i", &e);//recebe o prognostico
                        int w=Golos();//gera golos visitado
                        int z=Golos();//gera golos visitante
                        printf("Resultado\nCASA %.1i VS %.i FORA\n",w, z);
                        if(w==z&&e==2){//caso escolha empate
                            float x=Ganho(b,aposta);//funçao dos ganhos
                            carregado=carregado+(x-aposta);//atualiza o saldo
                            printf("O seu saldo atual e: %.3f euros", carregado);//mostra o slado atualizado
                        }
                        if(w>z&&e==1){//caso escolha vitoria do visitado    
                            float x=Ganho(a, aposta);//funçao dos ganhos
                            carregado=carregado+x;//atualiza o saldo
                            printf("O seu saldo atual e: %.3f euros", carregado);//mostra o saldo atualizado
                        }
                        if(w<z&&e==3){//casoescolha vitoria de visitante
                            float x=Ganho(c, aposta);//funçao dos ganhos
                            carregado=carregado+x;//atualiza o saldo
                            printf("O seu saldo atual e: %.3f euros", carregado);//mostra o saldo atualizado
                        }
                        else
                        {printf("Perdeu o que apostou\n");
                        carregado=carregado-aposta;//atualiza o saldo
                        printf("O seu saldo e : %.3f euros",carregado);//mostra o saldo atualizado
                        }
                    }
                    if(aposta>carregado)
                    {printf("Nao possui essa quantida\n");}
            }
            if(modalidade==3){//o utilizador escolhe Basquetebol como modalidade
                    int jogo;
                    float a=Cotas();//cota vitoria visitado
                    float b=Cotas();//cota empate
                    float c=Cotas();//cota vitoria visitante
                    Mostra("nba.txt");//metodo que escreve os jogos disponiveis
                    printf("Em que jogo deseja apostar?\n");
                    scanf("%i",&jogo);//recebe a indicaçao do jogo
                    printf("----------COTAS---------\n");
                    printf("CASA %.3f %.3f %.3f FORA\n",a,b,c);//apresenta as cotas
                    printf("Quanto pertende apostar?\n");
                    scanf("%f", &aposta);//recebe a aposta
                    if(aposta<=carregado){//caso possua o dinheiro que pertende apostar
                        int e;
                        printf("Em que resultado?\n1(Vitoria Visitado) 2(Empate) 3(Vitoria Visitante)");
                        scanf("%i", &e);//recebe o prognostico
                        int w=Golos();//gera golos visitado
                        int z=Golos();//gera golos visitante
                        printf("Resultado\nCASA %.1i VS %.i FORA\n",w, z);
                        if(w==z&&e==2){//caso escolha empate
                            float x=Ganho(b,aposta);//funçao dos ganhos
                            carregado=carregado+x;//atualiza o saldo
                            printf("O seu saldo atual e: %.3f euros", carregado);//mostra o saldo atualizado
                        }
                        if(w>z&&e==1){//caso escolha vitoria do visitado    
                            float x=Ganho(a, aposta);//funçao dos ganhos
                            carregado=carregado+x;//atualiza o saldo
                            printf("O seu saldo atual e: %.3f euros", carregado);//mostra o salod atualizado
                        }
                        if(w<z&&e==3){//casoescolha vitoria de visitante
                            float x=Ganho(c, aposta);//funçao dos ganhos
                            carregado=carregado+x;//atualiza o saldo
                            printf("O seu saldo atual e: %.3f euros", carregado);//mostra o saldo atualizado
                        }
                        else
                        {printf("Perdeu o que apostou\n");
                        carregado=carregado-aposta;//atualiza o saldo
                        printf("O seu saldo e : %.3f euros",carregado);//mostra o saldo atualizado
                        }
                    }
                    if(aposta>carregado)
                    {printf("Nao possui essa quantida\n");}
            }
    }
    if(opcao==3){//lidar os jogos disponiveis
            printf("O jogos disponiveis sao:\n");
            Mostra("lista.txt");//usa a funçao que permite mostrar o ficheiro com os jogos
    }
    if(opcao==4){//grava num ficheiro .txt de nome Resultadoos todos os resultados do jogos
        srand(time(NULL));
        char url[]=("Resultadoos.txt");
        FILE*arq;
        arq=fopen(url,"w");
        fprintf(arq,"Resultados de Tenis\n\n");
        //escreve num ficheiro todos os jogos de Tenis
                fprintf(arq,"Resultado\nJOGO 1 CASA %.1i VS %.1i FORA\n",2, 1);
                fprintf(arq,"Resultado\nJOGO 2 CASA %.1i VS %.1i FORA\n",0,2);
                fprintf(arq,"Resultado\nJOGO 3 CASA %.1i VS %.1i FORA\n",1, 2);
                fprintf(arq,"Resultado\nJOGO 4 CASA %.1i VS %.1i FORA\n",2, 0);
                fprintf(arq,"Resultado\nJOGO 5 CASA %.1i VS %.1i FORA\n",2, 1);
        fprintf(arq,"Resultados de Futebol\n\n");
        int j;
        for(j=1;j<31;j++){//escreve num ficheiro todos os jogos de futebol
            int w=Golos();
            int z=Golos();
            fprintf(arq,"JOGO %i CASA %.1i VS %.1i FORA\n",j,w,z);
        }
        fprintf(arq,"Resultados da NBA\n\n");
        int h;
        for(h=1;h<11;h++){//escreve num ficheiro todos os resultados de Basquetebol
            fprintf(arq,"JOGO %.i CASA %.1i VS %.1i FORA\n",h,Golo(),Golo());
        }        
    }
}
    return 0;
}
Link to comment
Share on other sites

isso é uma pergunta que depende sempre do teu nível de conhecimento da linguagem ... acredito que se fosse meter as mãos nisso não irias perceber o que tinha feito

o melhor seria descreveres alguma secção de código que não te pareça bem, e poderemos começar por ai

IRC : sim, é algo que ainda existe >> #p@p
Link to comment
Share on other sites

(A minha primeira tentativa de ajuda)

 

Boas...

 

Depois de uma olhadela rápida...

 

Se fosse EU...

Criava funções para os "menus"... e também para muito do código que esta no main... Tens uma função principal muito "pesada / cheio" .

Tens duas funções que fazem a mesma coisa  (linha 39 e 43)

Para mim as funções as funções onde retornas um valor rand são todas a mesma coisa, eu criava uma só e mediante uma dado valor max  assim retornava um valor.

Tu incluíste a biblioteca time.h mas não lhe estas a dar uso (certo?), vê isto -> https://www.tutorialspoint.com/c_standard_library/c_function_rand.htm

Em vez de "if's" eu optaria por  "switch case"

Não testei o teu código e só olhei mesmo de raspão... por isso não tenho muito mais para opinar...

Se quiseres mais alguma opinião da minha parte e só pedir.   

Abração... e boas entradas...

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.