def tick(self): if self.step_clock >= (self.step_intervall - self.playfield.level * 70): self.step_clock = 0 if geometry.collide(self.playfield.shape, self.playfield.grid, 0, 1): self.playfield.shape_land() else: self.playfield.shape_tick()
def keydown(event): s = self.playfield.shape g = self.playfield.grid if event.key == pygame.K_w: s.rotate_cw() if geometry.collide(s, g, 0, 0): s.rotate_ccw() if event.key == pygame.K_ESCAPE: self.done = True if event.key == pygame.K_SPACE: while not geometry.collide(s, g, 0, +1): s.y += 1 if event.key == pygame.K_s and not geometry.collide(s, g, +0, +1): s.y += 1 if event.key == pygame.K_a and not geometry.collide(s, g, -1, +0): s.x -= 1 if event.key == pygame.K_d and not geometry.collide(s, g, +1, +0): s.x += 1
def shape_land(self): geometry.freeze(self.shape, self.grid) self.shape = self.next_shape self.next_shape = self.factory.spawn() lines = geometry.clear(self.grid) geometry.drop(self.grid, lines) score, message = self.scorefn(lines, self.level) self.score += score self.level_clears += len(lines) if geometry.collide(self.shape, self.grid, 0, 0): print("Game Over, your score was {0} pts!".format(self.score)) quit() if self.level_clears >= 10: self.level += 1 self.level_clears = 0 print("Level up! Level: {0}".format(self.level))