Ir ao conteúdo
  • Cadastre-se

C Jogo perfil em C


Posts recomendados

Olá  gostaria de pedir ajuda para montar o código de um jogo em C, estou tento bastante dificuldade por falta de tempo e mal tive aula do professor da faculdade, segue abaixo a proposta do jogo, obrigado.

 

Proposta

Desenvolver um jogo em linguagem de programação C no estilo aplicação em console inspirado no jogo comercial Perfil.

Neste jogo single player, o jogador receberá um conjunto de dicas sobre uma pessoa, uma coisa, um lugar ou um ano e acumulará pontos caso identifique de maneira correta sobre quem ou o quê as dicas se referem.

Regras

1. O jogo é composto de QTDE_RODADAS rodadas.

2. A cada DURACAO_DICA segundos uma nova dica é informada até um total de QTDE_DICAS.

3. A cada nova dica informada, a pontuação da rodada é diminuída por PENALIDADE_DICA.

4. Cada rodada dura no máximo DURACAO_RODADA segundos e, caso seja atingida, a pontuação recebida pelo jogador será zero.

5. A cada entrada errada do jogador, uma nova dica é informada e o tempo daquela dica é aumentado como se tivesse passado DURACAO_DICA segundos

6. Ao término das QTDE_RODADAS rodadas o jogador receberá a pontuação total e quanto tempo levou para completar as rodadas.

Requisitos mínimos do jogo

A. Ter o perfil de 5 pessoas, 5 coisas, 5 lugares e 5 anos.

B. Exibir ao término do jogo o ranking dos 10 jogadores com maior pontuação, em ordem decrescente de pontuação.

C. Conter menu com pelo menos as opções: novo jogo, exibir explicação do jogo, exibir ranking e sair do jogo.

Avaliação

I. Prazo para entrega do código fonte compilável (e arquivos texto caso utilizados) e da apresentação em vídeo: 21/05/2021 às 23h59.

II. Forma de envio do código fonte: arquivo único do tipo “.c” através da tarefa Trabalho final.

III. Forma de envio de arquivos texto: todos em um único arquivo do tipo “.zip”.

IV. Forma de envio da apresentação em vídeo: link para o vídeo (não listado ou público) no YouTube através da tarefa Trabalho final.

V. Formato da apresentação em vídeo: vídeo de duração total de 5 minutos contendo uma apresentação mostrando o rosto do aluno informando com a própria voz o título do jogo e o nome completo do aluno; explicação breve sobre o jogo e sua implementação; e demonstração do funcionamento do jogo.

Sugestões

i. Armazenar o ranking dos jogadores em um arquivo texto.

ii. Cada perfil armazenado internamente em uma struct e externamente em um arquivo texto exclusivo

  • Amei 2
Link para o comentário
Compartilhar em outros sites

@Lucca Rodrigues eu tentei de duas formas, uma usando switch e uma usando if-else daqui a pouco posto aqui  versão com if : code <

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


const int SEM_ERRO = 0;


int main(){
    
    setlocale(LC_ALL,"portuguese");
    
        int nome;
                    
        printf("Escreva seu nome:");
        scanf("%i", &nome);
        fflush(stdin);
    
    int escolha;
    
        printf("\nMenu\n\n1-Iniciar jogo\n\n2-Regras do jogo\n\n3-Ranking\n\n4-Sair do jogo\n\nDigite a opção:\n\n");
        scanf("%d", &escolha);
    
        if(escolha==1){
            printf("\n*****Começar jogo*****\n\n");
                    
                    int p = 1, l = 2, a = 3, c = 4;
                    
                    printf("Escolha uma opção:\n\n1-pessoa\n\n2-lugar\n\n3-ano\n\n4-coisa\n\n");
                    scanf("%d", p, l, a, c);
                    
                    printf("Você terá 60s para cada dica\n\n");
                    
}
                
            if (escolha==2){
                
                printf("\nRegras do jogo:\n\nO jogador da vez escolhe um número de 1 a 5, será exibida uma dica, se o jogador escrever e acertar o perfil, ganha a rodada e ganha o número de pontos que às dicas valem.\nSe não souber, passa a vez para o próximo, que escolhe outra dica valendo menos pontos, e assim sucessivamente\n\nGanha o jogo quem fizer mais pontos.\n\n");
                    
        }    
                        
            if(escolha==3){
                
                int nome;
                printf("\nRanking:\n\n");
                    
                    FILE*file;
                    
                    fopen("Ranking.txt","w");
                    
                    fprintf(file,nome);
                }    
                
        if (escolha==4){
            exit(0);
        }
            
        if(escolha>=5){
            
            printf("\nOpção não disponivel\n\n");
        }
                
    system("pause");
    return SEM_ERRO;
    
}>

19 minutos atrás, Lucca Rodrigues disse:

