diff --git a/player.c b/player.c new file mode 100644 index 0000000000000000000000000000000000000000..4745b78a81a5157c5a1f8aca01d449f49313e260 --- /dev/null +++ b/player.c @@ -0,0 +1,27 @@ +#include "player.h" +#include "grid.h" + +void move_player(grid* G, enum Direction D) { + int target_row = G->player.y, target_column = G->player.x; + switch (D) { + case LEFT: + target_column--; + break; + case BOTTOM: + target_row++; + break; + case TOP: + target_row--; + break; + case RIGHT: + target_column++; + } + enum CaseType target = G->game_grid[target_row][target_column]; + if (target == WALL || target == BOX || target == GOAL) { + return; + } + G->game_grid[target_row][target_column] = G->game_grid[G->player.y][G->player.x]; + G->game_grid[G->player.y][G->player.x] = target; + G->player.x = target_column; + G->player.y = target_row; +} diff --git a/test.c b/test.c index 27bfd065b3b43662bf82b2c7f2383bd22e3da85b..99ebc4c89d386d1fde3e220f82b0aa73f0f79278 100644 --- a/test.c +++ b/test.c @@ -2,6 +2,7 @@ #include <stdlib.h> #include <stdbool.h> #include "grid.h" +#include "player.h" int main01() { @@ -38,15 +39,25 @@ int main02() { } int main03() { - // Test de la fonction display_stdio() et display_ncurses() dans grid.c + // Test de la fonction display() dans grid.c grid* level = init_level("level1.txt"); - // display_stdio(level); - display_ncurses(level); + display(level); free_grid(level); return 0; } int main() { - + // Test de la fonction move_player() dans player.c + grid* level = init_level("level1.txt"); + char quitCar = '\0'; + while (quitCar != 'q') { + printf("Appuyez sur \"q\" pour quitter\n"); + printf("Appuyez sur \"h, j, k, l\" pour vous déplacer\n\n"); + display(level); + printf("Votre choix : "); + scanf(" %c", &quitCar); + move_player(level, quitCar); + } + free_grid(level); return 0; }