#include "player.h" #include "grid.h" struct coordonee position_to(int col, int row, enum Direction direction) { struct coordonee result; switch (direction) { 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; } int move_box(struct Grid *grid, int position_col, int position_row, enum Direction direction) { struct coordonee next_position = position_to(position_col, position_row, direction); if (get_grid(grid, next_position.col, next_position.row) == NONE) { change_cell_grid(grid, position_col, position_row, NONE); change_cell_grid(grid, next_position.col, next_position.row, BOX); return 1; } else{ return -1; } } 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) == NONE) { grid->position->col = next_position.col; grid->position->row = next_position.row; } else if(get_grid(grid, next_position.col, next_position.row) == BOX) { if(move_box(grid, next_position.col, next_position.row, direction) == 1){ grid->position->col = next_position.col; grid->position->row = next_position.row; } else{ return; } } else{ return; } }