Joguinho de labirinto
Publicado por Luís Fred 28/10/2006
[ Hits: 18.956 ]
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();
}
}
}
}
separando pares de impares e colocando em pilhas
EXEMPLO DA ULTILIZAÇÃO DE PONTEIROS
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Novos apps de produtividade, avanços em IA e distros em ebulição agitam o universo Linux
Como instalar o repositório do DBeaver no Ubuntu
Como instalar o Plex Media Server no Ubuntu
Digitando underscore com "shift" + "barra de espaços"
Como ativar a lixeira e recuperar aquivos deletados em um servidor Linux
Como mudar o nome de dispositivos Bluetooth via linha de comando
Problemas com Driver NVIDIA (0)
Programa fora de escala na tela do pc (19)
Fedora KDE plasma 42 X Módulo de segurança BB (Warsaw-2) (1)









