def initialize(self): self.score = 0 self.marisa = Marisa(image=MARISA_PATH, size=None, update_ms=60, pos=(150, 150), velocity=(1, 0)) self.apples = [] self.mushrooms = [] pygame.mixer.music.load(BGM_PATH) pygame.mixer.music.play(-1) while len(self.apples) < NUM_APPLE: collide = False new_apple = GameObject(image=APPLE_PATH, size=(30, 30), update_ms=1000, pos=get_rand_pos(self.window_sz, (128, 128)), velocity=(0, 0)) for apple in self.apples: if GameObject.collide(apple, new_apple): collide = True break if collide is False: self.apples.append(new_apple) else: del new_apple while len(self.mushrooms) < NUM_MUSHROOM: collide = False new_mushrooms = GameObject(image=MUSHROOM_PATH, size=(40, 40), update_ms=1000, pos=get_rand_pos( self.window_sz, (128, 128)), velocity=(0, 0)) for mushroom in self.mushrooms: if GameObject.collide(mushroom, new_mushrooms): collide = True break if collide is False: self.mushrooms.append(new_mushrooms) else: del new_mushrooms self.last_time = int(pygame.time.get_ticks())
def game(self): self.initialize() self.last_time = int(pygame.time.get_ticks()) self.particles = [] while True: for event in pygame.event.get(): if event.type == QUIT or (event.type == KEYDOWN and event.key == K_ESCAPE): self.terminate() keyEvents = self.get_key() elapsed_ms = self.ms_tick() # Collision for apple in self.apples: if GameObject.collide(self.marisa, apple): self.score += 1 collide = True while collide is True: collide = False apple.pos = get_rand_pos(self.window_sz, (30, 30)) for mushroom in self.mushrooms: if GameObject.collide(apple, mushroom, r=2000): collide = True self.marisa.get_apple() for mushroom in self.mushrooms: mushroom.velocity = [ (self.marisa.pos[0] - mushroom.pos[0]) * .002, (self.marisa.pos[1] - mushroom.pos[1]) * .002 ] mushroom.location_update() if GameObject.collide(self.marisa, mushroom): self.gameover() return # Update self.marisa.keyEventHandle(keyEvents=keyEvents, elapsed_ms=elapsed_ms) self.marisa.sprite_update(keyEvents=keyEvents, elapsed_ms=elapsed_ms) self.marisa.location_update() # Display self.update_display() self.marisa.clear()
def collide(self, frametime): check = objectCheckCollision(self) if check: characterHitObstacle(self, frametime) GameObject.collide(self, frametime)
def collide(self, frametime): GameObject.collide(self, frametime) if objectCheckCollision(self): self.destroyInstance = True