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
并没有提供image
和rect
两个属性
- 需要程序员从
pygame.sprite.Sprite
派生子类- 并在 子类 的 初始化方法 中,设置
image
和rect
属性精灵组
- 一个 精灵组 可以包含多个 精灵 对象
- 调用 精灵组 对象的
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)