Untitled
unknown
plain_text
2 years ago
2.7 kB
13
Indexable
tMapa* CriaMapa(const char* caminhoConfig) {
int i = 0, j = 0, contagemLinhas = 0, achouBreak = 0;
int linhaP1 = 0, linhaP2 = 0, colunaP1 = 0, colunaP2 = 0, tickFlag = 0;
char aux = '0', caminhoMapa[1000];
tMapa * mapa = (tMapa*)malloc(sizeof(tMapa));
FILE * fMapa = NULL;
sprintf(caminhoMapa, "%s/mapa.txt", caminhoConfig);
fMapa = fopen(caminhoMapa, "r");
if (!fMapa) {
printf("Erro ao abrir o mapa!\n");
exit(1);
}
// inicializa as variaveis
mapa->nColunas = 0;
mapa->nLinhas = 0;
mapa->nFrutasAtual = 0;
mapa->nMaximoMovimentos = 0;
mapa->tunel = NULL;
fscanf(fMapa, "%d\n", &mapa->nMaximoMovimentos);
while (fscanf(fMapa, "%c", &aux) == 1) {
// atribui o numero de colunas e conta o num de \n como num linhas
if (aux == '\n') {
mapa->nColunas = j;
mapa->nLinhas++;
achouBreak = 1; // bloqueia q o numero de colunas altere
}
//le qts char tem ate o \n
if (!achouBreak) {
j++;
}
}
// aloca memória para o grid
mapa->grid = (char**) malloc(ObtemNumeroLinhasMapa(mapa) * sizeof(char*));
for (i = 0; i < ObtemNumeroLinhasMapa(mapa); i++) {
mapa->grid[i] = (char*) malloc(ObtemNumeroColunasMapa(mapa) * sizeof(char));
}
// le o mapa e armazena no grid, alem de criar o portal caso exista no mapa
printf("%dL %dC\n\n", ObtemNumeroLinhasMapa(mapa), ObtemNumeroLinhasMapa(mapa));
rewind(fMapa);
fscanf(fMapa, "%d\n", &mapa->nMaximoMovimentos);
for (i = 0; i < ObtemNumeroLinhasMapa(mapa); i++) {
for (j = 0; j < ObtemNumeroColunasMapa(mapa); j++) {
fscanf(fMapa, "%c", &mapa->grid[i][j]);
// if (mapa->grid[i][j] == PORTAL) {
// switch (tickFlag) {
// case 1:
// tickFlag++;
// linhaP1 = i;
// colunaP1 = j;
// break;
// case 2:
// linhaP2 = i;
// colunaP2 = j;
// tTunel * portal = CriaTunel(linhaP1, colunaP1, linhaP2, colunaP2);
// mapa->tunel = portal;
// }
// }
}
}
mapa->nFrutasAtual = ObtemQuantidadeFrutasIniciaisMapa(mapa);
for (i = 0; i < ObtemNumeroLinhasMapa(mapa); i++) {
printf("\n");
for (j = 0; j < ObtemNumeroColunasMapa(mapa); j++) {
printf("%c", mapa->grid[i][j]);
}
}
fclose(fMapa);
return mapa;
}Editor is loading...