X-Git-Url: https://git.ctpug.org.za/?a=blobdiff_plain;f=erdslangetjie%2Fplayer.py;h=7c80263243c094b611b432c1ab70053e9510c3be;hb=6bbed02caa01687a8d55c8ac36ec761a3025db93;hp=fd445549ed530acbf1f71cb5d8e20af3dbedda08;hpb=6b9b0ccf122251850a75970305531bc4b4e8fca8;p=erdslangetjie.git diff --git a/erdslangetjie/player.py b/erdslangetjie/player.py index fd44554..7c80263 100644 --- a/erdslangetjie/player.py +++ b/erdslangetjie/player.py @@ -43,9 +43,10 @@ class Nemesis(FigureSprite): super(Nemesis, self).__init__() self.sprite = load_image('sprites/nemesis.png') self.reset_pos() + self.deadends = [] self.been = [] - def move(self, level, caught): + def move(self, level, player_pos): if not self.on_board(): # Advance towards the map a step at a time self.pos = (self.pos[0] + 1, self.pos[1]) @@ -53,17 +54,23 @@ class Nemesis(FigureSprite): self.pos = level.enter_pos return False # AI goes here + # First, if we're standing next to a gate, we attack it + neighbours = [(self.pos[0] + 1, self.pos[1]), + (self.pos[0] - 1, self.pos[1]), + (self.pos[0], self.pos[1] + 1), + (self.pos[0], self.pos[1] - 1)] + for cand in neighbours: + if level.is_gate(cand) and level.blocked(cand): + level.damage_gate(cand) + return True steps = 0 self.been.append(self.pos) - for direction in [(1, 0), (-1, 0), (0, -1), (0, 1)] * 2: + for direction in [(1, 0), (-1, 0), (0, -1), (0, 1)]: new_pos = (self.pos[0] + direction[0], self.pos[1] + direction[1]) if self.can_move(direction, level) and new_pos not in self.been: self.pos = new_pos self.been.append(new_pos) steps += 1 - if steps >= 2: - break - if caught(): break if steps == 0: self.been = []