Added goomba-like Zombie enemy
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
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')
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:
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()
richter.update()
if richter.position[1] < 0:
richter.position = [richter.position[0],480]
+ zombie.update()
n = 0
def fpsthing():