博客
关于我
Python源代码 ---飞机大战游戏
阅读量:493 次
发布时间:2019-03-06

本文共 3406 字,大约阅读时间需要 11 分钟。

?????????????????

?????????????????????????????????????????????????????

???????

  • ?????????????????????????????Pygame???????Sprite??????????????????????????????GameSprite????????????????
  • 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
    1. ?????????????????????????????????????????
    2. class Background(GameSprite):    def __init__(self, is_alt=False):        super().__init__("./images/background.png")        if is_alt:            self.rect.y = -self.rect.height
      1. ????????????????????????????
      2. 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)
        1. ?????????????????????????????
        2. 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()
          1. ???????????????????????
          2. class Bullet(GameSprite):    def __init__(self):        super().__init__("./images/bullet1.png", -2)

            ?????????

          3. ?????????????????????????????????????
          4. 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)
            1. ?????????????????????????????????
            2. 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()
              1. ???????????????????????????????
              2. 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
                1. ?????????????????????????
                2. 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()
                  1. ??????????????????????????
                  2. 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/

    你可能感兴趣的文章
    Parameter ‘password‘ not found. Available parameters are [md5String, param1, username, param2]
    查看>>
    ParameterizedThreadStart task
    查看>>
    Spring security之管理session
    查看>>
    paramiko模块
    查看>>
    param[:]=param-lr*param.grad/batch_size的理解
    查看>>
    spring mvc excludePathPatterns失效 如何解决spring拦截器失效 excludePathPatterns忽略失效 拦截器失效 spring免验证拦截器不起作用
    查看>>
    Spring Cloud 之注册中心 EurekaServerAutoConfiguration源码分析
    查看>>
    Parrot OS 6.2 重磅发布!推出全新 Docker 容器启动器
    查看>>
    Parrot OS 6.3 发布!全面提升安全性,新增先进工具,带来更高性能
    查看>>
    ParseChat应用源码ios版
    查看>>
    Part 2异常和错误
    查看>>
    Pascal Script
    查看>>
    Spring Boot集成Redis实现keyspace监听 | Spring Cloud 34
    查看>>
    Spring Boot中的自定义事件详解与实战
    查看>>
    Passport 密码模式
    查看>>
    Spring Boot(七十六):集成Redisson实现布隆过滤器(Bloom Filter)
    查看>>
    passwd命令限制用户密码到期时间
    查看>>
    Spring @Async执行异步方法的简单使用
    查看>>
    PAT (Basic Level) Practice 乙级1021-1030
    查看>>
    PAT (Basic Level) Practice 乙级1031-1040
    查看>>