diff options
Diffstat (limited to 'pacman.c')
-rw-r--r-- | pacman.c | 9 |
1 files changed, 9 insertions, 0 deletions
@@ -13,6 +13,13 @@ enum { count_get_out_moves = 5 }; +static int is_up_move_blocked(const struct ghost_type *ghost, + enum intersection_type intersection) +{ + return intersection == yellow_block && (ghost->direction == left || + ghost->direction == right); +} + static void pathfinder_stage(game_space field, struct pacman pac, struct ghost_type *red_ghost, struct ghost_type *pink_ghost, @@ -48,6 +55,8 @@ static void pathfinder_stage(game_space field, struct pacman pac, break; } intersection = get_intersection(field, current_ghost); + if(is_up_move_blocked(current_ghost, intersection)) + continue; if(intersection != direct_path) redirect(field, intersection, current_ghost, target_point, search_method); |