Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Energia

Jogo em C

Recommended Posts

Boa tarde pessoal !

 

Meu primeiro programa na facu é um jogo de adivinhação de senha. Resumidamente o jogo tem como principais caracteristicas :

 

1º O computador gera uma senha de 4 digitos entre os numeros 1 - 6.

2º O jogador tem 15 tentativas, caso esgote a senha é revelada.

3° Caso acerte o um número e sua posição aparece um 'V' de verde. Caso acerte um numero mas não sua posição aparece um 'A', e se errar aparece um 'X'.

4° No final tem que aparecer as estatísticas como: total de partidas, porcentagem de partidas ganhas e perdidas, maior número de tentativas (nas partidas ganhas), média de tentativas.

 

Por enquanto fiz isso :

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

 int a,b,c,d;
 
 void main(void)

 { 
 printf("Jogo Senha");
 printf("\n");
 printf("-----------------------");
 printf("\n Instrucoes");
 printf("\n");
 printf("\n");
 printf("\n Escolha uma senha de %d digitos entre %d e %d",4,1,6);
 printf("\n Voce tera 15 tentativas para acertar");
 printf(" caso nao acerte a senha e' revelada");
 printf("\n Nao sera permitido inserir uma senha ja testada");
 
 a,b,c,d=rand();
 
 srand((unsigned)time(NULL));
 
 a=rand()%6+1;//*O zero nao aparece na senha*/
 b =rand()%6+1;//*O zero nao aparece na senha*/
 c=rand()%6+1;//* zero nao aparece na senha*/
 d=rand()%6+1;//*O zero nao aparece na senha*/
 
 printf("\n");
 printf("\n Digite uma senha");
 
 scanf("%d",&a);
 scanf("%d",&B);
 scanf("%d",&c);
 scanf("%d",&d);
 
 if(a,b,c,d=a,b,c,d=rand());
 
 
 system("PAUSE"); 
 
}

Como começei agora tenho algumas(muitas) dúvidas.

Por exemplo: 1ª eu tava pensando como se existe alguma função para fazer uma espécie de comparação, ou seja quando o jogador digitase o nº iria se fazer uma comparação com senha gerada. E depois como fazer uma condição para aparecer o 'A', o 'V' e o 'X'.

 

2º Como fazer as estatísticas. Eu tava pensando em utilizar operações de matemática básica para isso tpw : porcentagem de partidas ganhas seria

Partidas ganhas/Total de partidas * 100

A média de tentativas eu pensei em :

Soma de todas as tentativas/Total de partidas ganhas

, mas estou com dúvida em como calcular o total de partidas ganhas e perdidas, como calcular a soma das tentativas, qual função eu posso jogar essas operações e como eu faria para esse dados se atualizarem.

 

O total de partidas eu pensei em declarar total de portidas = 0, depois fazer um incremento; partidas = partidas++.

 

Bom se alguem poder me ajudar (e ajudar outros com a mesma dúvida ou dúvida similar) fico grato.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom é praticamente um jogo da velha..

http://www.cplusplus.com/reference/clibrary/cstring/strchr/

http://www.cplusplus.com/reference/clibrary/cstring/strpbrk/

 

acho melhor comparar numero por numero msm..

vai postando ai..

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

- Não é void main. é int main. Existe um post sobre isso.

- O que vem a ser isso?

 

a,b,c,d=rand();

 

if(a,b,c,d=a,b,c,d=rand());

 

 

Tá parecendo código de gente que se internou em Perl durante 5 anos que faz one-liners pra impressionar os outros, que acabam por não entender o que o código faz.

(incrivelmente, esse tipo de coisa é recorrente em livros de Perl: "mas os programadores Perl não fazem assim" [do modo legível])

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

- Não é void main. é int main. Existe um post sobre isso.

- O que vem a ser isso?

 

a,b,c,d=rand();

 

if(a,b,c,d=a,b,c,d=rand());

 

 

Tá parecendo código de gente que se internou em Perl durante 5 anos que faz one-liners pra impressionar os outros, que acabam por não entender o que o código faz.

(incrivelmente, esse tipo de coisa é recorrente em livros de Perl: "mas os programadores Perl não fazem assim" [do modo legível])

 

Aí eu tenho que me defender, e defender o Perl :)

 

A linguagem é muito tolerante. O que faz com que os pouco informados usem-na de maneira imprópria, e com que os que precisam de afirmação criem código críptico. Mas da mesma forma como esses casos acontecem, tem gente que programa em Perl muito bem e que cria código simples e legível.

 

A própria linguagem C permite criação de códigos ininteligíveis, e isso foi afirmado por seus próprios criadores (para exemplos, vide este link).

 

Vai de cada um saber escrever.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Gente meu cógido ta assim mas tem alguns defeitos voces, podem me ajudar ?

1º O jogador tem que ser alertado caso repita uma senha ja testada

2º O as letras 'V' 'A' e 'X' que indicam respectivamente numero certo - posição correta, numero certo - posição errada e numero errado tem que apartecer aleatoriamente e por enquanto elas estão sempre se repetindo, mesmo que eu ponha um numero errado.

 

Caso alguem possa me ajudar fico grato !

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define QTD_VEZES 15/* 15 tentativas*/

int
main(void)
{

    int senha[4], acerto = 0;
    int i, j, tentativa = 1;
    int digitos[4]; // tentativa para posicoes a, b, c e d
    char acertos[4], opcao;

    printf(" Jogo Senha\n");
    printf("-----------------------\n");
    printf(" Instrucoes\n\n\n");
    printf(" Escolha uma senha de 4 digitos entre 1 e 6\n");
    printf(" Voce tera 15 tentativas para acertar\n");
    printf(" caso nao acerte a senha e' revelada\n");
    printf(" Nao sera permitido inserir uma senha ja testada\n");

    while ( ( opcao != 'n' ) || ( opcao != 'N' ) )
    {

        tentativa = 1;
        acerto = 0;

        /* Inicia estruturas */
        for ( i = 0; i < 4; i++ )
        {
            senha[i]=rand();
            srand( (unsigned) time( NULL ) );
            senha[i]=rand()%6+1; /* O zero nao aparece na senha */
            acertos[i] = 'X'; /* Inicia como sendo todos errados */
        }

        
        while ( ( tentativa <= QTD_VEZES ) && ( acerto < 4 ) )
        {

            printf("[Tentativa: %d] Entre com o primeiro digito: ", tentativa);
            scanf("%d", &digitos[0] );
            printf("[Tentativa: %d] Entre com o segundo digito: ", tentativa);
            scanf("%d", &digitos[1] );
            printf("[Tentativa: %d] Entre com o terceiro digito: ", tentativa);
            scanf("%d", &digitos[2] );
            printf("[Tentativa: %d] Entre com o quarto digito: ", tentativa);
            scanf("%d", &digitos[3] );

            for ( i = 0; i < 4; i++ )
            {

                for ( j = 0; j < 4; j++ )
                {

                    if ( digitos[j] == senha[i] )
                    {

                        if ( j == i )
                        {
                            acertos[i] = 'V';
                            acerto++;
                        }
                        else
                        {
                            if ( acertos[i] != 'V' )
                                acertos[i] = 'A';
                        }

                    }

                }

                printf("[%c]", acertos[i]);

            }

            printf("\n");

            tentativa++;

            if ( acerto >= 4 )
            {

                printf("Acertou a senha. Parabens!!!\n\n\n\nDeseja continuar? (S/N)");
                fflush(stdin);
                scanf("%c", &opcao );

            }

        }

    }

    return 0;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.