Enviado em 23/06/2019 - 20:18h
galera estou tendo dificuldades para desenvolver a programação de um labirinto alguém pode me ajudar?#include <stdio.h> #include <stdlib.h> #define CHAO 0 #define PAREDE 1 #define VOCE 4 #define BORDA 5 #define PORTA 2 #define ENIGMA 3 #define OK 1 #define ERRO 2 #define LIMPARTELA “clear” int coluna_atual = 4, linha_atual = 4; int mapa[30][60] = { 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, 5,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,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5, 5,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,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5, 5,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,0,0,0,0,0,0,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5, 5,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,0,0,1,1,0,0,0,0,0,0,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5, 5,1,0,0,1,1,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5, 5,1,0,0,1,1,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,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,5, 5,1,0,0,1,1,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,2,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,1,1,1,1,1,1,1,1,1,5, 5,1,0,0,1,1,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,2,0,0,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5, 5,1,0,0,1,1,1,2,2,1,1,1,1,1,1,1,1,1,0,0,0,0,0,1,1,0,0,1,1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,5, 5,1,0,0,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,0,0,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,5, 5,1,1,0,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,0,0,0,0,1,1,1,5, 5,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,1,1,5, 5,1,1,1,1,0,0,0,0,0,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,0,0,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,1,5, 5,1,1,1,1,1,1,1,0,0,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,0,0,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,1,5, 5,1,0,0,0,0,1,1,1,0,0,1,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,1,5, 5,1,0,0,0,0,1,1,1,0,0,1,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,1,5, 5,1,0,0,0,0,1,1,1,0,0,1,1,0,0,0,0,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,3,2,0,0,0,0,0,0,0,0,0,0,0,1,5, 5,1,1,0,0,0,1,1,1,0,0,1,1,1,0,0,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,1,5, 5,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,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,0,0,0,0,0,0,0,0,0,0,1,5, 5,1,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,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,1,5, 5,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,0,0,0,0,2,0,1,0,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,0,0,0,0,0,0,0,1,1,5, 5,1,0,0,0,0,1,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,1,1,1,0,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,0,0,0,0,0,1,1,1,5, 5,1,0,0,0,0,1,0,0,1,0,0,1,1,1,1,0,0,0,0,0,1,1,1,1,0,0,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,0,0,1,1,1,1,1,5, 5,1,0,0,0,0,0,0,1,1,2,2,1,1,1,1,0,0,0,0,0,1,1,1,0,0,0,0,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,5, 5,1,0,0,0,0,0,1,0,0,0,0,0,0,1,1,1,0,0,0,0,1,1,1,0,0,0,0,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,5, 5,1,0,0,0,0,1,1,0,0,0,0,0,0,1,1,1,1,0,0,0,1,1,1,0,0,0,0,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,5, 5,1,0,0,0,0,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,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,5, 5,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,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5 }; int desenhar_mapa(){ int linha,coluna; for (linha=0;linha<30;linha++) { for (coluna=0;coluna<60;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] == BORDA) printf("#"); if (mapa[linha][coluna] == PORTA) printf("!"); if (mapa[linha][coluna] == ENIGMA) printf("?"); } printf("\n"); } return OK; } int main(){ char movimento; while ((movimento != ‘x’) && (movimento != ‘X’)) { system(LIMPARTELA); desenhar_mapa(); printf("\n\n (W)\n(A)+(D)\n (S)\n\n"); if ((scanf("%c",&movimento))==0) { printf(“mensagem de erro…\n”); getchar(); return ERRO; } if ((movimento == ‘w’) || (movimento == ‘W’)) { linha_atual = linha_atual - 1; if (mapa[linha_atual][coluna_atual] != CHAO) { linha_atual = linha_atual + 1; printf("\n\nups.. ali não =)\n"); getchar(); } } if ((movimento == 's') || (movimento == 'S')) { linha_atual = linha_atual + 1; if (mapa[linha_atual][coluna_atual] != CHAO) { linha_atual = linha_atual - 1; printf("\n\nups.. ali não =)\n"); getchar(); } } if ((movimento == 'd') || (movimento == 'D')) { coluna_atual = coluna_atual + 1; if (mapa[linha_atual][coluna_atual] != CHAO) { coluna_atual = coluna_atual - 1; printf("\n\nups.. ali não =)\n"); getchar(); } } if ((movimento == 'a') || (movimento == 'A')) { coluna_atual = coluna_atual - 1; if (mapa[linha_atual][coluna_atual] != CHAO) { coluna_atual = coluna_atual + 1; printf("\n\nups.. ali não =)\n"); getchar(); } } } }
Enviado em 25/06/2019 - 23:14h
Uma rápida mexida, para compilar sem erros, com algumas das mexidas marcadas em negrito. Comento o programa e faço sugestões na próxima mensagem.#include <stdio.h> #include <stdlib.h> #define CHAO 0 #define PAREDE 1 #define VOCE 4 #define BORDA 5 #define PORTA 2 #define ENIGMA 3 #define OK 1 #define ERRO 2 #define LIMPARTELA "clear" /* Note o uso de aspas comuns do ASCII; você postou uma versão com “aspas inglesas”, fora do ASCII. */ int coluna_atual = 4, linha_atual = 4; int mapa[30][60] = { { 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5 }, { 5,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,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5 }, { 5,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,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5 }, { 5,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,0,0,0,0,0,0,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5 }, { 5,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,0,0,1,1,0,0,0,0,0,0,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5 }, { 5,1,0,0,1,1,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5 }, { 5,1,0,0,1,1,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,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,5 }, { 5,1,0,0,1,1,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,2,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,1,1,1,1,1,1,1,1,1,5 }, { 5,1,0,0,1,1,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,2,0,0,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5 }, { 5,1,0,0,1,1,1,2,2,1,1,1,1,1,1,1,1,1,0,0,0,0,0,1,1,0,0,1,1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,5 }, { 5,1,0,0,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,0,0,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,5 }, { 5,1,1,0,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,0,0,0,0,1,1,1,5 }, { 5,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,1,1,5 }, { 5,1,1,1,1,0,0,0,0,0,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,0,0,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,1,5 }, { 5,1,1,1,1,1,1,1,0,0,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,0,0,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,1,5 }, { 5,1,0,0,0,0,1,1,1,0,0,1,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,1,5 }, { 5,1,0,0,0,0,1,1,1,0,0,1,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,1,5 }, { 5,1,0,0,0,0,1,1,1,0,0,1,1,0,0,0,0,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,3,2,0,0,0,0,0,0,0,0,0,0,0,1,5 }, { 5,1,1,0,0,0,1,1,1,0,0,1,1,1,0,0,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,1,5 }, { 5,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,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,0,0,0,0,0,0,0,0,0,0,1,5 }, { 5,1,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,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,1,5 }, { 5,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,0,0,0,0,2,0,1,0,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,0,0,0,0,0,0,0,1,1,5 }, { 5,1,0,0,0,0,1,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,1,1,1,0,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,0,0,0,0,0,1,1,1,5 }, { 5,1,0,0,0,0,1,0,0,1,0,0,1,1,1,1,0,0,0,0,0,1,1,1,1,0,0,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,0,0,1,1,1,1,1,5 }, { 5,1,0,0,0,0,0,0,1,1,2,2,1,1,1,1,0,0,0,0,0,1,1,1,0,0,0,0,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,5 }, { 5,1,0,0,0,0,0,1,0,0,0,0,0,0,1,1,1,0,0,0,0,1,1,1,0,0,0,0,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,5 }, { 5,1,0,0,0,0,1,1,0,0,0,0,0,0,1,1,1,1,0,0,0,1,1,1,0,0,0,0,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,5 }, { 5,1,0,0,0,0,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,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,5 }, { 5,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,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5 }, { 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5 } }; int desenhar_mapa(){ int linha,coluna; for (linha=0;linha<30;linha++) { for (coluna=0;coluna<60;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] == BORDA) printf("#"); if (mapa[linha][coluna] == PORTA) printf("!"); if (mapa[linha][coluna] == ENIGMA) printf("?"); } printf("\n"); } return OK; } int main(void){ char movimento='\0'; while ((movimento != 'x') && (movimento != 'X')) { system(LIMPARTELA); desenhar_mapa(); printf("\n\n (W)\n(A)+(D)\n (S)\n\n"); if ((scanf("%c",&movimento))==0) { printf("mensagem de erro…\n"); getchar(); return ERRO; } if ((movimento == 'w') || (movimento == 'W')) { linha_atual = linha_atual - 1; if (mapa[linha_atual][coluna_atual] != CHAO) { linha_atual = linha_atual + 1; printf("\n\nups.. ali não =)\n"); getchar(); } } if ((movimento == 's') || (movimento == 'S')) { linha_atual = linha_atual + 1; if (mapa[linha_atual][coluna_atual] != CHAO) { linha_atual = linha_atual - 1; printf("\n\nups.. ali não =)\n"); getchar(); } } if ((movimento == 'd') || (movimento == 'D')) { coluna_atual = coluna_atual + 1; if (mapa[linha_atual][coluna_atual] != CHAO) { coluna_atual = coluna_atual - 1; printf("\n\nups.. ali não =)\n"); getchar(); } } if ((movimento == 'a') || (movimento == 'A')) { coluna_atual = coluna_atual - 1; if (mapa[linha_atual][coluna_atual] != CHAO) { coluna_atual = coluna_atual + 1; printf("\n\nups.. ali não =)\n"); getchar(); } } } }
Enviado em 29/06/2019 - 16:24h
Fiquei brincando com seu programa um pouquinho, fazendo-o compilar não apenas no Linux, com GCC e CLANG, mas também no DOS, com Turbo C e com DJGPP.#include <ctype.h> #include <stdio.h> #include <stdlib.h> #include <time.h> #if defined(__DOS__) || defined(__MSDOS__) || defined(_WIN32) # include <conio.h> # define ENTER '\r' #elif defined(__unix__) # include <term.h> # include <unistd.h> # define ENTER '\n' #endif #define CHAO ' ' #define PAREDE '=' #define VOCE '@' #define BORDA '#' #define PORTA '!' #define ENIGMA '?' #define OK 1 #define ERRO 2 #define LINHAS 30 #define COLUNAS 60 char mapa[LINHAS][COLUNAS+1] = { "############################################################", "#==========================================================#", "#== ==== ==== ================#", "#== =================== === === ================#", "#== ============== === == === ================#", "#= == ======= == ==== ====== =================#", "#= == ====== ! ====== ==================#", "#= == ====== ! ===============#", "#= == ====== ! ===== ========= ==============#", "#= ===!!========= == =====!!========== =============#", "#= === ========== === ===== ========== =============#", "#== = ================ ==== ========= ====== ===#", "#=== ================ === ====== ==== ==#", "#==== ==== ======== == ===== === =#", "#======= === ======= === ====== === =#", "#= === = ====== ==== ======= === =#", "#= === = ======= ===== ======== ! =#", "#= === == ======= =============== ?! =#", "#== === === ====== ================ ! =#", "#=== ======= ======================== =#", "#==== =========== ======================= =#", "#====== ======== ! = ======================== ==#", "#= = ==== === ======================== ===#", "#= = = ==== ==== ======================== =====#", "#= ==!!==== === ==============================#", "#= = === === ==============================#", "#= == ==== === ==============================#", "#= == =========== ===============================#", "#==========================================================#", "############################################################" }; int coluna_atual = 4, linha_atual = 4; #if defined(__DOS__) || defined(__MSDOS__) || defined(_WIN32) // Cria um apelido para a função getch() que possa ser usado em qualquer sistema. int (*const my_getch)(void)=getch; #elif defined(__unix__) void clrscr(void){ static int terminal_ajustado=0; if(!terminal_ajustado){ setupterm(NULL, STDOUT_FILENO, NULL); terminal_ajustado=1; } putp(clear_screen); } int my_getch(void){ struct termios term, noncanon_term; unsigned char ch; ssize_t n_read; tcgetattr(STDIN_FILENO, &term); noncanon_term=term; noncanon_term.c_lflag&=~(ICANON|ECHO); tcsetattr(STDIN_FILENO, TCSANOW, &noncanon_term); n_read=read(STDIN_FILENO, &ch, 1); tcsetattr(STDIN_FILENO, TCSANOW, &term); return n_read==1? ch: EOF; } #else void clrscr(void){ for(int i=LINHAS; i-->0;) putchar('\n'); } #endif void desenhar_mapa(){ int linha=0; clrscr(); while(linha<linha_atual) puts(mapa[linha++]); printf("%.*s%c%s\n", coluna_atual, mapa[linha], VOCE, mapa[linha]+coluna_atual+1); while(++linha<LINHAS) puts(mapa[linha]); } void ignora_ate_fim_de_linha(void){ int ch; while((ch=my_getch())!=EOF && ch!=ENTER) ; } int main(void){ int tem_chave_porta=0; srand(time(NULL)); while(1){ int proxima_linha=linha_atual, proxima_coluna=coluna_atual; desenhar_mapa(); printf("\n\n (W)\n(A)+(D) (X) para sair\n (S)\n\n"); switch(tolower(my_getch())){ case EOF: fprintf(stderr, "Erro de leitura. Abortando programa.\n"); exit(1); case 'x': exit(0); case 'w': --proxima_linha; break; case 's': ++proxima_linha; break; case 'a': --proxima_coluna; break; case 'd': ++proxima_coluna; break; } switch(mapa[proxima_linha][proxima_coluna]){ case CHAO: linha_atual=proxima_linha; coluna_atual=proxima_coluna; break; case PORTA: /* Exemplo de código; você pode optar por outra lógica. */ if(tem_chave_porta){ linha_atual=proxima_linha; coluna_atual=proxima_coluna; } else{ printf("\n\nA porta está trancada. Tecle <Enter>.\n\n"); ignora_ate_fim_de_linha(); } break; case PAREDE: case BORDA: printf("\n\nVocê deu com a cara na parede. Tecle <Enter>.\n\n"); ignora_ate_fim_de_linha(); break; case ENIGMA: { int a, b, c; a=(int)(100.0*rand()/(double)RAND_MAX); b=(int)(100.0*rand()/(double)RAND_MAX); printf("\n\nQuanto vale %d×%d? ", a, b); if(scanf("%d", &c)==1){ if(c==a*b){ tem_chave_porta=1; printf("\nParabéns! Você encontrou a chave. Tecle <Enter>.\n\n"); ignora_ate_fim_de_linha(); // Remove esse enigma do tabuleiro. mapa[proxima_linha][proxima_coluna]=CHAO; linha_atual=proxima_linha; coluna_atual=proxima_coluna; } else{ printf("\nVocê errou e foi eletrocutado. Tecle <Enter> para encerrar o jogo.\n\n"); ignora_ate_fim_de_linha(); exit(0); } } else{ fprintf(stderr, "Erro de leitura. Abortando programa.\n"); exit(1); } } } } }
Como compartilhar a tela do Ubuntu com uma Smart TV (LG, Samsung, etc.)
Descritores de Arquivos e Swappiness
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
Como instalar no Linux Jogos da Steam só para Windows
Instalando o Team Viewer no Debian Trixie - problema no Policykit
O Que Fazer Após Instalar Ubuntu 25.04
Instalei Windows 11 e não alterou o Grub do Debian (2)
Albfneto. Voltando devagar. (0)
Os empreguim de meu Deus estão cada vez mais tecnológicos (8)