Joguinho de labirinto
Publicado por Luís Fred 28/10/2006
[ Hits: 18.732 ]
Esse joguinho na verdade é um código melhorado, que foi originalmente escrito pelo Tiago Negri, um colega nosso aqui do VOL.
O código anterior não implementava uma saída para o labirinto, então resolvi modificá-lo, implementando uma saída, aumentando o mapa do jogo, entre outras coisas.
/*############################################################################################### # Programa originalmente escrito por <Tiago Negri> # # Modificações feitas por Luís Fred <fredwind@terra.com.br> # # Comentário: este programa consiste num joguinho de laborinto. Originalmente o jogo não tinha # # uma saida, e onde já se viu um joguinho de labirinto sem uma saida????? :), então resolvi # #fazer algumas modificações no código, como introduzir uma saida e aumentar o mapa do jogo. # # Caso queiram verificar o código antigo, acessem esse link: # # www.vivaolinux.com.br/scripts/verFonte.php?codigo=722 # ################################################################################################# */ #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 SAIDA 4 /*Outras definições para tratamento de erros*/ #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][40] = { 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,1, 1,0,0,0,0,1,1,1,0,1,1,1,1,1,1,1,1,0,0,1,1,1,0,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,0,1, 1,0,0,0,0,3,0,0,0,1,1,0,0,0,0,0,0,1,1,1,1,1,0,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,0,1, 1,0,0,1,3,3,3,0,0,1,1,0,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,0,1, 1,0,0,0,0,1,0,0,0,1,1,0,1,1,1,1,1,1,0,1,1,1,0,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,0,1, 1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1, 1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1, 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,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<40;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] == SAIDA) printf("#"); } printf("\n"); } return OK; } int main() { char movimento; while ((movimento != 'x') && (movimento != 'X')) { system(LIMPARTELA); desenhar_mapa(); printf("\n##################### L A B I R I N T O #####################################\n"); printf("\n\n (W)\n(A)+(D)\n (S)\n"); /* Imprime as direcoes */ printf("\nPressione X[x] para sair\n"); printf("\n------------------------------------------------------------------------------\n"); if ((scanf("%c",&movimento))==0) { printf("mensagem de erro..\n"); getchar(); getchar(); return ERRO; } if ((movimento == 'w') || (movimento == 'W')) { 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) && (mapa[linha_atual][coluna_atual] != SAIDA)) { linha_atual = linha_atual + 1; getchar(); getchar(); } } if ((movimento == 's') || (movimento == 'S')) { linha_atual = linha_atual + 1; /* Se não for chao ou grama ou saida ele volta pra posicao anterior */ if ((mapa[linha_atual][coluna_atual] != CHAO) && (mapa[linha_atual][coluna_atual] != GRAMA) && (mapa[linha_atual][coluna_atual] != SAIDA)) { linha_atual = linha_atual - 1; getchar(); getchar(); } } if ((movimento == 'd') || (movimento == 'D')) { coluna_atual = coluna_atual + 1; /* Se não for chao ou grama ou saida ele volta pra posicao anterior */ if ((mapa[linha_atual][coluna_atual] != CHAO) && (mapa[linha_atual][coluna_atual] != GRAMA) && (mapa[linha_atual][coluna_atual] != SAIDA)) { coluna_atual = coluna_atual - 1; getchar(); getchar(); } } if ((movimento == 'a') || (movimento == 'A')) { coluna_atual = coluna_atual - 1; /* Se não for chao ou grama ou saida ele volta pra posicao anterior */ if ((mapa[linha_atual][coluna_atual] != CHAO) && (mapa[linha_atual][coluna_atual] != GRAMA) && (mapa[linha_atual][coluna_atual] != SAIDA)) { coluna_atual = coluna_atual + 1; getchar(); getchar(); } } } }
Calculadora de operadores lógicos
Passkeys: A Evolução da Autenticação Digital
Instalação de distro Linux em computadores, netbooks, etc, em rede com o Clonezilla
Título: Descobrindo o IP externo da VPN no Linux
Armazenando a senha de sua carteira Bitcoin de forma segura no Linux
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Instalando Brave Browser no Linux Mint 22
vídeo pra quem quer saber como funciona Proteção de Memória:
Encontre seus arquivos facilmente com o Drill
Mouse Logitech MX Ergo Advanced Wireless Trackball no Linux
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
VMs e Interfaces de Rede desapareceram (12)
Instalação do drive do adaptador wiffi (7)