我们这个章节学习使用pygame开发游戏。平时我们玩儿过很多游戏,这次我们来开发一个自己的游戏,是不是很酷?赶紧开始吧!
![](https://wx2.sinaimg.cn/mw690/006HvFS6ly1fvpab16k74g30e00cghdw.gif)
## pygame 是什么
首先,我们还是先写一个Helloworld,看一下怎么pygame是什么。
```
import pygame, sys
from pygame.locals import *
pygame.init()
DISPLAYSURF = pygame.display.set_mode((400, 300))
pygame.display.set_caption('Hello World!')
while True:
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
pygame.display.update()
```
![](https://s1.ax1x.com/2018/09/28/iQTf1K.png)
## 引入pygame
```
import pygame, sys
from pygame.locals import *
```
我吗使用import语句将 pygame引入进来,pygame.locals定义了很多pygame需要使用的数据常量,因此,我们也把它引入进来。
## 初始化
我们调用`pygame.init()`完成pygame的加载,这个方法初始化了pygame用到的所有模块。在写游戏逻辑之前,一定要调用init方法,否则会报`pygame.error: font not initialized`的错误。
我们使用`pygame.display.set_mode((400, 300))`方法设置游戏窗口的宽高,注意我们传入`(400, 300)`参数是一个元组;调用`pygame.display.set_caption('Hello World!')`方法设置游戏窗口的标题。
## 游戏主循环
接下来,我们使用了一个特殊的`while True:`循环。因为循环条件永远为True,所以程序会一遍又一遍的执行循环体里的代码。这个是游戏的主循环,我们一般会在这个循环里完成游戏的主要逻辑操作:
1. 处理游戏事件。
2. 更新游戏状态。
3. 将游戏状态画到游戏窗口上。
![](https://s1.ax1x.com/2018/09/28/iQOUh9.png)
## 游戏状态
那什么是游戏状态呢?英雄血量、子弹数量、敌人等级 这些数字会随着游戏的推进发生变化,这些都是游戏状态。我们根据用户在游戏上操作来更改这些状态。当这些状态发生变更后,我们需要调用`pygame.display.update()`方法更新游戏画面。
![](https://rmdzone-hhsadesgerr3vvrwmvf.netdna-ssl.com/wp-content/uploads/2018/06/gamestate7.jpg)
## 事件监听
`pygame.event.get()` 方法获取了用户在游戏窗口上的所有操作,比如按钮点击、键盘按下等。因此,这个方法返回的是一个列表。我们使用for循环还取到每一事件,对事件作出响应。
## 退出游戏
`if event.type == QUIT:` 在下面的if语句里,我们判断如果事件类型是QUIT,我们就调用`pygame.quit()`方法退出游戏。同时结束游戏的运行。
![](https://s1.ax1x.com/2018/09/20/inCsxI.jpg)
**阿达老师-孩子身边的编程专家**
*完整课程请关注阿达老师,主页里有完整的课程目录和观看地址*
- 课程介绍
- 搭建环境
- 什么是计算机
- 程序是怎么运行的
- 安装python
- 项目实例-安装IDE
- 变量和简单数据类型
- 数据&变量
- 数字
- 字符串
- 布尔类型
- 项目实例
- 容器-列表
- 容器
- 列表
- 项目实例
- 容器-字典
- 定义字典
- 项目实例
- 数据类型总结
- 条件语句
- python条件语句
- 项目实例
- 循环语句
- for循环
- while循环
- 项目实例
- 函数
- 5.0函数定义
- 5.2函数实战
- 6.文件系统
- 6.1 文件系统介绍&python查找文件
- 6.2 用python读写文件
- 7. python操作时间
- 8.面向对象
- 8.1 类和对象
- 8.2 继承和重写
- 8.3 面向对象项目实战
- 9 GUI编程
- 9.1 GUI基础
- 9.2 备忘清单GUI版
- 10.网络
- 10.1 网络的发展
- 10.2 python http
- 11.web开发
- 11.1 web基础&HTML
- 11.2 CSS&JavaScript
- 11.3 网页计算器
- 11.3 网站开发实战-播客搭建
- 11.3 python-web
- 12. 项目实战-数据处理
- 13. 项目实战-AI入门
- 13.1 环境搭建
- 心得
- 13.2 Tensorflow的瓜怎么吃
- 14 pygame
- 14.1 pygame Helloworld
- 14.4 pygame 动画基础 Animation
- 从0开始学python第14.5节 pygame 加载图片和声音
- 从0开始学python第14.6节 pygame.sprite(上)
- 14.7 pygame.sprite模块(下)
- 14.8 pygame射击游戏(一)
- pygame射击游戏(二)
- 14.8 pygame射击游戏(三)
- 14.8 pygame射击游戏(四)
- 14.8 pygame射击游戏(五)