Loading

6.pygame-搭建主程序

职责明确
新建plane_main.py
  1. 封装主游戏类
  2. 创建游戏对象
  3. 启动游戏
 
新建plane_sprites.py
  1. 封装游戏中所有需要使用的精灵子类
  2. 提供游戏的相关工具
#plane_sprites.py
import pygame

# 常量定义屏幕大小
SCREEN_RECT = pygame.Rect(0, 0, 480, 700)
# 刷新帧率 
FRAME_PER_SEC = 60
"""飞机大战游戏精灵""" class GameSprite(pygame.sprite.Sprite): def __init__(self, image_name, speed): super().__init__() # 使用super调用父类的初始化方法 self.image = pygame.image.load(image_name) # 加载图片数据 self.rect = self.image.get_rect() # 获取图片对象 self.speed = speed # 定义移动速度 def update(self): # 在屏幕的垂直方向向上移动 # 位置的y += 移动速度,每次移动1 self.rect.y += self.speed

 

import pygame
from plane_sprites import *

"""飞机大战主程序"""


class PlaneGame(object):

    # 完成游戏的初始化动作
    def __init__(self):
        print('--游戏初始化--')
        # 创建游戏窗口 SCREEN_RECT是plane_sprites定义的常量,设定了窗口的大小,通过size获取窗口大小
        self.screen = pygame.display.set_mode(SCREEN_RECT.size)
        # 创建游戏时钟
        self.clock = pygame.time.Clock()
        # 调用私有方法 创建精灵和精灵组
        self.__create_sprites()


    # 私有方法-创建精灵、精灵组
    def __create_sprites(self):
        pass

    # 私有方法-更新精灵组
    def __update_sprites(self):
        pass

    # 私有方法-事件监听
    def __event_handler(self):
        for event in pygame.event.get():
            if event.type == pygame.QUIT:  # 判断是否退出游戏
                self.__game_over()

    # 私有方法-碰撞监测
    def __check_collide(self):
        pass

    @staticmethod  # 私有方法-结束游戏
    def __game_over():
        print('--游戏结束--')
        pygame.quit()
        exit()

    # 游戏循环
    def start_game(self):
        print('--游戏开始--')
        while True:
            # 设置刷新帧率
            self.clock.tick(FRAME_PER_SEC)
            # 事件监听
            self.__event_handler()
            # 碰撞监测
            self.__check_collide()
            # 更新、绘制精灵组
            self.__update_sprites()
            # 更新显示
            pygame.display.update()


if __name__ == '__main__':
    # 创建游戏对象
    game = PlaneGame()

    # 启动游戏
    game.start_game()

 

posted @ 2022-05-22 00:15  木子七  阅读(97)  评论(0编辑  收藏  举报