changeset 28:2ccb6995d85d

Monster fights!
author Radomir Dopieralski <moindev@sheep.art.pl>
date Tue, 18 Dec 2007 02:10:40 +0100
parents 9897f946b8cc
children f952dcc56f9e
files lib/game.py monster/__init__.py monster/jello.py monster/player.py
diffstat 4 files changed, 39 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/lib/game.py	Tue Dec 18 02:00:14 2007 +0100
+++ b/lib/game.py	Tue Dec 18 02:10:40 2007 +0100
@@ -82,6 +82,10 @@
                     self.try_walk(4)
                 elif keys[K_RIGHT] or key_pressed==K_RIGHT:
                     self.try_walk(2)
+                elif key_pressed==K_SPACE:
+                    av.wait()
+                    self.end_turn()
+
                 elif key_pressed==K_ESCAPE:
                     return
                 key_pressed = None
--- a/monster/__init__.py	Tue Dec 18 02:00:14 2007 +0100
+++ b/monster/__init__.py	Tue Dec 18 02:10:40 2007 +0100
@@ -95,6 +95,19 @@
         self.rect.move_ip(delta_x[self.facing]*3, delta_y[self.facing]*2)
         self.z += delta_y[self.facing]*2
         self.animate(self.frames[0], 1)
+
+    def anim_attack(self):
+        dx = delta_x[self.facing]*6
+        dy = delta_y[self.facing]*4-1
+        if self.step<=2:
+            dx = -dx
+            dy = -dy
+            self.h-=1
+        else:
+            self.h+=1
+        self.rect.move_ip(dx, dy)
+        self.animate(self.frames[0], 0)
+
     
     def destroy(self):
         try:
@@ -107,10 +120,10 @@
         except KeyError:
             pass
 
-    def hit(self):
+    def hit(self, damage=5):
         if self.dead:
             return
-        Mesg(self, "-5", color=(255,0,0))
+        Mesg(self, "-%d" % damage, color=(255,0,0))
         self.die()
         
     def die(self):
--- a/monster/jello.py	Tue Dec 18 02:00:14 2007 +0100
+++ b/monster/jello.py	Tue Dec 18 02:10:40 2007 +0100
@@ -2,16 +2,24 @@
 # -*- coding: utf-8 -*-
 
 import random
-
-from monster import Monster
+import monster
 
-class Mob(Monster):
+class Mob(monster.Monster):
     def __init__(self, pos, level):
-        Monster.__init__(self, pos, level, "jello.png")
+        monster.Monster.__init__(self, pos, level, "jello.png")
         
     def act(self):
         direction = random.randint(1, 4)
         try:
-            self.walk(direction)
-        except:
+            try:
+                self.walk(direction)
+            except monster.MoveBump, e:
+                self.attack(direction, e.monster)
+        except monster.MoveError:
             pass
+    
+    def attack(self, direction, monster):
+        self.step = 4
+        self.anim = self.anim_attack
+        monster.hit()
+
--- a/monster/player.py	Tue Dec 18 02:00:14 2007 +0100
+++ b/monster/player.py	Tue Dec 18 02:10:40 2007 +0100
@@ -45,9 +45,15 @@
         self.facing = facing
         self.image = self.frames[self.facing-1][0]
 
+    def wait(self):
+        self.step = 8
+        self.anim = self.anim_stand
    
     def attack(self, direction, monster):
         self.rotate(direction)
         self.step = 4
         self.anim = self.anim_attack
         monster.hit()
+        
+    def hit(self, damage=5):
+        Mesg(self, "-%d" % damage, color=(255,0,0))