class Game(): framerate = 0 number_meanies = 32 def __init__(self): self.display = Display() self.player = Charactor(self) self.level = Level(self) self.hud = Hud() self.prepare_stage() def prepare_stage(self): self.level.load_level(0) self.start_game() def start_game(self): self.gameRunning = True self.mainloop() def mainloop(self): self.clock = pygame.time.Clock() self.player.rect.center = [self.display.arena[0]/2, self.display.arena[1]/2] controller = Controller() while self.gameRunning: dirty = [] self.clock.tick(FPS) self.framerate = self.clock.get_fps() self.display.paint_background(dirty) self.player.state.set_current_state() d = self.display.paint_sprite(self.player) dirty.insert(len(dirty), d) self.steine.update() self.ladders.update() self.barrels.update() self.meanies.update(dirty) self.hud.showinfo(self, dirty) controller.handle_keyboard_input(self.player) self.player.update() ## Just for debugging - paint hitareas of charactor ## d = self.draw_hitarea(self.player.feet()) dirty.insert(len(dirty), d) d = self.draw_hitarea(self.player.middle(), (0,0,255)) dirty.insert(len(dirty), d) d = self.draw_hitarea(self.player.head(), (0,255,255)) dirty.insert(len(dirty), d) pygame.display.update(dirty) def draw_hitarea(self, sprite, color=pygame.Color(255,0,0)): sfc = pygame.Surface([sprite.rect.width, sprite.rect.height]) sfc.fill(color) dummy = pygame.sprite.Sprite() dummy.image = sfc dummy.rect = sprite.rect d = self.display.paint_sprite(dummy) return d
pigs_to_remove = [] for pig in pigs: if pig_body == pig.body: pigs_to_remove.append(pig) for pig in pigs_to_remove: space.remove(pig.shape, pig.shape.body) pigs.remove(pig) space.add_collision_handler(0, 2).post_solve = Physics.post_solve_bird_wood space.add_collision_handler(0, 1).post_solve = post_solve_bird_pig level = Level(Physics.columns, Physics.beams, space, pigs) level.number = 0 level.load_level() while Running: dt = clock.tick(30) dt = 1.0 / 50.0 / 2. for event in pygame.event.get(): if event.type == pygame.QUIT: Running = False if event.type == pygame.KEYDOWN: SlingShot.controls(event) if event.key == pygame.K_SPACE: bird = Bird(SlingShot.AngleStart, ParabolaList[0][0], ParabolaList[0][1] + 20, space, SlingShot.SpeedMultiplayer) birds.append(bird) pigs_to_remove = []
class Game(Display, Controller): def __init__(self): self.framerate = 0 self.number_meanies = 32 self.bricks_in_level = 0 self.display = Display() self.hud = Hud() pygame.key.set_repeat(100,5) self.meanies = pygame.sprite.Group() self.player = Charactor(self) self.player.speed = 2 self.level = Level(self) self.level.load_level(0) self.start_game() # self.testgroup = pygame.sprite.Group() # self.init_meanies(0) # def init_meanies(self, counter): # # while counter < self.number_meanies: # # mx = random.randint( 0, self.display.bgmax[0]-40 ) # my = random.randint( 0, self.display.bgmax[1]-40 ) # # meanie = Meanie() # meanie.state.set_random_move_index() # meanie.rect.center = mx,my # self.testgroup.add(meanie) # # if meanie.overlaps(self.testgroup): # self.testgroup.remove(meanie) # meanie.kill() # self.init_meanies(counter) # else: # self.meanies.add(meanie) # counter += 1 # # if counter == self.number_meanies: # self.start_game() def start_game(self): self.gameRunning = True self.mainloop() def mainloop(self): self.clock = pygame.time.Clock() self.player.rect.center = [self.display.arena[0]/2, self.display.arena[1]/2] controller = Controller() while self.gameRunning: dirty = [] self.clock.tick(FPS) self.framerate = self.clock.get_fps() self.display.paint_background(dirty) self.player.state.set_current_state(self) d = self.display.paint_sprite(self.player) dirty.insert(len(dirty), d) self.steine.update() self.ladders.update() self.barrels.update() self.meanies.update(dirty) self.hud.showinfo(self, dirty) controller.handle_keyboard_input(self.player) self.player.update() pygame.display.update(dirty)