Joguinho de labirinto
Publicado por Luís Fred 28/10/2006
[ Hits: 19.033 ]
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();
}
}
}
}
Números pares e ímpares de X a Y
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
Como fazer a conversão binária e aplicar as restrições no Linux
Como quebrar a senha de um servidor Linux Debian
Como bloquear pendrive em uma rede Linux
Um autoinstall.yaml para Ubuntu com foco em quem vai fazer máquina virtual
Instalar GRUB sem archinstall no Arch Linux em UEFI Problemático









