Joguinho de labirinto
Publicado por Luís Fred 28/10/2006
[ Hits: 18.904 ]
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(); } } } }
Escolha o algoritmo de ordenação
O que é o THP na configuração de RAM do Linux e quando desabilitá-lo
Comparação entre os escalonadores BFQ e MQ-Deadline (acesso a disco) no Arch e Debian
Conciliando o uso da ZRAM e SWAP em disco na sua máquina
Servidor de Backup com Ubuntu Server 24.04 LTS, RAID e Duplicati (Dell PowerEdge T420)
Como unir duas coleções de ROMs preservando as versões traduzidas (sem duplicatas)
Como instalar o Telegram Desktop no Ubuntu 24.04
Overclocking Permanente para Drastic no Miyoo Mini Plus
Problemas de chaves (/usr/share/keyrings) no Debian
Converter os repositórios Debian para o novo formato com as chaves
eu preciso saber uma coisa sobre os games no linux (3)
eu preciso saber uma coisa sobre os games no linux (1)
Problema com audio apos upgrade (1)