@Ilanez Santos Tentou começar?

Use o botão Code pra postar o que já fez.

image.png.8e512daebbacb94911af13382bea2bd0.png

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

2 horas atrás, Ilanez Santos disse:

@Lucca Rodrigues eu tentei de duas formas, uma usando switch e uma usando if-else daqui a pouco posto aqui  versão com if : code <

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


const int SEM_ERRO = 0;


int main(){
    
    setlocale(LC_ALL,"portuguese");
    
        int nome;
                    
        printf("Escreva seu nome:");
        scanf("%i", &nome);
        fflush(stdin);
    
    int escolha;
    
        printf("\nMenu\n\n1-Iniciar jogo\n\n2-Regras do jogo\n\n3-Ranking\n\n4-Sair do jogo\n\nDigite a opção:\n\n");
        scanf("%d", &escolha);
    
        if(escolha==1){
            printf("\n*****Começar jogo*****\n\n");
                    
                    int p = 1, l = 2, a = 3, c = 4;
                    
                    printf("Escolha uma opção:\n\n1-pessoa\n\n2-lugar\n\n3-ano\n\n4-coisa\n\n");
                    scanf("%d", p, l, a, c);
                    
                    printf("Você terá 60s para cada dica\n\n");
                    
}
                
            if (escolha==2){
                
                printf("\nRegras do jogo:\n\nO jogador da vez escolhe um número de 1 a 5, será exibida uma dica, se o jogador escrever e acertar o perfil, ganha a rodada e ganha o número de pontos que às dicas valem.\nSe não souber, passa a vez para o próximo, que escolhe outra dica valendo menos pontos, e assim sucessivamente\n\nGanha o jogo quem fizer mais pontos.\n\n");
                    
        }    
                        
            if(escolha==3){
                
                int nome;
                printf("\nRanking:\n\n");
                    
                    FILE*file;
                    
                    fopen("Ranking.txt","w");
                    
                    fprintf(file,nome);
                }    
                
        if (escolha==4){
            exit(0);
        }
            
        if(escolha>=5){
            
            printf("\nOpção não disponivel\n\n");
        }
                
    system("pause");
    return SEM_ERRO;
    
}>

 

Esse é o código com switch code<

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


const int SEM_ERRO = 0;

int main(){
    
    setlocale(LC_ALL,"portuguese");
    
        int nome;
                    
        printf("Escreva seu nome:");
        scanf("%i", &nome);
        fflush(stdin);
    
    int escolha;
    
        printf("\nMenu\n\n1-Iniciar jogo\n\n2-Regras do jogo\n\n3-Ranking\n\n4-Sair do jogo\n\nDigite a opção:\n\n");
        scanf("%d", &escolha);
    
        switch(escolha){
            case 1:
                
                printf("\n*****Começar jogo*****\n\n");
                    
                    int p = 1, l = 2, a = 3, c = 4;
                    
                    printf("Escolha uma opção:\n\n1-pessoa\n\n2-lugar\n\n3-ano\n\n4-coisa\n\n");
                    scanf("%d", p, l, a, c);
                    
                    printf("Você terá 60s para cada dica\n\n");
            break;

        case 2:
            
            printf("\nRegras do jogo:\n\nO jogador da vez escolhe um número de 1 a 5, será exibida uma dica, se o jogador escrever e acertar o perfil, ganha a rodada e ganha o número de pontos que às dicas valem.\nSe não souber, passa a vez para o próximo, que escolhe outra dica valendo menos pontos, e assim sucessivamente\n\nGanha o jogo quem fizer mais pontos.\n\n");
                    
        break;
                        
            
        case 3:
         
             printf("Ranking:");
            
        break;

        case 4:    
    
            exit(0);
            
        break;
}
            
        if(escolha>=5){
            
            printf("\nOpção não disponivel\n\n");
        }
                
    system("pause");
    return SEM_ERRO;
    
}>

 

Já tenho os perfis prontos também, vou 5 dicas cada.

  • Amei 1
Link para o comentário
Compartilhar em outros sites

@Ilanez Santos Olá, tudo bem com você?

Eu estou muito bem... Seja bem-vindo ao fórum CdH!

 

Então...

 

— Exceto se alguém (ninguém nesse fórum tem gabarito para tanto) me prove o contrário, insistir com seu nível atual é "dá um salto maior que a perna", a solução ética é inverter a ordem dos estudos!

 

Ou seja,

 

você sabe o teor do exercício agora o momento para estudar apenas aquilo que importa à solução

2021 2022; tem praticamente 2 meses de estudo (tem que renunciar 1 hora diária de compromissos que não pode anteriormente)... para aprender (mais) os fundamentos da linguagem C e seus exercícios nos livros!

 

7 horas atrás, Ilanez Santos disse:

