diff --git a/.vscode/settings.json b/.vscode/settings.json index 27de834d67d37342165db9f07f7c12f5c16e7842..e99eb3d341fcd628102db037900fadfb48dc0e24 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -6,7 +6,8 @@ "stdio.h": "c", "sprites.h": "c", "sdl2-ttf-light.h": "c", - "stdlib.h": "c" + "stdlib.h": "c", + "utility.h": "c" }, "C_Cpp.errorSquiggles": "disabled" } \ No newline at end of file diff --git a/Makefile b/Makefile index f5a768d72d02893930fe1167c573f126f86f5d88..60b0c1e24e78cbd219fd45c7be044e5bbca6d4ba 100644 --- a/Makefile +++ b/Makefile @@ -20,6 +20,9 @@ doc: $(PROG) doxygen $(PROG) .PHONY: clean + +start: + $(PROG) clean: del /f /q *.o *~ $(PROG) rd /s /q latex html \ No newline at end of file diff --git a/library/World/world.c b/library/World/world.c index a0bcec589963c7ba110f9f0a248d4b9fc13e5763..ccc4f08cc6c89eec524573103147f2e4b3ce5a7f 100644 --- a/library/World/world.c +++ b/library/World/world.c @@ -1,5 +1,5 @@ #include "world.h" - +#include "../utility/utility.h" void update_data(world_t *world){ world->ligneArriver->y += (int)world->speed_h; @@ -65,14 +65,21 @@ int handle_sprite_collide(sprite_t *sp1, sprite_t *sp2, world_t *world, int make void init_walls(world_t *world){ - world->nb_murs = 6; - world->murs = malloc(sizeof(sprite_t) * 10); - world->murs[0] = init_sprite(world->murs[0], 48, 0, 3*METEORITE_SIZE, 6*METEORITE_SIZE); - world->murs[1] = init_sprite(world->murs[1], 252, 0, 3*METEORITE_SIZE, 6*METEORITE_SIZE); - world->murs[2] = init_sprite(world->murs[2], 16, -352, 1*METEORITE_SIZE, 5*METEORITE_SIZE); - world->murs[3] = init_sprite(world->murs[3], 188, -352, 7*METEORITE_SIZE, 5*METEORITE_SIZE); - world->murs[4] = init_sprite(world->murs[4], 48, -672, 3*METEORITE_SIZE, 6*METEORITE_SIZE); - world->murs[5] = init_sprite(world->murs[5], 252, -672, 3*METEORITE_SIZE, 6*METEORITE_SIZE); + world->nb_murs = 0; + world->murs = malloc(sizeof(sprite_t) * MAX_LENGTH*MAX_LINES); + int nblignes = 0; + char **txt = lirefile("maps/default.txt", &nblignes); + printf("aaiaa"); + for (int i = 0; i < nblignes; i++) { + for (int j = 0; j < 26; j++) { + if (txt[i][j] == '1'){ + world->murs[world->nb_murs] = init_sprite(world->murs[world->nb_murs], j*METEORITE_SIZE, i*METEORITE_SIZE, METEORITE_SIZE, METEORITE_SIZE); + world->nb_murs++; + } + } + printf("%s\n", txt[i]); + } + printf("aaaa"); } diff --git a/library/World/world.o b/library/World/world.o index 060c0decb47e2b855d20b5afc654f6b2f57a1521..2675f57fe1da88dbd25d5bbf1553385a8194833c 100644 Binary files a/library/World/world.o and b/library/World/world.o differ diff --git a/library/utility/utility.c b/library/utility/utility.c index ae5de2ccb3af6f9bf488554331979d0e8d3eea31..74927a35b85c22d9bfdd1d9a1e3e092bd14b8260 100644 --- a/library/utility/utility.c +++ b/library/utility/utility.c @@ -21,4 +21,24 @@ char * int_to_str(int n) { char *str = malloc(sizeof(char) * 10); sprintf(str, "%d", n); return str; +} + +char **lirefile(char *filename, int *num_lines) { + FILE *file = fopen(filename, "r"); + if (file == NULL) { + perror("Error opening file"); + return NULL; + } + + char **lines = malloc(MAX_LINES * sizeof(char *)); + *num_lines = 0; + char buffer[MAX_LENGTH]; + while (fgets(buffer, MAX_LENGTH, file) != NULL && *num_lines < MAX_LINES) { + lines[*num_lines] = malloc(MAX_LENGTH * sizeof(char)); + sprintf(lines[*num_lines], "%s", buffer); + (*num_lines)++; + } + + fclose(file); + return lines; } \ No newline at end of file diff --git a/library/utility/utility.h b/library/utility/utility.h index f3d178bf3d810ba12138475712e82cee2ea84e10..0cc74088edd88c02f5a16766b9ec7a3f5d856a3d 100644 --- a/library/utility/utility.h +++ b/library/utility/utility.h @@ -12,6 +12,8 @@ #ifndef Utility_h #define Utility_h +#define MAX_LINES 1000 +#define MAX_LENGTH 200 /** * \brief Concatène plusieurs chaines de caractères @@ -31,4 +33,14 @@ char * strcats(char* dest, int num_args, ...); */ char * int_to_str(int n); +/** + * \brief Lit un fichier et retourne un tableau de lignes + * + * \param filename Le nom du fichier + * \param num_lines Le nombre de lignes + * \return char** + */ + +char ** lirefile(char *filename, int *num_lines); + #endif \ No newline at end of file diff --git a/library/utility/utility.o b/library/utility/utility.o index 2438f489adce30b549e42495996d36b39443b34e..33d9e361a2a8b4f81fdf340747aee3ffd720a1bd 100644 Binary files a/library/utility/utility.o and b/library/utility/utility.o differ diff --git a/maps/default.txt b/maps/default.txt new file mode 100644 index 0000000000000000000000000000000000000000..363f4e6991832f637feb6fe31b6b4f415512649e --- /dev/null +++ b/maps/default.txt @@ -0,0 +1,2 @@ +010000000011110000000000 +001001111100011100000110 \ No newline at end of file diff --git a/spacecorridor.exe b/spacecorridor.exe index 7b741295f5dbf25ab6e5b4520d2b0818900af73d..00b12e42615231bc9d3f69e56c936d13f4c21939 100644 Binary files a/spacecorridor.exe and b/spacecorridor.exe differ