Mercurial > jelly
changeset 5:69ce5e46b825
Make the jellies behave differently
| author | Radomir Dopieralski <sheep-devel@sheep.art.pl> |
|---|---|
| date | Sun, 11 Mar 2012 20:32:12 +0100 |
| parents | b35388027227 |
| children | 4f96d83a35fb |
| files | jelly/jelly.png jelly/mobs.py jelly/sprites.py |
| diffstat | 3 files changed, 30 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/jelly/mobs.py Sun Mar 11 19:25:57 2012 +0100 +++ b/jelly/mobs.py Sun Mar 11 20:32:12 2012 +0100 @@ -59,6 +59,21 @@ color = 2 animation = [56, 56, 57, 57, 57, 57] + def control(self, level): + if dist(level.pc.pos, self.pos) <= 1: + level.attack(self, pos2dir(self.pos, level.pc.pos), level.pc) + return + x, y = self.pos + possible = [d for (d, (dx, dy)) in enumerate(zip(DX, DY)) + if level[x + dx, y + dy]] + # Run away from the player + direction = max(possible, + key=lambda d: dist((x+DX[d], y+DY[d]), level.pc.pos)) + try: + level.walk(self, direction) + except level.Blocked: + pass + class PurpleJelly(Mob): name = 'purple jelly' @@ -71,6 +86,21 @@ color = 3 animation = [66, 66, 67, 67, 67, 67] + def control(self, level): + if dist(level.pc.pos, self.pos) <= 1: + level.attack(self, pos2dir(self.pos, level.pc.pos), level.pc) + return + x, y = self.pos + possible = [d for (d, (dx, dy)) in enumerate(zip(DX, DY)) + if level[x + dx, y + dy]] + # Move towards the player + direction = min(possible, + key=lambda d: dist((x+DX[d], y+DY[d]), level.pc.pos)) + try: + level.walk(self, direction) + except level.Blocked: + pass + class BlueJelly(Mob): name = 'blue jelly'
--- a/jelly/sprites.py Sun Mar 11 19:25:57 2012 +0100 +++ b/jelly/sprites.py Sun Mar 11 20:32:12 2012 +0100 @@ -74,7 +74,6 @@ yield None def attack_animation(self, direction): - yield None self.rect.move_ip((DX[direction]*4, DY[direction]*2-2)) yield None self.rect.move_ip((DX[direction]*6, DY[direction]*4))