Prazo para entrega do código fonte compilável (e arquivos texto caso utilizados) e da apresentação em vídeo: 21/05/2021 às 23h59.

 

Certamente essa não é a categoria de ajuda que busca no fórum (de "resolução de exercício").

Entretanto, é o caminho... não mais ético! E sim O ético!

[🙂]

 

 

 

 

  • Curtir 1
  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

@Ilanez Santos      não entendi o que você quis dizer com código com if e código com switch ,  pois isso não faz diferença nenhuma , apenas que o switch reduz em algumas Linhas de código do programa , mas o resultado será o mesmo ,  e você escreveu comandos de forma errada , como nessa Linha :Aqui :

5 horas atrás, Ilanez Santos disse:

printf("Escolha uma opção:\n\n1-pessoa\n\n2-lugar\n\n3-ano\n\n4-coisa\n\n");
                    scanf("%d", p, l, a, c);

que melhor seria assim :

printf(
  "\r Escolha uma opção :\n\
   \r 1 - pessoa\n\
   \r 2 - lugar\n\
   \r 3 - ano\n\
   \r 4 - coisa "
);
scanf("%d%d%d%d", &p, & l, & a, & c); ///  Precisa do & de endereco da variavel

e também se você usar o Botão code , Que não é esse "<>"   maior_que  e   Menor_que ,  e sim esse 

594914786_barracode.jpg.1d396ef27beb08ed2eb8d1ea07543b31.jpg

que está desenhado lá na barra de ferramentas da janela de postar ,   seu código ficaria melhor organizado ,  e seu código corrigido apenas para compilar poderia ser assim  :

#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <windows.h>
#define h GetStdHandle(STD_OUTPUT_HANDLE)
const int SEM_ERRO = 0;
int main()
{
  FILE* arq;
  int antes, antis;
    CONSOLE_SCREEN_BUFFER_INFO ci;
    if(GetConsoleScreenBufferInfo(h, &ci))
    {
        antes = ( ci.wAttributes & 0xFF) & 0x0F;       /// pega a cor das letras no console
        antis = ((ci.wAttributes & 0xFF) >> 4) & 0x0F; /// pega a cor do fundo da Console
    }
  /// setlocale(LC_ALL,"portuguese");
  char nome[26]; /// não eh int , e sim string
  char dados[25] = {0};
  int p = 1, l = 2, a = 3, c = 4;
  printf("Escreva seu nome:");
  fflush(stdin);     /// Limpar o Buffer de Saida
  scanf("%s", nome); /// string eh com s e não precisa do & de end pois já o tem
  fflush(stdin);
  int escolha;
  do
  {
    SetConsoleTextAttribute(h,11+(0 << 4)); /// letras com cor anil (11) e fundo preto (0)
    printf("\r Menu\n\
          \r 1 - Iniciar jogo\n\
          \r 2 - Regras do jogo\n\
          \r 3 - Ranking\n\
          \r 4 - Sair do jogo\n\
          \r     Digite a opcao : "
         );
  scanf("%d", &escolha);
  switch(escolha)
  {
  case 1:
    printf("\n*****Começar jogo*****\n\n");
    printf("\rEscolha uma opção :\n\
            \r 1 - pessoa\n\
            \r 2 - lugar\n\
            \r 3 - ano\n\
            \r 4 - coisa "
           );
    scanf("%d%d%d%d", &p, &l, &a, &c); /// Aqui precisah do endereco de cada uma dessas variaveis
    printf("Você terá 60s para cada dica\n\n");
    break;
  case 2:
    printf("\nRegras do jogo:\n\nO jogador da vez escolhe um nUmero de 1 a 5 ,  \n\
            \rserah exibida uma dica, se o jogador escrever e acertar o perfil ,\n\
            \rganha a rodada e ganha o nUmero de pontos que as dicas valem .    \n\
            \rSe não souber , passa a vez para o proximo, que escolhe outra dica\n\
            \rvalendo menos pontos, e assim sucessivamente Ganha o jogo quem    \n\
            \rfizer mais pontos  . . . !\n\n"
           );
    break;
  case 3:
    printf("Mostrar O Ranking :\n");
    arq = fopen("ranking.txt","r");
    if(arq == NULL)
      printf("\nErrou , abrindo o Aquivo !\n\n");
    while(fscanf(arq,"%s",dados) != EOF)
      printf("%s\n",dados);
    break;
  case 4:
    printf("Saindo do Programa .\n");
    break;
  }
  if(escolha>=5)
  {
    printf("\nOpcao não disponivel\n\n");
  }
  }while(escolha != 4 );
  SetConsoleTextAttribute(h,antes + ( antis << 4 ) ); // deixa o console com as cores do inicio
  system("pause");
  return SEM_ERRO;
}

 

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

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...