Exemplo de um "Jogo de Labirinto"
Publicado por Hunz 29/11/2004
[ Hits: 61.840 ]
Homepage: http://tnegri.com/
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.
/* 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(); } } } }
EXPRESSÕES ARITMÉTICAS - PARTE 1
funcsoma2.c - Soma 2 pontos flutuantes
Quantos números primos você quizer!!!
Programa IRPF - Guia de Instalação e Resolução de alguns Problemas
Criando uma Infraestrutura para uma micro Empresa
Criar entrada (menuentry) ISO no Grub
Como gerar qualquer emoji ou símbolo unicode a partir do seu teclado
Instalando o Pi-Hole versão v5.18.4 depois do lançamento da versão v6.0
Instalar o VIM 9.1 no Debian 12
Como saber o range de um IP público?
Muitas dificuldades ao instalar distro Linux em Notebook Sony Vaio PCG-6131L (VPCEA24FM)
Liberação de alguns links no squid (12)
impressora de rede via dominio - gpo (2)