Joguinho de labirinto usando as setas do teclado
Publicado por Denilson 29/05/2008 (última atualização em 16/05/2012)
[ Hits: 29.195 ]
Download labirinto.cpp (versão 2)
Esse é um joguinho de labirinto.
Originalmente escrito por < Tiago Negri >, modificado por < Luís Fred > e agora melhorado pro mim.
Agora o jogo usa as setas do teclado.
Versão 2 - Enviado por aaaaa em 14/05/2012
Changelog:
/*
#################################################################################################
# Programa originalmente escrito por
# #
# Posteriormente modificado por Luís Fred
# ADICIONADO o fim do Jogo (se o cursor chegar na saida). retorna uma mensagem dizendo qe voce ganhou. Por Rafael Zurawski <www.facebook.com/rafaelzurawski> #
# Comentário de Luíz Fred: 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. #
# #
# Posteriormente modificado por YanyVeyron < denilsonmaxi@gmail.com > #
# Comentário de YankVeyron: Bom, eu apenas tornei o Programa mais dinâmico através do uso das #
# Setas do teclado utilizando a Biblioteca < conoi.h > #
# #
# Caso queiram verificar o código antigo, acessem esse link: #
# www.vivaolinux.com.br/scripts/verFonte.php?codigo=722 #
#################################################################################################
*/
#include
#include
#include
/* 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
#define ACIMA 72
#define ABAIXO 80
#define DIREITA 77
#define ESQUERDA 75
#define ESC 27
/*Outras definições para tratamento de erros*/
#define OK 1
#define ERRO 2
/* Usuarios de Windows, troquem "clear" por "cls" */
#define LIMPARTELA "cls"
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()
{
int tecla;
do{
system(LIMPARTELA);
desenhar_mapa();
printf("\n##################### L A B I R I N T O #####################################\n");
printf("\n\n ( %c )\n\n( %c ) + ( %c )\n\n ( %c )\n",30,17,16,31); /* Imprime as direcoes */
printf("\nPressione ESC para sair\n");
printf("\n------------------------------------------------------------------------------\n");
tecla = getch();
if ( tecla == ACIMA ) {
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;
}
}
if ( tecla == ABAIXO ) {
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;
}
}
if ( tecla == DIREITA ) {
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;
}
}
if ( tecla == ESQUERDA ) {
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;
}
}
if(mapa[linha_atual][coluna_atual]==SAIDA)
{
system("cls");
printf("\n\n\n\n\n\n\nVoce ganhou");
getch();
tecla = ESC;
}
}while( tecla != ESC );
}
/* ################################################################################################# # Programa originalmente escrito por <Tiago Negri> # # # # Posteriormente modificado por Luís Fred <fredwind@terra.com.br> # # Comentário de Luíz Fred: 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. # # # # Posteriormente modificado por YanyVeyron < denilsonmaxi@gmail.com > # # Comentário de YankVeyron: Bom, eu apenas tornei o Programa mais dinâmico através do uso das # # Setas do teclado utilizando a Biblioteca < conoi.h > # # # # 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> #include <conio.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 #define ACIMA 72 #define ABAIXO 80 #define DIREITA 77 #define ESQUERDA 75 #define ESC 27 /*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() { int tecla; do{ system(LIMPARTELA); desenhar_mapa(); printf("\n##################### L A B I R I N T O #####################################\n"); printf("\n\n ( %c )\n\n( %c ) + ( %c )\n\n ( %c )\n",30,17,16,31); /* Imprime as direcoes */ printf("\nPressione ESC para sair\n"); printf("\n------------------------------------------------------------------------------\n"); tecla = getch(); if ( tecla == ACIMA ) { 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; } } if ( tecla == ABAIXO ) { 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; } } if ( tecla == DIREITA ) { 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; } } if ( tecla == ESQUERDA ) { 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; } } }while( tecla != ESC ); }
Controle de estoque com listas
Exemplo de sistema especialista usando Inteligência Artificial
Jogo da Velha com IA invencivel
Jogo Simon (Genius) - com gráficos
Pra quem contribui com artigos e dicas (1)
Arch Linux - Guia para Iniciantes (5)
tux-gpt - Assistente de IA para o Terminal
Instalação e configuração do Chrony
Programa IRPF - Guia de Instalação e Resolução de alguns Problemas
O Que Fazer Após Instalar Ubuntu 25.04
O Que Fazer Após Instalar Fedora 42
Debian 12 -- Errata - Correções de segurança
Instalando o Pi-Hole versão v5.18.4 depois do lançamento da versão v6.0
Copiar Layout do Teclado para aplicar em outra Distribuição (2)
Monitor fora de escala ao bootar sistema (10)
Pra quem contribui com artigos e dicas (1)
Alguém poderia me ajudar a escolher peças pra montar um desktop? (19)