| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- //
- // level.c
- // Mario Sokoban
- //
- // Created by Benoit Sida on 2014-02-16.
- // Copyright (c) 2014 Benoit Sida. All rights reserved.
- //
-
- #include <stdio.h>
- #include <stdlib.h>
- #include <SDL2/SDL.h>
- #include <SDL2_image/SDL_image.h>
- #include "constantes.h"
-
- int loadLevel(int line, int menu, int map[][NB_BLOCS_HAUTEUR])
- {
- FILE *level = NULL;
- char codeLevel[NB_BLOCS_LARGEUR * NB_BLOCS_HAUTEUR + 1] = {0};
- int i = 0, j = 0, k = 0, caracLu = 0, nbLevel = 1;
- switch (menu) {
- case 0:
- level = fopen("levels/menu.lvl", "r");
- break;
- case 1:
- level = fopen("levels/debutant.lvl", "r");
- break;
- case 2:
- level = fopen("levels/intermediaire.lvl", "r");
- break;
- case 3:
- level = fopen("levels/expert.lvl", "r");
- break;
- case 4:
- level = fopen("levels/level.lvl", "r");
- break;
- }
- if (level == NULL) {
- return 0;
- }
- do
- {
- caracLu = fgetc(level);
- if (caracLu == '\n')
- nbLevel++;
- } while(caracLu!= EOF);
- k = line;
- rewind(level);
- while (k > 0)
- {
- caracLu = fgetc(level);
- if (caracLu == '\n')
- k--;
- }
- fgets(codeLevel, NB_BLOCS_LARGEUR * NB_BLOCS_HAUTEUR + 1, level);
- for (i = 0 ; i < NB_BLOCS_LARGEUR ; i++)
- {
- for (j = 0 ; j < NB_BLOCS_HAUTEUR ; j++)
- {
- switch (codeLevel[(i * NB_BLOCS_LARGEUR) + j])
- {
- case '0':
- map[j][i] = 0;
- break;
- case '1':
- map[j][i] = 1;
- break;
- case '2':
- map[j][i] = 2;
- break;
- case '3':
- map[j][i] = 3;
- break;
- case '4':
- map[j][i] = 4;
- break;
- case '5':
- map[j][i] = 5;
- break;
- }
- }
- } // Définit la map
- fclose(level);
- return nbLevel;
- }
-
- int saveLevel(int map[][NB_BLOCS_HAUTEUR])
- {
- FILE *level = NULL;
- int i = 0, j = 0;
- level = fopen("levels/level.lvl", "w+");
- if (level == NULL)
- return 0;
- for (i = 0 ; i < NB_BLOCS_LARGEUR ; i++)
- {
- for (j = 0 ; j < NB_BLOCS_HAUTEUR ; j++)
- {
- fprintf(level, "%d", map[j][i]);
- }
- }
- fclose(level);
- return 1;
- }
|