Gabriele Posted May 13, 2020 at 11:55 AM Report Share #618117 Posted May 13, 2020 at 11:55 AM (edited) Olá! Não sabia ao certo qual título colocar, então, perdão. Eu estou tentando editar esse software de forma que ele contenha mais de 3 jogadas (melhor de 3) e que o jogador possa "parar" de jogar quando quiser (quando digitar 4), de forma que ni final mostre o placar. Porém, assim que eu compilo o código, ele mostra apenas o primeiro printf. #include <stdlib.h> #include <stdio.h> #include <time.h> #define PEDRA 1 #define PAPEL 2 #define TESOURA 3 int pontosJogador; int pontosComputador; void jogo(); void imprimeItem(int item); int verifica(int p1, int p2); int main(){ srand(time(NULL)); //usado para gerar numeros diferentes printf(" PEDRA - PAPEL - TESOURA \n"); int i; for(i=0; i!=4; i=i){ while(i != 4){ } jogo(); printf("-------------------------------------------------------------------------------\n"); } printf(" Total de Pontos\n"); printf(" Voce: %d \n", pontosJogador); printf(" Computador: %d \n", pontosComputador); printf("\n Obrigado por jogar!"); system("pause>nul"); return 0; } void jogo(){ int itemJogador; int itemComputador; printf("\n Escolha 1.Pedra 2.Papel 3.Tesoura 4.Sair\n Sua escolha: "); scanf("%d", &itemJogador); //jogador faz sua escolha itemComputador = rand()%3+1; //computador faz sua escolha printf("\n Voce -> "); imprimeItem(itemJogador); printf(" x "); imprimeItem(itemComputador); printf(" <- Computador.\n"); int ganhador = verifica(itemJogador, itemComputador); printf("\n"); if(ganhador == 1){ printf(" VOCE GANHOU!\n"); pontosJogador++; } else if(ganhador == 2){ printf(" COMPUTADOR GANHOU!\n"); pontosComputador++; } else{ printf(" EMPATOU!\n"); } printf("\n"); } void imprimeItem(int item){ if(item == PEDRA){ printf("PEDRA"); } else if(item == PAPEL){ printf("PAPEL"); } else{ printf("TESOURA"); } } int verifica(int p1, int p2){ /*Função que verifica qual jogador ganhou e retorna 1 ou 2 retorna 0 ao empatar*/ int ganhador; if(p1 == p2){ //empate ganhador = 0; } if(p1==PEDRA && p2==TESOURA){ ganhador = 1; } if(p1==PEDRA && p2==PAPEL){ ganhador = 2; } if(p1==PAPEL && p2==PEDRA){ ganhador = 1; } if(p1==PAPEL &&p2==TESOURA){ ganhador = 2; } if(p1==TESOURA && p2==PAPEL){ ganhador = 1; } if(p1==TESOURA && p2==PEDRA){ ganhador = 2; } return ganhador; } Edited May 13, 2020 at 12:46 PM by Gabriele Não sabia sobre "<>" Link to comment Share on other sites More sharing options...
antseq Posted May 13, 2020 at 07:22 PM Report Share #618118 Posted May 13, 2020 at 07:22 PM Salvo erro o problema está no seu primeiro "for" que não faz muito sentido: for(i=0; i!=4; i=i) deveria ser: for(i=1; i<4; i++) ou seja (i começa em 1; enquanto menor que 4; incrementa i) => repete 3 vezes (i=1; i=2; i=3) "3 jogadas" 1 Report Link to comment Share on other sites More sharing options...
iron Posted May 14, 2020 at 09:16 AM Report Share #618123 Posted May 14, 2020 at 09:16 AM int i; for(i=0; i!=4; i=i){ while(i != 4){ } Primeira iteração o "i" é igual a 0. Entras no ciclo for e logo a seguir entras num ciclo while infinito porque o "i" é diferente de 4. Por causa disso, a função jogo(); nunca é chamada. Cumprimentos, iron Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now