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()

 

作者:木子七

出处:https://www.cnblogs.com/Mickey-7/p/16296718.html

posted @   木子七  阅读(110)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示
workspaces
keyboard_arrow_up dark_mode palette
选择主题