Ir ao conteúdo

C Criar jogo de enígmas com arquivos txt


Ir à solução Resolvido por devair1010,

Posts recomendados

Postado

Boa tarde eu tenho estado a fazer um codigo na escola mas por alguma razao este mesmo não esta a funcionar sera que me poderiam ajudar?

Aqui esta o codigo:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <iostream> 
#include <conio.h>


void gameover()
{

system("game_over.PNG * open");

}

//tema jogo ou enigma tendo em conta a materia
main()
{
        FILE *arquivo1;
        FILE *arquivo2;
        FILE *arquivo3;
        FILE *arquivo4;
        FILE *arquivo5;
        
arquivo1=fopen("regras.txt","w");
    int escolha,enigma2,vidas=3;
    char enigma4[40],enigma1[40],enigma3[40];
    
        system("color 1F"); 
        printf("%c%c%c%c%c%c%c %c%c%c %c%c%c %c%c%c%c%c%c\n",69,83,67,79,76,72,65,85,77,65,68,65,83,79,80,67,79,69,83);
        printf("____________________\n");
        printf("||||||||menu||||||||\n");
        printf("|1-jogar||||");
        printf("|2-sair|\n");
        printf("||||||||||||||||||||\n");
        printf("____________________\n");
        scanf("%d",&escolha);
        switch(escolha)
        {
    
        case 1:
            
            fprintf(arquivo1,"regras do jogo\n\n\n");
            fprintf(arquivo1,"o seu numero de vidas é de  %d",vidas);
            fprintf(arquivo1,"irei primeiro apresentar os primeiro enigmas e a cada pergunta teras de criar um ficheiro onde iras por a respetiva resposta\n\n\n");
            fprintf(arquivo1,"enigma 1\n");
            fprintf(arquivo1,"traduza esta mensagem\n");
            fprintf(arquivo1,"---/-.-. . ..-/.... --- .--- ./. ... - .-/.-.. .. -. -.. ---\n");
            fprintf(arquivo1,"aceda ao ficheiro com o nome de enigma1 e inclua a sua resposta para o primeiro enigma\n");
            fprintf(arquivo1,"enigma 2\n");
            fprintf(arquivo1,"quanto é 347 em decimal para binário \n");
            fprintf(arquivo1,"escreva o resultado no ficheiro enigma2\n");
            fprintf(arquivo1,"enigma 3\n");
            fprintf(arquivo1,"sabendo que eu sei que nada sei o que sei eu \n");
            fprintf(arquivo1,"escreva o resultado no ficheiro enigma3\n");
            fprintf(arquivo1,"enigma 4\n");
            fprintf(arquivo1,"qual destas opções serve para ler ficheiros fprintf;scanf;fscanf;echo\n");
            fprintf(arquivo1,"escreva o resultado no ficheiro enigma4\n");
            fclose(arquivo1);
            printf("agora que os enigmas ja estão apresentados no ficheiro das regras vai respondelos\ne quando acabares volta e clica no enter\n");
            getch(); 
            arquivo2=fopen("enigma1.txt","w+");
            fscanf(arquivo2,"%c",&enigma1);
            if (enigma1=="o ceu hoje esta lindo1")
            printf("");
           else
           vidas-1;
           
        
        
           arquivo3=fopen("enigma2.txt","w+");
          fscanf(arquivo3,"%d",&enigma2);
            
            if(enigma2==101011011)
            printf("");
            else
            vidas-1;
           arquivo4=fopen("enigma3.txt","w+");

            fscanf(arquivo4,"%c",&enigma3);
            
            if((enigma3=="que nada sei")||(enigma3=="nada"))
            printf("");
            else
          vidas-1;
            arquivo5=fopen("enigma4.txt","w+");
            fscanf(arquivo5,"%c",&enigma4);
            if(enigma4=="fscanf")
            printf("");
            else
            vidas-1;
            printf("%d",&vidas);
            if (vidas<=0)
           gameover();
           break;
               fclose(arquivo1);
               fclose(arquivo2);
               fclose(arquivo3);
               fclose(arquivo4);
               fclose(arquivo5);
               
            case 2:
                system("pause");
            break;
                }
}

 

  • Obrigado 1
  • Solução
Postado

@manuelsilva seu código contém erros ,  pois se você está usando a Linguagem   C  ,  talvez você ainda não saiba que C não é a mesma coisa que C++ ,    acontece que C++ aceita todos os comandos e funções da linguagem C ,  mas C não aceita os comandos de C++ ,  e essa biblioteca ]

#include    <iostream>


é de C++ ,  e por isso seu código não funciona .    e se você quer colorir as letras e o fundo da Tela , você pode usar essa Função

SetConsoleTextAttribute( GetStdHandle(STD_OUTPUT_HANDLE) , cor_letras + ( cor_fundo << 4) );


e a função fprintf pode ser simplificada , para ser menor e mais rápida e também se você usar o botão  code  "<>"  , seu código ficará bem coloridinho e mais fácil de copar para testar :
 

