#include "player.h" #include "grid.h" void move_player(struct Grid* grid, enum Direction direction){ 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 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; } } } return; }