JokenPo em C

Publicado por Angelito Monteiro Goulart (última atualização em 16/09/2009)

[ Hits: 32.035 ]

Homepage: http://angelitomg.com

Download jokenpo.c




Jogo de JokenPo (pedra, papel, tesoura) implementado em C com um mini sistema de inteligência artificial.

  



Esconder código-fonte

/*
* JokenPo
*
* Angelito M. Goulart
*
* Setembro/2009
*/
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int pontos_jogador=0, pontos_cpu=0;
main()
{
    jokenpo();
}
int jokenpo()
{
    int jogador, cpu;
    printf ("---JokenPo---\n");
    printf ("%d Jogador X CPU %d\n", pontos_jogador, pontos_cpu);
    printf ("-------------\n");
    printf ("0. Pedra\n");
    printf ("1. Papel\n");
    printf ("2. Tesoura\n");
    printf ("3. Sair\n");
    scanf ("%d", &jogador);
    if (jogador < 0 || jogador >=3)
    {
        exit(0);
    }
    srand(time(NULL));
    cpu = rand() % 3; //gera um numero aleatorio
    switch(cpu)
    {
        case 0: printf ("CPU -> Pedra\n"); break;
        case 1: printf ("CPU -> Papel\n"); break;
        case 2: printf ("CPU -> Tesoura\n"); break;
    }
    if ((jogador == 0 && cpu==2) || (jogador == 1 && cpu == 0) || (jogador == 2 && cpu == 1)) //verifica se o jogador venceu
        {
            printf("Voce venceu!\n");
            pontos_jogador++;
            jokenpo();
        }
    if (jogador == cpu) //verifica se houve empate
        {
            printf ("Empate!\n");
            jokenpo();
        }
    else
        {
            printf ("CPU venceu!\n");
            pontos_cpu++;
            jokenpo();

        }
        return 0;
}

Scripts recomendados

Os cincos primeiros termos da séries de fourier

Jogo Tetris em C - parte 2

Olá mundo no GTK

Goldbach

Boletim Escolar Com Manipulação de Arquivo


  

Comentários
[1] Comentário enviado por ricardok2 em 16/09/2009 - 12:50h

Cara, essa rand() realmente gera números aleatório ou ele gera uma sequência que se repete?
Há muito tempo atrás eu tentei usar ele para um joguinho também, mas não funcionou corretamente ...

[2] Comentário enviado por julianluis em 16/09/2009 - 13:40h

mini sistema de inteligência artificial? onde?

[3] Comentário enviado por angelito em 16/09/2009 - 17:28h

"Mini sistema de inteligencia artificial" foi apenas um apelido, já que o jogador joga contra a maquina ^^

[4] Comentário enviado por Gabriel_Silva em 19/09/2009 - 19:58h

Existe um problema grave no programa. A função jokenpo() é recursiva e permite um loop indefinido.
Aqui, especificamente, será difícil ocorrer um stack overflow, pois o programa interage com um humano e dificilmente este jogará mais do que algumas dezenas de vezes sem sair do programa. Fica a dica para tomar cuidado com funções recursivas em outras aplicações.

[5] Comentário enviado por AnderRanquetat em 25/04/2016 - 11:56h

Se o jogo original a ideia é de que pedra vence tesoura, tesoura corta papel, e papel embrulha pedra, agora a lógica (bem vulcana) será: a tesoura corta o papel, o papel cobre a pedra, a pedra destrói o lagarto, o lagarto envenena spock, spock destrói a tesoura, a tesoura decapita o lagarto, o lagarto come o papel, o papel desaprova spock, spock vaporiza a pedra, a pedra destrói a tesoura. Mantém-se os gestos para a pedra (mão fechada), papel (mão aberta), tesoura (dois dedos abertos), e acrescenta-se para “spock” a saudação Vulcana e para “lagarto” a mão formando um boneco de boca articulável.
Até aqui ta pronto, mas tá dando erros, o código ainda não tá completamente pronto, pode me ajudar.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main()
{
int num, num_pc;
char escolha, escolha_pc;
printf("Rock-Paper-Scissor\n\n");
printf("Autor: \n\n");
printf("R para Pedra\n");
printf("T para Tesoura\n");
printf("P para Papel\n");
printf("L para Lagarto\n");
printf("S para Spock\n");
printf("Entre com a sua escolha:");
escolha=getchar();
escolha = toupper(escolha);
if(escolha == 'R' || escolha == 'T' || escolha == 'P' || escolha == 'L' || escolha == 'S'){
}else{
printf("\nA escolha tem que ser R ou T ou P ou L ou S\n\n");
system("PAUSE");
return EXIT_SUCCESS;}
srand(time(NULL));
num_pc= rand() % 5;
switch(num_pc){
case 0:
escolha_pc = 'R';
break;
case 1:
escolha_pc = 'T';
break;
case 2:
escolha_pc = 'P';
break;
case 3:
escolha_pc = 'L';
break;
case 4:
escolha_pc = 'S';
break;
}
printf("\nMinha escolha e: %c\n", escolha_pc);
printf("\nSua escolha e: %c\n\n", escolha);
if(escolha =='R' && escolha_pc == 'T' || escolha =='R' && escolha_pc =='L'){
printf("\nVoce Venceu campeao!!!!\n");}
else if(escolha =='T' && escolha_pc =='P' || escolha =='T' && escolha_pc =='L'){
printf("\nVoce Venceu campeao!!!!\n");}
else if(escolha =='P' && escolha_pc =='R' || escolha =='P' && escolha_pc =='S'){
printf("\nVoce Venceu campeao!!!!\n");}
else if(escolha =='L' && escolha_pc =='P' || escolha =='L' && escolha_pc =='S'){
printf("\nVoce Venceu campeao!!!!\n");}
else if(escolha =='S' && escolha_pc =='R' || escolha =='S' && escolha_pc =='T'){
printf("\nVoce Venceu campeao!!!!\n");}
else if(escolha == escolha_pc){
printf("\nEmpatamos colega!!!!\n");
}else{
printf("\nVoce perdeu seu derrotado!!!!\n\n");}

system("PAUSE");
return EXIT_SUCCESS;
}


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts