1
resposta

Continuando o jogo

fogefoge.c

#include <stdio.h>
#include <stdlib.h>
#include "fogefoge.h"
#include "mapa.h"

MAPA m;
POSICAO heroi;

int acabou(){
    return 0;
}

void move(char direcao){
    m.matriz[heroi.x][heroi.y] = '.';
    switch (direcao)
    {
        case 'a':
            m.matriz[heroi.x][heroi.y-1] = '@';
            heroi.y--;
            break;

        case 'd':
            m.matriz[heroi.x][heroi.y+1] = '@';
            heroi.y++;
            break;

        case 'w':
            m.matriz[heroi.x-1][heroi.y] = '@';
            heroi.x--;
            break;

        case 's':
            m.matriz[heroi.x+1][heroi.y] = '@';
            heroi.x++;
            break;
    }
    
}



int main(){

    lermapa(&m);
    encontramapa(&m, &heroi, '@');

    do{
        imprimemapa(&m);

        char comando;
        scanf(" %c", &comando);
        move(comando);

    }while(!acabou());


    liberamapa(&m);

}

mapa.c

#include <stdio.h>
#include <stdlib.h>
#include "mapa.h"

void encontramapa(MAPA* m, POSICAO* p, char c){

    for(int i = 0; i < m->linhas; i++){
        for(int j = 0; j < m->colunas;j++){
            if(m->matriz[i][j] == c){
                p->x = i;
                p->y = j;
                break;
            }
        }
    }
}

void liberamapa(MAPA* m){
    for(int i = 0; i < m->linhas;i++){
        free(m->matriz[i]);
    }
    free(m->matriz);
}

void alocamapa(MAPA* m){
    m->matriz = malloc(sizeof(char*) * m->linhas);
    for(int i = 0;i < m->linhas;i++){
        m->matriz[i] = malloc(sizeof(char) * (m->colunas+1));
    }
}

void lermapa(MAPA* m){
    FILE* f = fopen("mapa.txt", "r");
    if(f == 0){
        printf("DESCULPE, BANCO DE DADOS INDISPONIVEL!");
        exit(1);
    }
    fscanf(f, "%d %d", &(m->linhas),&(m->colunas));
    alocamapa(m);
    printf("linhas %d colunas %d\n", m->linhas, m->colunas);

    for(int i = 0; i < 5; i++){
        fscanf(f, "%s", m->matriz[i]);
    }

    fclose(f);
}
void imprimemapa(MAPA* m){
    for(int i = 0; i < 5; i++){
        printf("%s\n", m->matriz[i]);
    }
}
1 resposta

Boa, Bruno!

Ficou super bacana a sua continuação do jogo, parabéns pelo código, é muito bom acompanhar a sua evolução por aqui! Qualquer dúvida, estou disponível aqui no fórum!

Um abração!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software