python制作飞机大战游戏准备工作相关知识点

python制作飞机大战游戏准备工作相关知识点

1、初始化背景
`import pygame` : 导入pygame模块
`pygame.init()` : 导入并初始化所有 `pygame` 模块,使用其他模块之前,必须先调用 `init` 方法
# 1.创建游戏窗口(长480 *宽700)
`screen = pygame.display.set_mode((480, 700))`
# 2.加载图像数据(将./images/background.png该路径的图片加载)
`bg = pygame.image.load("./images/background.png")`
# 3.blit绘制图像(将图片bg设置左上角的坐标为(0,0))
`screen.blit(bg, (0, 0))`
# 4.update 更新屏幕显示(可以在screen对象完成所有blit方法之后,统一调用一次display.update方法,同样可以在屏幕上看到最终的绘制结果)
`pygame.display.update()`
# 5.quit卸载所有 `pygame` 模块,在游戏结束之前调用!
`pygame.quit()`
2、游戏时钟
# 1.创建时钟对象
`clock = pygame.time.Clock()`
# 2.指定游戏循环内部的代码,这里一秒钟60次(60帧,在循环内部使用)
`clock.tick(60)`
3、事件
# 捕获事件
event_list = pygame.event.get()
# 遍历事件,当点到关闭时,会满足event.type == pygame.QUIT,此时卸载终止程序可退出偷袭
for event in event_list:
    if event.type == pygame.QUIT:
        print("游戏退出...")

        # 卸载模块
        pygame.quit()

        # 终止程序
        exit()
4、 精灵和精灵组
  • pygame.sprite.Sprite —— 存储 图像数据 image位置 rect对象

  • pygame.sprite.Group ——精灵组

  • 在游戏开发中,通常把 显示图像的对象 叫做精灵 Sprite

    精灵
    • 在游戏开发中,通常把 显示图像的对象 叫做精灵 Sprite

    • 精灵 需要 有 两个重要的属性

      • image 要显示的图像
      • rect 图像要显示在屏幕的位置
    • 默认的 update() 方法什么事情也没做

      • 子类可以重写此方法,在每次刷新屏幕时,更新精灵位置
    • 注意pygame.sprite.Sprite 并没有提供 imagerect 两个属性

      • 需要程序员从 pygame.sprite.Sprite 派生子类
      • 并在 子类初始化方法 中,设置 imagerect 属性
    精灵组
    • 一个 精灵组 可以包含多个 精灵 对象
    • 调用 精灵组 对象的 update() 方法
      • 可以 自动 调用 组内每一个精灵update() 方法
    • 调用 精灵组 对象的 draw(屏幕对象) 方法
      • 可以将 组内每一个精灵image 绘制在 rect 位置
import pygame

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

    # 重写update函数
    def update(self):
        # 在屏幕垂直的方向移动
        self.rect.y += self.speed
# 创建精灵
enemy1 = GameSprite("./images/enemy1.png")
enemy2 = GameSprite("./images/enemy1.png", speed=2)
# 创建精灵组
enemy_group = pygame.sprite.Group(enemy1, enemy2)
# 精灵组的update
enemy_group.update()
# 精灵组的draw
enemy_group.draw(screen)
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值