Gabriele 0 Posted May 13, 2020 Report Share Posted May 13, 2020 (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 by Gabriele Não sabia sobre "<>" Link to post Share on other sites
antseq 82 Posted May 13, 2020 Report Share Posted May 13, 2020 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 post Share on other sites
iron 11 Posted May 14, 2020 Report Share Posted May 14, 2020 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 post Share on other sites
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