本文共 3406 字,大约阅读时间需要 11 分钟。
?????????????????
?????????????????????????????????????????????????????
???????
class GameSprite(pygame.sprite.Sprite): def __init__(self, image_name, speed=1): super().__init__() self.image = pygame.image.load(image_name) self.rect = self.image.get_rect() self.speed = speed
class Background(GameSprite): def __init__(self, is_alt=False): super().__init__("./images/background.png") if is_alt: self.rect.y = -self.rect.height class Enemy(GameSprite): def __init__(self): super().__init__("./images/enemy1.png") self.speed = random.randint(1,3) max_x = SCREEN_RECT.width - self.rect.width self.rect.x = random.randint(0, max_x) class Hero(GameSprite): def __init__(self): super().__init__("./images/me1.png", 0) self.rect.centerx = SCREEN_RECT.centerx self.rect.bottom = SCREEN_RECT.bottom - 120 self.bullets_group = pygame.sprite.Group() class Bullet(GameSprite): def __init__(self): super().__init__("./images/bullet1.png", -2) ?????????
class PlaneGame: def __init__(self): print("?????") self.screen = pygame.display.set_mode(SCREEN_RECT.size) self.clock = pygame.time.Clock() self.__create_sprites() pygame.time.set_timer(CREATE_ENEMY_EVENT, 1000) pygame.time.set_timer(HERO_FIRE_EVENT, 500) def start_game(self): print("????...") while True: self.clock.tick(FRAME_PRE_SEC) self.__event_handler() self.__check_collide() self.__update_sprites() pygame.display.update() def __event_handler(self): for event in pygame.event.get(): if event.type == pygame.QUIT: PlaneGame.__game__over() elif event.type == CREATE_ENEMY_EVENT: enemy = Enemy() self.enemy_group.add(enemy) elif event.type == HERO_FIRE_EVENT: self.hero.fire() keys_pressed = pygame.key.get_pressed() if keys_pressed[pygame.K_RIGHT]: self.hero.speed = 2 elif keys_pressed[pygame.K_LEFT]: self.hero.speed = -2 else: self.hero.speed = 0
def __check_collide(self): pygame.sprite.groupcollide(self.hero.bullets_group, self.enemy_group, True, True) enemies = pygame.sprite.spritecollide(self.hero, self(enemy_group), True) if len(enemies) > 0: self.hero.kill() PlaneGame.__game__over()
def __update_sprites(self): self.back_group.update() self.back_group.draw(self.screen) self.enemy_group.update() self.enemy_group.draw(self.screen) self.hero_group.update() self.hero_group.draw(self.screen) self.hero.bullets_group.update() self.hero.bullets_group.draw(self.screen)
??????????????????????
@staticmethod def __game__over(): print("????") pygame.quit() exit() ????????????????????????????????????????????????????????????????????????
转载地址:http://dildz.baihongyu.com/