Mercurial > fhrl
changeset 15:55ee23d91598
pick items
| author | Radomir Dopieralski <sheep-devel@sheep.art.pl> |
|---|---|
| date | Thu, 14 Mar 2013 00:05:36 +0100 |
| parents | 7a3935873931 |
| children | 14a80ae3b325 |
| files | fhrl/level.py fhrl/mobs.py fhrl/stuff.png |
| diffstat | 3 files changed, 26 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/fhrl/level.py Wed Mar 13 23:36:51 2013 +0100 +++ b/fhrl/level.py Thu Mar 14 00:05:36 2013 +0100 @@ -58,7 +58,7 @@ if f == 1 ] random.shuffle(self.free) - self.hero = Hero(0, self.free.pop()) + self.hero = Hero(self.free.pop()) self.monsters = [ Mob(random.randrange(1, 4), self.free.pop()) for i in xrange(20) @@ -100,6 +100,11 @@ if (x, y) == (s.x, s.y): return s + def find_item(self, (x, y)): + for i in self.items: + if (x, y) == (i.x, i.y): + return i + def is_wall(self, (x, y)): if x < 0 or x > self.width: return True
--- a/fhrl/mobs.py Wed Mar 13 23:36:51 2013 +0100 +++ b/fhrl/mobs.py Thu Mar 14 00:05:36 2013 +0100 @@ -55,6 +55,12 @@ self.x, self.y = x, y self.kind = kind + def _pick_anim(self, display): + for i in xrange(8): + self.rect.move_ip((0, -i)) + yield + self.kill() + class Stuff(Sprite): def __init__(self, kind, (x, y)): @@ -85,14 +91,14 @@ def walk(self, d, level): x = self.x + DX[d] y = self.y + DY[d] + m = level.find_mob((x, y)) + if m: + raise ActBumpMob((x, y), m) if level.is_blocked((x, y)): s = level.find_stuff((x, y)) if s: raise ActBumpStuff((x, y), s) raise ActBlocked((x, y)) - m = level.find_mob((x, y)) - if m: - raise ActBumpMob((x, y), m) self.x, self.y = x, y return self._walk_anim(d) @@ -104,6 +110,10 @@ class Hero(Mob): + def __init__(self, (x, y)): + super(Hero, self).__init__(0, (x, y)) + self.items = [] + def act(self, level, display): keys = pygame.key.get_pressed() direction = None @@ -127,7 +137,13 @@ direction = 1 if direction is not None: try: - return [self.walk(direction, level)] + anims = [self.walk(direction, level)] + item = level.find_item((self.x, self.y)) + if item: + anims.append(item._pick_anim(display)) + self.items.append(item) + level.items.remove(item) + return anims except ActBumpStuff as e: if e.stuff.kind in (4, 6): e.stuff.kind += 1
