Skip to content
Snippets Groups Projects
Commit cabad9ed authored by Arnaud Albiez's avatar Arnaud Albiez
Browse files

Ajout des movement

parent fb16df04
No related merge requests found
......@@ -9,6 +9,7 @@ int main(void)
{
Affichage_grid(grid);
char entry = fgetc(stdin);
printf("%c\n", entry);
switch (entry)
{
case 'e': {
......@@ -31,6 +32,9 @@ int main(void)
move_player(grid, RIGHT);
break;
}
case "\n":{
}
}
}
free_grid(grid);
......
#include "player.h"
#include "grid.h"
void move_player(struct Grid *grid, enum Direction direction)
struct coordonee position_to(int col, int row, enum Direction direction)
{
struct coordonee result;
switch (direction)
{
case TOP: {
if (get_grid(grid, grid->position->col, grid->position->row - 1) == NONE)
{
change_cell_grid(grid, grid->position->col, grid->position->row, NONE);
grid->position->row = -1;
change_cell_grid(grid, grid->position->col, grid->position->row, PLAYER);
}
else if (get_grid(grid, grid->position->col, grid->position->row - 1) == GOAL)
{
change_cell_grid(grid, grid->position->col, grid->position->row, NONE);
grid->position->row = -1;
change_cell_grid(grid, grid->position->col, grid->position->row, PLAYER);
}
else if (get_grid(grid, grid->position->col, grid->position->row - 1) == BOX)
{
if (get_grid(grid, grid->position->col, grid->position->row - 2) != WALL)
{
change_cell_grid(grid, grid->position->col, grid->position->row, NONE);
grid->position->row = -1;
change_cell_grid(grid, grid->position->col, grid->position->row, PLAYER);
change_cell_grid(grid, grid->position->col, grid->position->row - 1, BOX);
}
else
{
return;
}
break;
}
}
case BOTTOM: {
if (get_grid(grid, grid->position->col, grid->position->row + 1) == NONE)
{
change_cell_grid(grid, grid->position->col, grid->position->row, NONE);
grid->position->row = +1;
change_cell_grid(grid, grid->position->col, grid->position->row, PLAYER);
}
else if (get_grid(grid, grid->position->col, grid->position->row + 1) == GOAL)
{
change_cell_grid(grid, grid->position->col, grid->position->row, NONE);
grid->position->row = +1;
change_cell_grid(grid, grid->position->col, grid->position->row, PLAYER);
}
else if (get_grid(grid, grid->position->col, grid->position->row + 1) == BOX)
{
if (get_grid(grid, grid->position->col, grid->position->row + 2) != WALL)
{
change_cell_grid(grid, grid->position->col, grid->position->row, NONE);
grid->position->row = +1;
change_cell_grid(grid, grid->position->col, grid->position->row, PLAYER);
change_cell_grid(grid, grid->position->col, grid->position->row + 1, BOX);
}
break;
}
}
case LEFT: {
if (get_grid(grid, grid->position->col - 1, grid->position->row) == NONE)
{
change_cell_grid(grid, grid->position->col, grid->position->row, NONE);
grid->position->col = +1;
change_cell_grid(grid, grid->position->col, grid->position->row, PLAYER);
}
else if (get_grid(grid, grid->position->col + 1, grid->position->row) == GOAL)
{
change_cell_grid(grid, grid->position->col, grid->position->row, NONE);
grid->position->col = +1;
change_cell_grid(grid, grid->position->col, grid->position->row, PLAYER);
}
else if (get_grid(grid, grid->position->col + 1, grid->position->row) == BOX)
{
if (get_grid(grid, grid->position->col + 2, grid->position->row) != WALL)
{
change_cell_grid(grid, grid->position->col, grid->position->row, NONE);
grid->position->col = +1;
change_cell_grid(grid, grid->position->col, grid->position->row, PLAYER);
change_cell_grid(grid, grid->position->col + 1, grid->position->row, BOX);
}
else
{
return;
}
break;
}
case TOP:
result.col = col;
result.row = row - 1;
break;
case BOTTOM:
result.col = col;
result.row = row + 1;
break;
case LEFT:
result.col = col - 1;
result.row = row;
break;
case RIGHT:
result.col = col + 1;
result.row = row;
break;
}
return result;
}
case RIGHT: {
if (get_grid(grid, grid->position->col - 1, grid->position->row) == NONE)
{
change_cell_grid(grid, grid->position->col, grid->position->row, NONE);
grid->position->col = -1;
change_cell_grid(grid, grid->position->col, grid->position->row, PLAYER);
}
else if (get_grid(grid, grid->position->col - 1, grid->position->row) == GOAL)
{
change_cell_grid(grid, grid->position->col, grid->position->row, NONE);
grid->position->col = -1;
change_cell_grid(grid, grid->position->col, grid->position->row, PLAYER);
}
else if (get_grid(grid, grid->position->col - 1, grid->position->row) == BOX)
{
if (get_grid(grid, grid->position->col - 2, grid->position->row) != WALL)
{
change_cell_grid(grid, grid->position->col, grid->position->row, NONE);
grid->position->col = -1;
change_cell_grid(grid, grid->position->col, grid->position->row, PLAYER);
change_cell_grid(grid, grid->position->col - 1, grid->position->row, BOX);
}
else
{
return;
}
break;
}
void move_player(struct Grid *grid, enum Direction direction)
{
struct coordonee next_position = position_to(grid->position->col, grid->position->row, direction);
if (get_grid(grid, next_position.col, next_position.row))
{
grid->position->col = next_position.col;
grid->position->row = next_position.row;
}
else{
return;
}
return;
}
\ No newline at end of file
......@@ -11,6 +11,13 @@ enum Direction
BOTTOM = 's'
};
struct coordonee
{
int col, row;
};
struct Player
{
int col, row;
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment