Untitled
unknown
plain_text
a year ago
2.7 kB
4
Indexable
Never
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; }