赞
踩
随着这些年编程教育的逐渐普及,Python 作为一门较为简洁高效的编程语言,受到了广泛的重视。而在其中的游戏编程学习方面,Pygame 因其较为成熟且易学而脱颖而出,许多中小学编程培训机构和各大高校都会用它来做游戏编程的讲解。
因此我想做一份教程,通过精细地分步,让大家能够轻松地学会 Pygame。
本套教程我将以我的博文 Python 2048游戏代码实现(Pygame仿真带移动动画) 的简化版为最终目标,细分步骤,确保每一步都能让零基础的朋友看懂。
本节教程的完整代码如下,如果看一遍觉得自己没有问题的可以直接跳往下一篇教程。有问题的同学留下,咱们细细道来。
import sys
import pygame
# 初始化部分
pygame.init() # 初始化pygame
screen = pygame.display.set_mode((600, 750)) # 新建窗口对象,设置窗口大小
pygame.display.set_caption('2048') # 设置窗口标题
# 主循环部分
while True:
for event in pygame.event.get(): # 获取事件(鼠标点击、键盘按下等)
if event.type == pygame.QUIT: # 窗口关闭按钮被按下
pygame.quit() # 关闭窗口
sys.exit() # 结束程序
代码是写给计算机看的,因为计算机只认识代码。但人看代码是很累的,所以我们常常会在代码后面写些注释,便于别人或几个月后的自己浏览。
在Python中,注释需要写在 # 后,这样计算机在执行的时候会自动忽略它。
所以如果你觉得上面的代码很多,那可能只是注释太多了(为了方便大家理解嘛)。你在打上面代码的时候,一些太简单的注释就可以不用加上了。
去掉注释,上面的代码其实也就这么一点点:
import sys
import pygame
pygame.init()
screen = pygame.display.set_mode((600, 750))
pygame.display.set_caption('2048')
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
注释符 # 还有妙用,就是在调试(debug)的时候可以用来屏蔽某些语句。比如:
import sys
import pygame
pygame.init()
screen = pygame.display.set_mode((600, 750))
#pygame.display.set_caption('2048')
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
这时候你可以很方便地使 pygame.display.set_caption('2048')
这句代码不再执行。假如又需要它了,只需把前面的 # 再去掉就又会执行了。
Python 这门语言的一大优点,就是它有很多的库。所谓库,其实就是别人已经写好的代码,你直接引用就可以了。像 pygame 这个库,就是其他开发者写好的底层代码,我们直接拿来使用,所以才能简洁地实现游戏的编程。
引用库的语法格式为:
import 库名
在今天的程序中,我们除了 pygame 库外,还要引入 sys 库(system, 系统的缩写)用于结束程序。因此引入库部分的代码如下:
import sys
import pygame
其实也可以写到同一行:
import sys, pygame
需要注意,编程中的逗号必须是英文逗号。引号、括号、冒号等其他符号同理。
初始化部分有这三句代码,下面我们对每句单独进行讲解。
# 初始化部分
pygame.init() # 初始化pygame
screen = pygame.display.set_mode((600, 750)) # 新建窗口对象,设置窗口大小
pygame.display.set_caption('2048') # 设置窗口标题
pygame.init()
是在使用 pygame 库之前初始化 pygame 库。init 这个单词缩写要记好了,它是 initialize (初始化) 的缩写,在编程中经常出现。
screen = pygame.display.set_mode((600, 750))
这句代码,简单理解就是定义了窗口的大小:其中 600 表示窗口宽度,750 表示窗口高度。
不过这只是粗浅的理解,严格上来说,这句代码定义了一个窗口对象,名叫 screen
。这里用 set_mode()
函数设置了这个窗口对象的大小属性。其实这个函数还可以设置其他属性,这里不做讲解。
对象这个概念,其实你可以把它理解为就是一个变量。我们这里把这个变量命名为 screen
,当然你也可以给它起其他名字。这个变量里存了很多这个窗口的属性参数。
pygame.display.set_caption('2048')
用于设置标题,括号里的字符串就是你的窗口标题。字符串不要忘了加引号。在 Python 中,双引号和单引号都可以用于表示字符串。但是记住,一定要是英文符号哦。
窗口创建好后,如果程序直接就结束了,那么窗口就会一闪而过。所以,必须让程序必须继续运行,直到我们关闭窗口。这里要用到 while True:
循环,表示一个死循环,也就是会永不停止地反复执行后面的代码。
# 主循环部分
while True:
for event in pygame.event.get(): # 获取事件(鼠标点击、键盘按下等)
if event.type == pygame.QUIT: # 窗口关闭按钮被按下
pygame.quit() # 关闭窗口
sys.exit() # 结束程序
重复不断地做什么呢?获取用户的操作事件,比如鼠标点击、按键按下松开等。当获取到某个事件时,我们希望程序能执行指定的代码。
获取事件使用的是 pygame.event.get()
函数。这个函数可以返回一个列表,里面列着所有刚获取到的事件。使用 for 循环依次取出每一项事件存在循环变量 event
里,判断该事件的类型,并做出反应。
if event.type == pygame.QUIT:
就是判断事件类型是不是 pygame.QUIT
。当我们按下窗口右上角的关闭按钮时就会触发 pygame.QUIT
事件。
当获取到关闭窗口事件时,执行 pygame.quit()
退出窗口。此时虽然窗口销毁了,但是控制台程序还在死循环,所以要使用 sys.exit()
退出程序。
至此,一个可以正常关闭的游戏窗口就创建好了。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。