From d5a55df04e88672d2275298719a9039ebcf29fea Mon Sep 17 00:00:00 2001 From: Neil Date: Sat, 5 Mar 2016 23:18:31 +0200 Subject: [PATCH] Random roaches --- koperkapel/gamelib/enemy_roach.py | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/koperkapel/gamelib/enemy_roach.py b/koperkapel/gamelib/enemy_roach.py index 91b404b..2645efa 100644 --- a/koperkapel/gamelib/enemy_roach.py +++ b/koperkapel/gamelib/enemy_roach.py @@ -16,6 +16,7 @@ def get_enemy_roach(level): roach.level = level roach.move = partial(move, roach) roach.last_moved = 0 + roach.start_pos = None each_tick(roach.move) return roach @@ -24,5 +25,21 @@ def move(roach, dt): """Enemy roach move method""" roach.last_moved += dt if roach.last_moved > 0.5: - print('Moving') + if not roach.start_pos: + roach.start_pos = roach.game_pos roach.last_moved = 0 + attempt = 0 + while attempt < 4: + attempt += 1 + dx = random.randint(-1, 1) + dy = random.randint(-1, 1) + if abs(roach.game_pos[0] + dx - roach.start_pos[0]) > 2: + continue + if abs(roach.game_pos[1] + dy - roach.start_pos[1]) > 2: + continue + if roach.level.can_walk(roach.game_pos[0] + dx, roach.game_pos[1] + dy, 'floor'): + enemy = roach.level.get_enemy(roach.game_pos[0] + dx, roach.game_pos[1] + dy) + if enemy and enemy is not roach: + continue + roach.game_pos = (roach.game_pos[0] + dx, roach.game_pos[1] + dy) + break -- 2.34.1