Exemplo de um "Jogo de Labirinto"
Publicado por Hunz 29/11/2004
[ Hits: 62.156 ]
Homepage: http://tnegri.com/
Meu primeiro jogo em C, foi um jogo de labirinto, com os graficos mais ou menos assim, porém usando a conio.h do Windows, e para se movimentar não precisava do uso do ENTER.
Não tenho o código antigo, mas eu fiz esse pequeno exemplo, em uns 15 minutos, usando o mesmo sistem que usei no jogo antigo.
Fiz um mapa bem pequeno, mas da pra sacar a idéia, né?
Espero que seja de alguma ajuda.
Abraços,
Fiquem com Deus.
/* Desenvolvido por: Thiago Negri ( hunz ) */
/* Email: tn_negri@hotmail.com */
#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 OUTRA_COISA 4
/* Definicoes que eu uso em quase todos os meus codigos :) */
#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][10] = {
1,1,1,1,1,1,1,1,1,1,
1,0,0,0,0,0,0,1,0,1,
1,0,0,0,0,1,1,1,0,1,
1,0,0,0,0,3,0,0,0,1,
1,0,0,1,3,3,3,0,0,1,
1,0,0,0,0,1,0,0,0,1,
1,0,0,0,0,0,0,0,0,1,
1,1,1,4,4,4,4,1,0,1,
1,0,0,0,0,0,0,0,0,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<10;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] == OUTRA_COISA)
printf("+");
}
printf("\n");
}
return OK;
}
int main()
{
char movimento;
while ((movimento != 'x') && (movimento != 'X')) {
system(LIMPARTELA);
desenhar_mapa();
printf("\n\n (N)\n(W)+(E)\n (S)\n\n"); /* Imprime as direcoes */
if ((scanf("%c",&movimento))==0) {
printf("mensagem de erro..\n");
getchar(); getchar();
return ERRO;
}
if ((movimento == 'n') || (movimento == 'N')) {
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)) {
linha_atual = linha_atual + 1;
printf("\n\nups.. ali não =)\n");
getchar(); getchar();
}
}
if ((movimento == 's') || (movimento == 'S')) {
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)) {
linha_atual = linha_atual - 1;
printf("\n\nups.. ali não =)\n");
getchar(); getchar();
}
}
if ((movimento == 'e') || (movimento == 'E')) {
coluna_atual = coluna_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)) {
coluna_atual = coluna_atual - 1;
printf("\n\nups.. ali não =)\n");
getchar(); getchar();
}
}
if ((movimento == 'w') || (movimento == 'W')) {
coluna_atual = coluna_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)) {
coluna_atual = coluna_atual + 1;
printf("\n\nups.. ali não =)\n");
getchar(); getchar();
}
}
}
}
Número par ou ímpar (com operado bit a bit)
EXEMPLO DA ULTILIZAÇÃO DE PONTEIROS
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
Jogar games da Battle.net no Linux com Faugus Launcher
Como fazer a Instalação de aplicativos para acesso remoto ao Linux
Como fazer a instalação do Samba
Como fazer a conversão binária e aplicar as restrições no Linux
Assisti Avatar 3: Fogo e Cinzas (0)
Duas Pasta Pessoal Aparecendo no Ubuntu 24.04.3 LTS (40)









