046_wz_hm_项目实战——飞机大战之游戏窗口
2020-08-20 本文已影响0人
王泽0106
目标
- 强化面向对象程序设计
- 体验使用
pygame
模块进行游戏开发
实战步骤
-
pygame
快速体验 - 飞机大战实战
pygame快速入门
项目准备
- 新建飞机大战项目
- 新建一个wz_001_pygame入门.py
- 导入游戏素材图片
游戏的第一印象:
- 把一些静止的图像绘制到游戏窗口中
- 根据用户的交互或其他情况,移动这些图像,产生动画效果
- 根据图像之间是否发生重叠,判断敌机是否被摧毁等其他情况
使用pygame创建图形窗口
游戏的初始化和退出
- 要使用
pygame
提供的所有功能之前,需要调用init
方法 - 在游戏结束前需要调用
quit
方法
方法 | 说明 |
---|---|
pygame.init() | 导入并初始化所有pygame模块,使用其他模块之前必须先调用init方法 |
pygame.quit() | 卸载所有pygame模块,在游戏结束之前调用 |
理解游戏中的坐标系
坐标系:
- 原点在左上角(0,0)
- x轴水平方向向右,递增
- y轴垂直方向向下,递增
在游戏中,所有可见的元素都是以矩形区域来描述位置的,要描述一个矩形区域有四个要素:(x,y)(width,height),
pygame
专门提供了一个类pygame.Rect
用于描述矩形区域注:(x,y)为矩形区域左上角坐标,(width,height)为矩形区域宽和长
Rect(x, y, width, height) 创建出一个 Rect对象
Rect
提示:pygame.Rect
是一个比较特殊的类,内部只是封装了一些数字计算,不执行pygame.init()
方法同样能够直接使用
案例演练
需求:
- 定义
hero_rect
矩形描述英雄的位置和大小 - 输出英雄的坐标原点(x和y)
- 输出英雄的尺寸(width和height)
创建游戏主窗口
pygame
专门提供了一个模块pygame.display
用于创建、管理游戏窗口
方法 | 说明 |
---|---|
pygame.display.set_mode() | 初始化游戏显示窗口 |
pygame.display.update() | 刷新屏幕内容显示 |
set_mode(resolution = (0, 0), flags = 0, depth = 0)创建一个Surface对象
作用:创建游戏显示窗口
参数:
-
resolution
指定屏幕的宽和高,默认创建的窗口大小和屏幕大小一致 -
flags
参数指定屏幕的附加选项,例如是否全屏等,默认不需要传递 -
depth
参数表示颜色的位数,默认自动匹配
返回值:暂时可以理解为游戏的屏幕,游戏的元素都需要被绘制到游戏的屏幕上
注意:必须使用变量记录set_mode
方法的返回结果,因为后续所有的图像绘制都基于这个返回结果
简单的游戏循环
为了做到游戏程序启动后,不会立即退出,通常在游戏程序中增加一个游戏循环,即无限循环
2020.8.20