#define     WIN32_WINNT 0x600
#include    <stdio.h>
#include    <conio.h>
#include    <stdlib.h>
#include    <string.h>
#include    <windows.h>
#define     _h GetStdHandle(STD_OUTPUT_HANDLE)
#define cls system("cls||clear");
//#include <iostream>  essa biblioteca eh da linguagem C++
#include    <conio.h>  /// conio não eh padrão na Linguagem C + funciona em alguns pc's
void gameover()
{
  system("game_over.PNG * open");
}
//tema jogo ou enigma tendo em conta a materia
int main()
{
  FILE* arquivo1;
  FILE* arquivo2;
  FILE* arquivo3;
  FILE* arquivo4;
  FILE* arquivo5;
  int   escolha     =  0 ;
  int   enigma2     =  0 ;
  int   vidas       =  3 ;
  char  enigma4[40] = {0};
  char  enigma1[40] = {0};
  char  enigma3[40] = {0};
  int cor_letra, cor_fundo;
  CONSOLE_SCREEN_BUFFER_INFO c;
  if( GetConsoleScreenBufferInfo( _h, & c )      )
  {
    cor_letra = (  c.wAttributes & 0xFF  )        & 0x0F;
    cor_fundo = ( (c.wAttributes & 0xFF  ) >> 4 ) & 0x0F;
  }
  SetConsoleTextAttribute( _h , 12 + ( 10 << 4 ) ); /// colorir letras e o fundo da Tela
  printf("Jogo De Enigmas .  \n\tTecle      \n");
  getch(); /// getch eh da biblioteca conio 
  cls      /// limpar a Tela
  arquivo1 = fopen("regras.txt","a");
  if(arquivo1 == NULL)
    arquivo1 = fopen("regras.txt","w");
  system("color 1F");
  printf("ESCOLHA UMA DAS opções\n");    /// %c%c%c%c%c%c%c %c%c%c %c%c%c %c%c%c%c%c%c\n",69,83,67,79,76,72,65,85,77,65,68,65,83,79,80,67,79,69,83);
  printf("_______________\n");
  printf("| menu ||||||||\n");
  printf("| 1 - jogar |||\n");
  printf("| 2 - sair ||||\n");
  printf("|||||||||||||||\n");
  printf("_______________\n");
  scanf ("%d" , & escolha   );
  switch( escolha )
  {
  case 1:
    fprintf(arquivo1,
    "regras do jogo\n\n\n"
    "o seu numero de vidas é de  %d\n"
    "irei primeiro apresentar os primeiro enigmas e a cada pergunta teras\n"
    "de criar um ficheiro onde iras por a respetiva resposta\n\n"
    "enigma 1\n"
    "traduza esta mensagem\n"
    "---/-.-. . ..-/.... --- .--- ./. ... - .-/.-.. .. -. -.. ---\n"
    "aceda ao ficheiro com o nome de enigma1 e inclua a sua resposta para o primeiro enigma\n"
    "enigma 2\n"
    "quanto é 347 em decimal para binário \n"
    "escreva o resultado no ficheiro enigma2\n"
    "enigma 3\n"
    "sabendo que eu sei que nada sei o que sei eu \n"
    "escreva o resultado no ficheiro enigma3\n"
    "enigma 4\n"
    "qual destas opções serve para ler ficheiros fprintf;scanf;fscanf;echo\n"
    "escreva o resultado no ficheiro enigma4\n",vidas);
    fclose(arquivo1);
    printf("agora que os enigmas ja estão apresentados no ficheiro das\n"
           "regras vai respondelos\ne quando acabares volta e clica no enter\n");
    printf("\tTecle !\n");
    getch();
    arquivo2 = fopen("enigma1.txt","a"  );
    if( arquivo2 == NULL )
    arquivo2 = fopen("enigma1.txt","w"  );
    fscanf( arquivo2 , "%s" , & enigma1 );      /// Ler string  eh com  %s
    /// if (enigma1=="o ceu hoje esta lindo1")  /// em C a comparaCAo de string's 
    if( strcpy( enigma1 , "o ceu hoje esta lindo1") == 0 )/// não e com == e sim com strcpy 
      printf("Qualquer Coisa . . . !\n\n");     
    else
      vidas-1;
      arquivo3 = fopen("enigma2.txt","a");
      if( arquivo3 == NULL )
        arquivo3 = fopen( "enigma2.txt","w" );
    fscanf( arquivo3 , "%d" , & enigma2 );
    if(enigma2 == 101011011)
      printf("Mais Alguma Coisa . . . !\n\n");
    else
      vidas-1;
    arquivo4 = fopen( "enigma3.txt" ,"a");
    if( arquivo4 == NULL )
      arquivo4 = fopen("enigma3.txt","w");
    fscanf( arquivo4 , "%s" , & enigma3 );
    if( strcpy(enigma3,"que nada sei")==0 ||
        strcpy(enigma3,"nada"        )==0  )
      printf("E Outras Coisas . . . !\n\n");
    else
      vidas-1;
    arquivo5 = fopen("enigma4.txt"  ,"a");
    if( arquivo5 == NULL )
      arquivo5 = fopen("enigma4.txt","w");
    fscanf(arquivo5 ,"%s" , & enigma4   );
    if(strcpy(enigma4,"fscanf")==0)
      printf("mais coisa de novo . . . !\n\n");
    else
      vidas-1;
    printf("%d" , & vidas );
    if( vidas < 1 )
      gameover();
    fclose(arquivo1);
    fclose(arquivo2);
    fclose(arquivo3);
    fclose(arquivo4);
    fclose(arquivo5);
    break;
  case 2:
    system("pause");
    break;
  }
  SetConsoleTextAttribute( _h,cor_letra + ( cor_fundo << 4 ) );
  return 0; /// a FunCAo main eh do tipo int e retorna algum valor
}

 

  • Curtir 1
  • Obrigado 1
Postado

@manuelsilva @manuelsilva

7 horas atrás, devair1010 disse:
if( strcpy(enigma3,"que nada sei")==0 ||
        strcpy(enigma3,"nada"        )==0  )
      printf("E Outras

Desculpe  coloquei o nome da função errada , não é strcpy e sim strcmp .

 

if( strcmp(enigma3,"que nada sei")==0 ||
    strcmp(enigma3,"nada"        )==0  )
    printf("E Outras Coisas . . . !\n\n");

 

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

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!