Pular para o conteúdo

Exemplo de um "Jogo de Labirinto"

Meu primeiro jogo em C, foi um jogo de labirinto, com os graficos mais ou menos assim, porém usando a conio.h do Windows, e para se movimentar não precisava do uso do ENTER.
Não tenho o código antigo, mas eu fiz esse pequeno exemplo, em uns 15 minutos, usando o mesmo sistem que usei no jogo antigo.
Fiz um mapa bem pequeno, mas da pra sacar a idéia, né?

Espero que seja de alguma ajuda.
Abraços,
Fiquem com Deus.
Hunz hunz
Hits: 62.354 Categoria: C/C++ Subcategoria: Introdução
  • Download
  • Nova versão
  • Indicar
  • Denunciar

Descrição

Meu primeiro jogo em C, foi um jogo de labirinto, com os graficos mais ou menos assim, porém usando a conio.h do Windows, e para se movimentar não precisava do uso do ENTER.
Não tenho o código antigo, mas eu fiz esse pequeno exemplo, em uns 15 minutos, usando o mesmo sistem que usei no jogo antigo.
Fiz um mapa bem pequeno, mas da pra sacar a idéia, né?

Espero que seja de alguma ajuda.
Abraços,
Fiquem com Deus.
Download jogo_mapa.c Enviar nova versão

Esconder código-fonte

/* Desenvolvido por: Thiago Negri ( hunz ) */
/* Email: tn_negri@hotmail.com */

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

/* Definicoes, para facilitar o uso da funcao para desenhar o mapa */
#define CHAO 0
#define PAREDE 1
#define VOCE 2
#define GRAMA 3
#define OUTRA_COISA 4

/* Definicoes que eu uso em quase todos os meus codigos :) */
#define OK 1
#define ERRO 2

/* Usuarios de Windows, troquem "clear" por "cls" */
#define LIMPARTELA "clear"

int    coluna_atual = 2,
   linha_atual = 2;

/* O Mapa */
int mapa[10][10] = { 
1,1,1,1,1,1,1,1,1,1,
1,0,0,0,0,0,0,1,0,1,
1,0,0,0,0,1,1,1,0,1,
1,0,0,0,0,3,0,0,0,1,
1,0,0,1,3,3,3,0,0,1,
1,0,0,0,0,1,0,0,0,1,
1,0,0,0,0,0,0,0,0,1,
1,1,1,4,4,4,4,1,0,1,
1,0,0,0,0,0,0,0,0,1,
1,1,1,1,1,1,1,1,1,1 
};

/* Funcao para desenhar o Mapa */
int desenhar_mapa()
{
   int linha,coluna;
   for (linha=0;linha<10;linha++) {
      for (coluna=0;coluna<10;coluna++) {
         if ((linha == linha_atual) && (coluna == coluna_atual)) {
            printf("@");
            continue;
         }
         if (mapa[linha][coluna] == CHAO)
            printf(" ");
         if (mapa[linha][coluna] == PAREDE)
            printf("*");
         if (mapa[linha][coluna] == GRAMA)
            printf(".");
         if (mapa[linha][coluna] == OUTRA_COISA)
            printf("+");
      }
      printf("\n");
   }
   return OK;
}

int main()
{
   char movimento;
   while ((movimento != 'x') && (movimento != 'X')) {
      system(LIMPARTELA);
      desenhar_mapa();
      printf("\n\n  (N)\n(W)+(E)\n  (S)\n\n"); /* Imprime as direcoes */
      if ((scanf("%c",&movimento))==0) {
         printf("mensagem de erro..\n");
         getchar(); getchar();
         return ERRO;
      }
      if ((movimento == 'n') || (movimento == 'N')) {
         linha_atual = linha_atual - 1;
         /* Se não for chao ou grama ele volta pra posicao anterior */
         if ((mapa[linha_atual][coluna_atual] != CHAO) && (mapa[linha_atual][coluna_atual] != GRAMA)) {
            linha_atual = linha_atual + 1;
            printf("\n\nups.. ali não =)\n");
            getchar(); getchar();
         }
      }
      if ((movimento == 's') || (movimento == 'S')) {
         linha_atual = linha_atual + 1;
         /* Se não for chao ou grama ele volta pra posicao anterior */
         if ((mapa[linha_atual][coluna_atual] != CHAO) && (mapa[linha_atual][coluna_atual] != GRAMA)) {
            linha_atual = linha_atual - 1;
            printf("\n\nups.. ali não =)\n");
            getchar(); getchar();
         }
      }
      if ((movimento == 'e') || (movimento == 'E')) {
         coluna_atual = coluna_atual + 1;
         /* Se não for chao ou grama ele volta pra posicao anterior */
         if ((mapa[linha_atual][coluna_atual] != CHAO) && (mapa[linha_atual][coluna_atual] != GRAMA)) {
            coluna_atual = coluna_atual - 1;
            printf("\n\nups.. ali não =)\n");
            getchar(); getchar();
         }
      }
      if ((movimento == 'w') || (movimento == 'W')) {
         coluna_atual = coluna_atual - 1;
         /* Se não for chao ou grama ele volta pra posicao anterior */
         if ((mapa[linha_atual][coluna_atual] != CHAO) && (mapa[linha_atual][coluna_atual] != GRAMA)) {
            coluna_atual = coluna_atual + 1;
            printf("\n\nups.. ali não =)\n");
            getchar(); getchar();
         }
      }
   }
}

O que são e como utilizar structs

Números ASCII_ART

Fibonacci - Modo muito simples

funcarg2.c - Função com argumento

Conta e substitui caracteres de uma frase

#1 Comentário enviado por fredwind em 02/10/2005 - 16:20h
Kra o joguinho eh show, c pode me explik o código? eu gostei muito mermu kra!!! manda um email pra mim explikndu o código por favor!!!! massa mermu o teu código!!! valeuuu!!!!
#2 Comentário enviado por srjulio em 25/06/2012 - 14:16h
joginho muito bom, da para fazer ele ler o mapa atraves de um arquivo ".txt" ?
#3 Comentário enviado por removido em 30/06/2012 - 16:30h
haha gostei!!!
#4 Comentário enviado por joaodaniloXP em 05/11/2012 - 20:28h
fazer ele ler o mapa atraves de um txt é facil, basta criar um txt com os numeros desejados, e efetuar a leitura através da função fscanf(); :)
#5 Comentário enviado por eduardonetoh em 11/12/2013 - 10:22h
cara.. pra ficar bonito mesmo, use a biblioteca ASCII no (não) e o comando pra limpar a tela eh #define LIMPARTELA "cls"
#6 Comentário enviado por jader_cleber em 15/04/2014 - 18:34h
Muito interessante seu código... Estou elaborando um projeto para a faculdade, onde preciso criar um jogo no prompt, como você fez para não necessitar pressionar Enter para movimentar?

Contribuir com comentário

Entre na sua conta para comentar.