commit:ef2a7ea80f8f3ba6c1c9e05cf757c3412e3e5f16
author:Chip Black
committer:Chip Black
date:Mon Jul 7 20:40:22 2008 -0500
parents:51dd80f39a729d19e7cb97e5dabf101b57e0537e
Added goomba-like Zombie enemy
diff --git a/platformtest.py b/platformtest.py
line changes: +60/-2
index 2604b68..79f270a
--- a/platformtest.py
+++ b/platformtest.py
@@ -54,8 +54,8 @@ class Richter(Actor):
 		self.delta = [0,0]
 		self.jumping = False
 		self.grounded = self.collideDelta((0,-1))
-
-
+	
+	
 	def jump(self):
 		if not self.jumping and self.grounded:
 			self.delta[1] = 15.0
@@ -69,6 +69,10 @@ class Richter(Actor):
 			self.delta[1] = 0.0
 
 
+	def bounce(self):
+		self.delta[1] = -self.delta[1]
+
+
 	def walkRight(self):
 		self.delta[0] = 2
 		self.setState('walk_r')
@@ -113,6 +117,55 @@ richter.setPosition(32, 64)
 main.add(richter)
 camera.setFocus(richter)
 
+class Zombie(Actor):
+	def __init__(self, surfaces=None):
+		Actor.__init__(self, surfaces)
+
+		self.defineState('walk_r',
+			Sprite(['Sprites/zombie soldier/zombiesoldierwalk_%d.png' % n for n in range(1,5)],
+			framerate=10.0, scale=2.0, gravity=(CENTER,BOTTOM)))
+		self.defineState('walk_l',
+			Sprite(['Sprites/zombie soldier/zombiesoldierwalk_%d.png' % n for n in range(1,5)],
+			mirror=True, framerate=10.0, scale=2.0, gravity=(CENTER,BOTTOM)))
+
+		self.setState('walk_r')
+		self.direction = 0
+		self.disabled = 0
+		self.topbox = pygame.Rect(self.states['walk_l'].hitbox)
+		self.topbox.height = 10
+
+	def update(self):
+		if self.disabled > 0:
+			if self.disabled % 2:
+				self.setState('walk_r')
+			else:
+				self.setState('walk_l')
+			self.disabled -= 1
+			if self.disabled == 0:
+				if self.direction == 0:
+					self.setState('walk_r')
+				else:
+					self.setState('walk_l')
+		else:
+			if self.direction == 0:
+				if self.move((1, 0)):
+					self.direction = 1
+					self.setState('walk_l')
+			elif self.direction == 1:
+				if self.move((-1, 0)):
+					self.direction = 0
+					self.setState('walk_r')
+
+			self.topbox.bottom = self.position[1] + 72
+			self.topbox.left = self.position[0] - 31
+			if self.topbox.collidepoint(richter.position):
+				self.disabled = 120
+				richter.bounce()
+
+zombie = Zombie(stage.surfaces)
+zombie.setPosition(512, 64)
+main.add(zombie)
+
 
 def input(e):
 	if e.type == pygame.KEYDOWN:
@@ -124,6 +177,10 @@ def input(e):
 			richter.jump()
 		elif e.key == pygame.K_1:
 			stage.toggleDrawSurfaces()
+		elif e.key == pygame.K_2:
+			camera.clearBbox()
+		elif e.key == pygame.K_3:
+			camera.setBbox(main.bbox)
 	elif e.type == pygame.KEYUP:
 		if e.key == pygame.K_LEFT or e.key == pygame.K_RIGHT:
 			richter.idle()
@@ -135,6 +192,7 @@ def update():
 	richter.update()
 	if richter.position[1] < 0:
 		richter.position = [richter.position[0],480]
+	zombie.update()
 
 n = 0
 def fpsthing():