#include #include #include "foge.h" #include "mapa.h" MAPA m; POSICAO heroi; int acabou(){ return 0; } int ehdirecao (char comando){ return comando == ESQUERDA || comando == CIMA || comando == BAIXO || comando == DIREITA; } void move_pers(char comando){ if (!ehdirecao(comando)) return; int prox_x = heroi.x; int prox_y = heroi.y; switch (comando){ case ESQUERDA: prox_y--; break; case CIMA: prox_x--; break; case BAIXO: prox_x++; break; case DIREITA: prox_y++; break; } if (!ehvalida(&m, prox_x, prox_y)) return; if (!ehvazio(&m, prox_x, prox_y)) return; andanomapa(&m, heroi.x, heroi.y, prox_x, prox_y); heroi.x = prox_x; heroi.y = prox_y; } void fantasma(){ MAPA copia; copiamapa(&copia, &m); printf("COPIA !!\n"); imprime_mapa(&m); int i; int j; for (i=0 ; i< copia.linhas; i++){ for (j=0; j< copia.colunas; j++){ if (copia.mapa[i][j] == FANTASMA){ if (ehvalida(&m, i,j+1) && ehvazio(&m,i,j+1)){ andanomapa(&m, i, j, i, j+1); } } } } libera_mapa(&copia); } int main(){ le_mapa(&m); encontraheroi(&m, &heroi, HEROI); do{ imprime_mapa(&m); printf("Qual seu comando? (a/w/s/d)\n"); char comando; scanf(" %c",&comando); //espaço em branco para ENTER ser ignorado move_pers(comando); //fantasma(); } while (!acabou()); libera_mapa(&m); return 0; }