Rearranged files to use Richter as a module
-#!/usr/bin/env python
-
-import random
-import sys
-import pygame
-from pygame.locals import *
-from Sprite import Sprite
-import Engine
-from Numeric import array,reshape
-
-try:
- from OpenGL.GL import *
- from OpenGL.GLU import *
-except:
- print 'This requires PyOpenGL'
- raise SystemExit
-
-
-#resolution = (1280,1024)
-resolution = (640,480)
-#resolution = (320,240)
-
-if sys.argv[1:]:
- spritefile = sys.argv[1:]
-else:
- spritefile = 'img/ball.png'
-
-class Bouncer:
- def __init__(self):
- self.velocity = [random.uniform(-10,10),random.uniform(-10,10)]
- self.sprite = Sprite(spritefile)
- self.sprite.framerate = 9.0
- self.sprite.play()
- #self.sprite.color = (random.random(),random.random(),random.random(), 0.5)
- self.sprite.position = [random.randrange(0,resolution[0]),random.randrange(0,resolution[1])]
- self.sprite.gen_displaylist()
- self.draw = self.sprite.draw
-
- def update(self):
- if self.sprite.position[0] < 0:
- self.sprite.position[0] = 0
- self.velocity[0] = -self.velocity[0]
- elif self.sprite.position[0] > resolution[0]:
- self.sprite.position[0] = resolution[0]
- self.velocity[0] = -self.velocity[0]
- if self.sprite.position[1] < 0:
- self.sprite.position[1] = 0
- self.velocity[1] = -self.velocity[1]
- elif self.sprite.position[1] > resolution[1]:
- self.sprite.position[1] = resolution[1]
- self.velocity[1] = -self.velocity[1]
-
- #self.velocity[1] -= 1.0
-
- self.sprite.position[0] += self.velocity[0]
- self.sprite.position[1] += self.velocity[1]
-
-Engine.init(resolution)
-
-bouncers = []
-for i in range(0,1000):
- h = Bouncer()
- bouncers.append(h)
-
-pygame.display.set_caption("bouncetest")
-
-def update():
- for b in bouncers:
- b.update()
-
-Engine.updaters.append(update)
-
-def draw():
- for b in bouncers:
- b.draw()
-
-Engine.drawers.append(draw)
-
-n = 0
-def fpsthing():
- global n
- n += 1
- if n == 100:
- fps = "%0.1f FPS" % Engine.fpsman.get_fps()
- pygame.display.set_caption("bouncetest [%s]" % fps)
- print fps
- n = 0
-
-Engine.updaters.append(fpsthing)
-
-Engine.run()
-tilesize 64 64
-bbox 19 7
-texture img/block.png
-tile 0 0
-tile 1 0
-tile 2 0
-tile 3 0
-tile 4 0
-tile 5 0
-tile 6 0
-tile 7 0
-tile 8 0
-tile 9 0
-
-tile 3 1
-tile 4 1
-tile 4 2
-tile 4 3
-tile 4 4
-
-tile 6 1
-tile 6 2
-
-solid 0 0 10 1
-surface 2 1 4 2
-solid 4 1 5 5
-solid 6 1 7 3
-
-tile 10 0
-tile 12 0
-tile 13 0
-tile 14 0
-tile 15 0
-tile 16 0
-tile 17 0
-tile 18 0
-
-tile 12 1
-tile 13 1
-tile 14 1
-tile 14 2
-
-solid 10 0 11 1
-solid 12 0 19 1
-surface 12 1 13 2
-solid 13 1 15 2
-solid 14 2 15 3
-
-tilesize 1 1
-texture img/ByteIco.png
-tile 263 263
-tilesize 64 64
-texture img/block.png
-tile 0 0
-tile 0 1
-tile 1 0
-tile 1 1
-texture img/star.png
-tile 232 421
-tile 390 193
-tile 548 66
-tile 311 367
-tile 430 12
-tile 88 64
-tile 90 123
-tile 286 370
-tile 263 100
-tile 338 84
-tile 231 47
-tile 132 415
-tile 399 183
-tile 111 470
-tile 445 67
-tile 427 159
-tile 237 103
-tile 533 223
-tile 26 409
-tile 382 87
-tile 507 82
-tile 329 380
-tile 381 417
-tile 518 317
-tile 378 197
-tile 607 463
-tile 502 274
-tile 406 235
-tile 185 249
-tile 448 412
-tile 418 29
-tile 248 121
-tile 177 85
-tile 327 352
-tile 466 39
-tile 591 306
-tile 106 95
-tile 570 209
-tile 163 466
-tile 100 185
-tile 376 469
-tile 586 33
-tile 383 251
-tile 178 209
-tile 121 211
-tile 408 289
-tile 539 222
-tile 476 245
-tile 282 274
-tile 557 90
-tile 249 80
-tile 563 447
-tile 18 229
-tile 255 244
-tile 358 354
-tile 563 323
-tile 292 28
-tile 497 241
-tile 379 67
-tile 260 51
-tile 159 163
-tile 209 304
-tile 541 28
-tile 635 475
-tile 479 130
-tile 473 45
-tile 127 308
-tile 281 420
-tile 332 28
-tile 177 478
-tile 413 12
-tile 265 403
-tile 216 147
-tile 105 117
-tile 64 417
-tile 164 137
-tile 131 416
-tile 386 67
-tile 511 111
-tile 239 419
-tile 600 445
-tile 356 369
-tile 314 266
-tile 153 473
-tile 239 221
-tile 359 135
-tile 288 133
-tile 511 449
-tile 234 401
-tile 333 71
-tile 40 78
-tile 426 235
-tile 251 195
-tile 324 432
-tile 25 334
-tile 205 37
-tile 219 284
-tile 358 414
-tile 260 395
-tile 202 22
-tile 594 64
-tile 187 39
-tile 71 231
-tile 428 5
-tile 180 302
-tile 435 93
-tile 10 161
-tile 45 113
-tile 224 99
-tile 46 401
-tile 196 465
-tile 432 376
-tile 194 342
-tile 375 76
-tile 437 174
-tile 197 275
-tile 208 92
-tile 195 118
-tile 618 202
-tile 554 406
-#!/usr/bin/env python
-
-import pygame
-from Sprite import *
-from Collage import *
-from Surface import *
-from Actor import *
-from Stage import *
-from Camera import *
-import Engine
-
-#resolution = (1280,1024)
-resolution = (640,480)
-#resolution = (320,240)
-
-Engine.init(resolution)
-
-pygame.display.set_caption("platformtest")
-
-stage = Stage()
-main = Layer('data/example1')
-stage.addLayerFront(main)
-stage.addLayerBack(Layer('data/stars', 1.0, 0.25))
-stage.setSurfaces('data/example1')
-
-candelabra = Sprite(['Sprites/candelabra_short/cand_s_%d.png' % x for x in range(1,4)])
-candelabra.setPosition(64, 64)
-candelabra.setScale(2.0)
-candelabra.setGravity(CENTER, BOTTOM)
-candelabra.setFramerate(10.0)
-candelabra.play()
-
-main.add(candelabra)
-Engine.drawers.append(stage.draw)
-
-camera = Camera(stage)
-camera.setBbox(main.bbox)
-Engine.updaters.append(camera.update)
-
-class Richter(Actor):
- def __init__(self, surfaces=None):
- Actor.__init__(self, surfaces)
-
- self.defineState('walk_l',
- Sprite(['Sprites/Richter/richter%d.png' % n for n in range(0,8)],
- framerate=10.0, scale=2.0, gravity=(CENTER,BOTTOM)))
- self.defineState('walk_r',
- Sprite(['Sprites/Richter/richter%d.png' % n for n in range(0,8)], mirror=True,
- framerate=10.0, scale=2.0, gravity=(CENTER,BOTTOM)))
- self.defineState('idle_l',
- Sprite("Sprites/Richter/richter0.png", scale=2.0, gravity=(CENTER,BOTTOM)))
- self.defineState('idle_r',
- Sprite("Sprites/Richter/richter0.png", mirror=True, scale=2.0, gravity=(CENTER,BOTTOM)))
- self.setState('idle_r')
-
- 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.jumping = True
- self.grounded = False
-
-
- def jumpCancel(self):
- self.jumping = False
- if self.delta[1] > 0.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')
-
-
- def walkLeft(self):
- self.delta[0] = -2
- self.setState('walk_l')
-
-
- def idle(self):
- if self.currentstate == 'walk_l':
- self.setState('idle_l')
- else:
- self.setState('idle_r')
- self.delta[0] = 0
-
-
- def update(self):
- if self.grounded:
- self.delta[1] = 0
- else:
- if self.delta[1] > -15.0:
- self.delta[1] -= 0.5
- if self.grounded and self.delta[0] != 0:
- # Climb up inclines (visually poetic, is it not?)
- if self.collideDelta(self.delta):
- delta = list(self.delta)
- for delta[1] in range(1, abs(delta[0]) + 1):
- if not self.collideDelta(delta):
- self.delta = delta
- break
- # ... and walk down slopes
- else:
- self.delta[1] = -abs(self.delta[0])
- self.move(self.delta)
- self.grounded = self.collideDelta((0,-1))
-
-
-richter = Richter(stage.surfaces)
-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:
- if e.key == pygame.K_LEFT:
- richter.walkLeft()
- elif e.key == pygame.K_RIGHT:
- richter.walkRight()
- elif e.key == pygame.K_UP:
- 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.key == pygame.K_ESCAPE:
- Engine.stop()
- elif e.type == pygame.KEYUP:
- if e.key == pygame.K_LEFT or e.key == pygame.K_RIGHT:
- richter.idle()
- elif e.key == pygame.K_UP:
- richter.jumpCancel()
- elif e.type == pygame.QUIT:
- Engine.stop()
-
-Engine.eventhandlers.append(input)
-
-def update():
- richter.update()
- if richter.position[1] < 0:
- richter.position = [richter.position[0],480]
- zombie.update()
-
-Engine.updaters.append(update)
-
-n = 0
-def fpsthing():
- global n
- n += 1
- if n == 100:
- fps = "%0.1f FPS" % Engine.fpsman.get_fps()
- pygame.display.set_caption("platformtest [%s]" % fps)
- print fps
- n = 0
-
-Engine.updaters.append(fpsthing)
-
-Engine.run()
-#!/usr/bin/env python
-
-import pygame
-from Sprite import *
-from Surface import *
-import Engine
-
-#resolution = (1280,1024)
-resolution = (640,480)
-#resolution = (320,240)
-
-Engine.init(resolution)
-
-pygame.display.set_caption("surfacetest")
-
-surfaces = SurfaceSet('data/example1')
-# Octagon
-#surfaces.append(Surface( (520,240),(461,98) ))
-#surfaces.append(Surface( (461,98),(319,40) ))
-#surfaces.append(Surface( (319,40),(178,98) ))
-#surfaces.append(Surface( (178,98),(120,240) ))
-#surfaces.append(Surface( (120,240),(178,381) ))
-#surfaces.append(Surface( (178,381),(320,440) ))
-#surfaces.append(Surface( (320,440),(461,381) ))
-#surfaces.append(Surface( (461,381),(520,240) ))
-
-# Concave
-#surfaces.append(Surface( (200,200), (200,400) ))
-#surfaces.append(Surface( (200,400), (300,300) ))
-#surfaces.append(Surface( (300,300), (400,300) ))
-#surfaces.append(Surface( (400,300), (500,400) ))
-#surfaces.append(Surface( (500,400), (500,200) ))
-#surfaces.append(Surface( (500,200), (200,200) ))
-
-player = Sprite('img/star.png')
-player.setGravity(CENTER, CENTER)
-player.position = [resolution[0]/2,resolution[1]/2]
-
-class gamestate:
- direction = [0,0]
- colliding = False
-
-def input(e):
- if e.type == pygame.KEYDOWN:
- if e.key == pygame.K_LEFT:
- gamestate.direction[0] = -1
- elif e.key == pygame.K_RIGHT:
- gamestate.direction[0] = 1
- elif e.key == pygame.K_DOWN:
- gamestate.direction[1] = -1
- elif e.key == pygame.K_UP:
- gamestate.direction[1] = 1
- elif e.type == pygame.KEYUP:
- if e.key == pygame.K_LEFT or e.key == pygame.K_RIGHT:
- gamestate.direction[0] = 0
- elif e.key == pygame.K_UP or e.key == pygame.K_DOWN:
- gamestate.direction[1] = 0
-
-Engine.eventhandlers.append(input)
-
-
-def update():
- player.position[0] += gamestate.direction[0]
- player.position[1] += gamestate.direction[1]
- if surfaces.collidePoint(player.position):
- if not gamestate.colliding:
- player.setColor(1.0,0.2,0.2)
- gamestate.colliding = True
- else:
- if gamestate.colliding:
- player.setColor(1.0,1.0,1.0)
- gamestate.colliding = False
-
-Engine.updaters.append(update)
-
-def draw():
- surfaces.draw()
- player.draw()
-
-Engine.drawers.append(draw)
-
-Engine.run()
+#!/usr/bin/env python
+
+import random
+import sys
+import pygame
+from pygame.locals import *
+from Richter.Sprite import Sprite
+import Richter.Engine as Engine
+from Numeric import array,reshape
+
+try:
+ from OpenGL.GL import *
+ from OpenGL.GLU import *
+except:
+ print 'This requires PyOpenGL'
+ raise SystemExit
+
+
+#resolution = (1280,1024)
+resolution = (640,480)
+#resolution = (320,240)
+
+if sys.argv[1:]:
+ spritefile = sys.argv[1:]
+else:
+ spritefile = 'img/ball.png'
+
+class Bouncer:
+ def __init__(self):
+ self.velocity = [random.uniform(-10,10),random.uniform(-10,10)]
+ self.sprite = Sprite(spritefile)
+ self.sprite.framerate = 9.0
+ self.sprite.play()
+ #self.sprite.color = (random.random(),random.random(),random.random(), 0.5)
+ self.sprite.position = [random.randrange(0,resolution[0]),random.randrange(0,resolution[1])]
+ self.sprite.gen_displaylist()
+ self.draw = self.sprite.draw
+
+ def update(self):
+ if self.sprite.position[0] < 0:
+ self.sprite.position[0] = 0
+ self.velocity[0] = -self.velocity[0]
+ elif self.sprite.position[0] > resolution[0]:
+ self.sprite.position[0] = resolution[0]
+ self.velocity[0] = -self.velocity[0]
+ if self.sprite.position[1] < 0:
+ self.sprite.position[1] = 0
+ self.velocity[1] = -self.velocity[1]
+ elif self.sprite.position[1] > resolution[1]:
+ self.sprite.position[1] = resolution[1]
+ self.velocity[1] = -self.velocity[1]
+
+ #self.velocity[1] -= 1.0
+
+ self.sprite.position[0] += self.velocity[0]
+ self.sprite.position[1] += self.velocity[1]
+
+Engine.init(resolution)
+
+bouncers = []
+for i in range(0,1000):
+ h = Bouncer()
+ bouncers.append(h)
+
+pygame.display.set_caption("bouncetest")
+
+def update():
+ for b in bouncers:
+ b.update()
+
+Engine.updaters.append(update)
+
+def draw():
+ for b in bouncers:
+ b.draw()
+
+Engine.drawers.append(draw)
+
+n = 0
+def fpsthing():
+ global n
+ n += 1
+ if n == 100:
+ fps = "%0.1f FPS" % Engine.fpsman.get_fps()
+ pygame.display.set_caption("bouncetest [%s]" % fps)
+ print fps
+ n = 0
+
+Engine.updaters.append(fpsthing)
+
+Engine.run()
+tilesize 64 64
+bbox 19 7
+texture img/block.png
+tile 0 0
+tile 1 0
+tile 2 0
+tile 3 0
+tile 4 0
+tile 5 0
+tile 6 0
+tile 7 0
+tile 8 0
+tile 9 0
+
+tile 3 1
+tile 4 1
+tile 4 2
+tile 4 3
+tile 4 4
+
+tile 6 1
+tile 6 2
+
+solid 0 0 10 1
+surface 2 1 4 2
+solid 4 1 5 5
+solid 6 1 7 3
+
+tile 10 0
+tile 12 0
+tile 13 0
+tile 14 0
+tile 15 0
+tile 16 0
+tile 17 0
+tile 18 0
+
+tile 12 1
+tile 13 1
+tile 14 1
+tile 14 2
+
+solid 10 0 11 1
+solid 12 0 19 1
+surface 12 1 13 2
+solid 13 1 15 2
+solid 14 2 15 3
+
+tilesize 1 1
+texture img/ByteIco.png
+tile 263 263
+tilesize 64 64
+texture img/block.png
+tile 0 0
+tile 0 1
+tile 1 0
+tile 1 1
+texture img/star.png
+tile 232 421
+tile 390 193
+tile 548 66
+tile 311 367
+tile 430 12
+tile 88 64
+tile 90 123
+tile 286 370
+tile 263 100
+tile 338 84
+tile 231 47
+tile 132 415
+tile 399 183
+tile 111 470
+tile 445 67
+tile 427 159
+tile 237 103
+tile 533 223
+tile 26 409
+tile 382 87
+tile 507 82
+tile 329 380
+tile 381 417
+tile 518 317
+tile 378 197
+tile 607 463
+tile 502 274
+tile 406 235
+tile 185 249
+tile 448 412
+tile 418 29
+tile 248 121
+tile 177 85
+tile 327 352
+tile 466 39
+tile 591 306
+tile 106 95
+tile 570 209
+tile 163 466
+tile 100 185
+tile 376 469
+tile 586 33
+tile 383 251
+tile 178 209
+tile 121 211
+tile 408 289
+tile 539 222
+tile 476 245
+tile 282 274
+tile 557 90
+tile 249 80
+tile 563 447
+tile 18 229
+tile 255 244
+tile 358 354
+tile 563 323
+tile 292 28
+tile 497 241
+tile 379 67
+tile 260 51
+tile 159 163
+tile 209 304
+tile 541 28
+tile 635 475
+tile 479 130
+tile 473 45
+tile 127 308
+tile 281 420
+tile 332 28
+tile 177 478
+tile 413 12
+tile 265 403
+tile 216 147
+tile 105 117
+tile 64 417
+tile 164 137
+tile 131 416
+tile 386 67
+tile 511 111
+tile 239 419
+tile 600 445
+tile 356 369
+tile 314 266
+tile 153 473
+tile 239 221
+tile 359 135
+tile 288 133
+tile 511 449
+tile 234 401
+tile 333 71
+tile 40 78
+tile 426 235
+tile 251 195
+tile 324 432
+tile 25 334
+tile 205 37
+tile 219 284
+tile 358 414
+tile 260 395
+tile 202 22
+tile 594 64
+tile 187 39
+tile 71 231
+tile 428 5
+tile 180 302
+tile 435 93
+tile 10 161
+tile 45 113
+tile 224 99
+tile 46 401
+tile 196 465
+tile 432 376
+tile 194 342
+tile 375 76
+tile 437 174
+tile 197 275
+tile 208 92
+tile 195 118
+tile 618 202
+tile 554 406
+#!/usr/bin/env python
+
+import pygame
+from Richter.Sprite import *
+from Richter.Collage import *
+from Richter.Surface import *
+from Richter.Actor import *
+from Richter.Stage import *
+from Richter.Camera import *
+import Richter.Engine as Engine
+
+#resolution = (1280,1024)
+resolution = (640,480)
+#resolution = (320,240)
+
+Engine.init(resolution)
+
+pygame.display.set_caption("platformtest")
+
+stage = Stage()
+main = Layer('data/example1')
+stage.addLayerFront(main)
+stage.addLayerBack(Layer('data/stars', 1.0, 0.25))
+stage.setSurfaces('data/example1')
+
+candelabra = Sprite(['Sprites/candelabra_short/cand_s_%d.png' % x for x in range(1,4)])
+candelabra.setPosition(64, 64)
+candelabra.setScale(2.0)
+candelabra.setGravity(CENTER, BOTTOM)
+candelabra.setFramerate(10.0)
+candelabra.play()
+
+main.add(candelabra)
+Engine.drawers.append(stage.draw)
+
+camera = Camera(stage)
+camera.setBbox(main.bbox)
+Engine.updaters.append(camera.update)
+
+class Richter(Actor):
+ def __init__(self, surfaces=None):
+ Actor.__init__(self, surfaces)
+
+ self.defineState('walk_l',
+ Sprite(['Sprites/Richter/richter%d.png' % n for n in range(0,8)],
+ framerate=10.0, scale=2.0, gravity=(CENTER,BOTTOM)))
+ self.defineState('walk_r',
+ Sprite(['Sprites/Richter/richter%d.png' % n for n in range(0,8)], mirror=True,
+ framerate=10.0, scale=2.0, gravity=(CENTER,BOTTOM)))
+ self.defineState('idle_l',
+ Sprite("Sprites/Richter/richter0.png", scale=2.0, gravity=(CENTER,BOTTOM)))
+ self.defineState('idle_r',
+ Sprite("Sprites/Richter/richter0.png", mirror=True, scale=2.0, gravity=(CENTER,BOTTOM)))
+ self.setState('idle_r')
+
+ 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.jumping = True
+ self.grounded = False
+
+
+ def jumpCancel(self):
+ self.jumping = False
+ if self.delta[1] > 0.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')
+
+
+ def walkLeft(self):
+ self.delta[0] = -2
+ self.setState('walk_l')
+
+
+ def idle(self):
+ if self.currentstate == 'walk_l':
+ self.setState('idle_l')
+ else:
+ self.setState('idle_r')
+ self.delta[0] = 0
+
+
+ def update(self):
+ if self.grounded:
+ self.delta[1] = 0
+ else:
+ if self.delta[1] > -15.0:
+ self.delta[1] -= 0.5
+ if self.grounded and self.delta[0] != 0:
+ # Climb up inclines (visually poetic, is it not?)
+ if self.collideDelta(self.delta):
+ delta = list(self.delta)
+ for delta[1] in range(1, abs(delta[0]) + 1):
+ if not self.collideDelta(delta):
+ self.delta = delta
+ break
+ # ... and walk down slopes
+ else:
+ self.delta[1] = -abs(self.delta[0])
+ self.move(self.delta)
+ self.grounded = self.collideDelta((0,-1))
+
+
+richter = Richter(stage.surfaces)
+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:
+ if e.key == pygame.K_LEFT:
+ richter.walkLeft()
+ elif e.key == pygame.K_RIGHT:
+ richter.walkRight()
+ elif e.key == pygame.K_UP:
+ 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.key == pygame.K_ESCAPE:
+ Engine.stop()
+ elif e.type == pygame.KEYUP:
+ if e.key == pygame.K_LEFT or e.key == pygame.K_RIGHT:
+ richter.idle()
+ elif e.key == pygame.K_UP:
+ richter.jumpCancel()
+ elif e.type == pygame.QUIT:
+ Engine.stop()
+
+Engine.eventhandlers.append(input)
+
+def update():
+ richter.update()
+ if richter.position[1] < 0:
+ richter.position = [richter.position[0],480]
+ zombie.update()
+
+Engine.updaters.append(update)
+
+n = 0
+def fpsthing():
+ global n
+ n += 1
+ if n == 100:
+ fps = "%0.1f FPS" % Engine.fpsman.get_fps()
+ pygame.display.set_caption("platformtest [%s]" % fps)
+ print fps
+ n = 0
+
+Engine.updaters.append(fpsthing)
+
+Engine.run()
+#!/usr/bin/env python
+
+import pygame
+from Richter.Sprite import *
+from Richter.Surface import *
+import Richter.Engine as Engine
+
+#resolution = (1280,1024)
+resolution = (640,480)
+#resolution = (320,240)
+
+Engine.init(resolution)
+
+pygame.display.set_caption("surfacetest")
+
+surfaces = SurfaceSet('data/example1')
+# Octagon
+#surfaces.append(Surface( (520,240),(461,98) ))
+#surfaces.append(Surface( (461,98),(319,40) ))
+#surfaces.append(Surface( (319,40),(178,98) ))
+#surfaces.append(Surface( (178,98),(120,240) ))
+#surfaces.append(Surface( (120,240),(178,381) ))
+#surfaces.append(Surface( (178,381),(320,440) ))
+#surfaces.append(Surface( (320,440),(461,381) ))
+#surfaces.append(Surface( (461,381),(520,240) ))
+
+# Concave
+#surfaces.append(Surface( (200,200), (200,400) ))
+#surfaces.append(Surface( (200,400), (300,300) ))
+#surfaces.append(Surface( (300,300), (400,300) ))
+#surfaces.append(Surface( (400,300), (500,400) ))
+#surfaces.append(Surface( (500,400), (500,200) ))
+#surfaces.append(Surface( (500,200), (200,200) ))
+
+player = Sprite('img/star.png')
+player.setGravity(CENTER, CENTER)
+player.position = [resolution[0]/2,resolution[1]/2]
+
+class gamestate:
+ direction = [0,0]
+ colliding = False
+
+def input(e):
+ if e.type == pygame.KEYDOWN:
+ if e.key == pygame.K_LEFT:
+ gamestate.direction[0] = -1
+ elif e.key == pygame.K_RIGHT:
+ gamestate.direction[0] = 1
+ elif e.key == pygame.K_DOWN:
+ gamestate.direction[1] = -1
+ elif e.key == pygame.K_UP:
+ gamestate.direction[1] = 1
+ elif e.type == pygame.KEYUP:
+ if e.key == pygame.K_LEFT or e.key == pygame.K_RIGHT:
+ gamestate.direction[0] = 0
+ elif e.key == pygame.K_UP or e.key == pygame.K_DOWN:
+ gamestate.direction[1] = 0
+
+Engine.eventhandlers.append(input)
+
+
+def update():
+ player.position[0] += gamestate.direction[0]
+ player.position[1] += gamestate.direction[1]
+ if surfaces.collidePoint(player.position):
+ if not gamestate.colliding:
+ player.setColor(1.0,0.2,0.2)
+ gamestate.colliding = True
+ else:
+ if gamestate.colliding:
+ player.setColor(1.0,1.0,1.0)
+ gamestate.colliding = False
+
+Engine.updaters.append(update)
+
+def draw():
+ surfaces.draw()
+ player.draw()
+
+Engine.drawers.append(draw)
+
+Engine.run()