Ir ao conteúdo

Posts recomendados

Postado

Boa tarde,

Amigos,estou com dificuldade em terminar um trabalho para a faculdade,a questão é:

Utilizando-se do conceito de modularização implemente o jogo Gênius. Trata-se de um jogo de
memória em que o computador apresenta uma sequência de números e o usuário deve repetir a
sequência. A sequência inicial é composta por apenas um número. A cada acerto do usuário o
computador acrescenta um número à sequência. Quando o usuário acerta a sequência de 10
números, deve passar para o nível seguinte. A diferença entre cada nível é a variedade de valores.
Por exemplo:
Nível 1: números de 1 a 3
Nível 2: números de 1 a 6
Nível 3: números de 1 a 9
Nível 4: números de 1 a 12 e assim sucessivamente.
Deve ser dada a opção de duas pessoas jogarem uma contra a outra, quando, a cada acerto de um
jogador, a vez passa para o outro jogador. No primeiro erro, o jogador da vez é eliminado e vence o
outro jogador.
No caso de 1 jogador só, quando o usuário errar deve ser mostrado na tela até que nível ele foi.
No início e ao final de cada rodada deve ser mostrado o seguinte menu:
(1) 1 jogador
(2) 2 jogadores
(3) Sair

 

Alguém poderia me ajudar? 

  • Curtir 1
Postado

Se você está com dificuldade em terminar, poderia postar o que você já começou, para o pessoal lhe ajudar melhor.

Dica: use rand para sortear os números, e sleep para tempo de exposição da sequência a ser memorizada.

  • Curtir 1
Postado

TENHO ISSO PRONTO: 

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<locale.h>

int vali = 1; //valida os whiles dos procedimentos
int tvt = 9/*ultima posição do vetor*/, pvt = 0, lvl = 3, n = 0, idlvl=1;
int vt1[10];//vetor de tamanho 10
int escolha;
void jogo();

void sorteio(){
     setlocale(LC_ALL, "Portuguese"); 
    printf("Grave esta sequência:\n");
    vali = 1;     
    while (vali == 1){
        vt1[pvt] = rand() % lvl + 1;
        printf("-%d-", vt1[pvt]);
    //posição do vetor é = ao tamanho do vetor    ou sejá foram testados todos os numeros
        if (pvt == tvt){
            vali = 0;
        }else{
            pvt++;    
        }
    }
    printf("\n");    
    system("pause");
    system("cls");
    jogo();
}

void jogo(){
     setlocale(LC_ALL, "Portuguese");
        vali = 1;
        pvt = 0; 
        while(vali == 1){
        printf("\nDigite o %d  número\n",pvt+1);
        scanf("%d",&n);
        //printf("%d",n);
        if (vt1[pvt] != n){
            
            printf("Você perdeu no nível %d a sequência correta e:\n",idlvl);
            //printa a sequencia correta
            for(int i=0; i<=tvt; i++){
                printf("-%d-", vt1);    
            }
            vali = 0;
        }
        else if(pvt == tvt){
            printf("Parabéns! Você passou para o nível %d\n\n",idlvl+1);    
            lvl= lvl + 3;
            pvt = 0;
            n = 0;
            sorteio();
            idlvl++;
        }
        else{
            pvt++;    
        }
        //printf("%d",n);
        
    }
}

main(){
       setlocale(LC_ALL, "Portuguese");
    printf("                            BEM-VINDO AO GENIUS                          ");
    printf("\nPara um jogador digite 1 | Para dois jogadores digite 2 | para sair digite 0.\n");
    scanf("%d",&escolha);

    switch (escolha){
        
        case 1:
            printf("UM JOGADOR\n");
            sorteio();
            break;
        
        case 2: 
            printf("DOIS JOGADORES\n");
            printf("voce é o jogador 1\n");
            sorteio();
            printf("voce é o jogador 2\n");
            sorteio();
            break;
            
        case 0:
            printf("\nTCHAU!\n");
            break;
            
    }

 

 

Estou com dúvida no momento em que passa de nível,pois, fica sempre 1 e não aumenta o nível,mas os números são gerados corretamente.

Exatamente aqui "Deve ser dada a opção de duas pessoas jogarem uma contra a outra, quando, a cada acerto de um
jogador, a vez passa para o outro jogador. No primeiro erro, o jogador da vez é eliminado e vence o
outro jogador." a dúvida aumenta. Se alguém puder me ajudar,vou ficar muito grato. 

  • Curtir 1
Postado

@Felipe Nascimentoo      seu código está bom  e está funcionando bem,  aqui ele já passa de nível,  precisava somar a variável   lvl  .   aqui seu código com algumas modificações :

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<time.h>
#include<windows.h>
#include<locale.h>
int vali=1; //valida os whiles dos procedimentos
int tvt=9/*ultima posição do vetor*/,pvt,lvl=3,n,idlvl=1;
int vt1[10];//vetor de tamanho 10
int escolha;
void jogo();
void gotoxy(int x,int y){
    COORD c;
    c.X = x;
    c.Y = y;
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),c);
}
void sorteio(){
    printf("Você Está No Nível %d\n",idlvl);
    printf("Grave esta sequência:\n");
    vali = 1;pvt=0;
    while (vali == 1){
        vt1[pvt] = rand() % lvl + 1;
        if(pvt==0)printf("  %d ", vt1[pvt]);
        else printf("- %d ", vt1[pvt]);
        //posição do vetor é = ao tamanho do vetor    ou sejá foram testados todos os numeros
        if (pvt == tvt){
            vali = 0;
        }else{
            pvt++;
        }
    }
    printf("\n");
    system("pause");
    system("cls");
    jogo();
}
void jogo(){
    vali = 1;
    pvt = 0;
    while(vali == 1){
        printf("Digite O %d  Número ",pvt+1);
        scanf("%d",&n);
        if (vt1[pvt] != n){
            printf("\n");
            printf("Você perdeu no nível %d a sequência correta e:\n",idlvl);
            //printa a sequencia correta
            for(int i=0; i<=tvt; i++){
                if(i==0)printf("  %d ", vt1[i]);
                else printf("- %d ", vt1[i]);
            }
            vali = 0;
            printf("\n\n         ");
            for(vali=10;vali>-1;vali--){
                gotoxy(15,5);
                printf(" %d ",vali);
                Sleep(200);
            }
            gotoxy(15,5);
            printf("   \n\n");
        }
        else
            if(pvt == tvt){
                printf("Parabéns! Você passou para o nível %d\n\n",idlvl+1);
                lvl= lvl + 3;
                pvt = 0;
                n = 0;
                sorteio();
                idlvl++;
                lvl++;
                Sleep(2000);
                vali=0;
            }
            else{
                pvt++;
            }
    }
}
int main(){
    setlocale(LC_ALL, "");
    srand(time(NULL));/* para gerar números randomicos diferentes */
    do{
        system("cls");
        printf("\n\n      =================   BEM-VINDO AO GENIUS   ================     \n\n");
        printf("\n0 - para sair Do Jogo\n1 - Para um jogador\n2 - Para dois jogadores "   );
        printf("\n         ");
        fflush(stdin);
        escolha=getch()-48;/* não precisar pessionar enter*/
        switch (escolha){
            case 1:
                printf("\n ---- UM JOGADOR ----\n");
                sorteio();
                break;
            case 2:
                printf("\n ---- DOIS JOGADORES ----\n\n");
                printf("voce é o jogador 1\n\n");
                sorteio();
                printf("Agora é A Vez Do Jogador 2\n\n");
                sorteio();
                break;
            case 0:
                printf("\n       TCHAU");
                for(vali=0;vali<10;vali++){
                    printf(" .");
                    Sleep(200);
                }
                printf("!\n\n");
                break;
        }
    }while(escolha != 0);
}

 

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...