Pygame入门教程(一) 初始化和主循环

这篇教程介绍了如何使用Python的Pygame库创建一个可关闭的游戏窗口。通过初始化Pygame,设置窗口大小和标题,然后进入主循环监听用户事件,当检测到窗口关闭事件时退出程序。适合Python初学者和游戏编程爱好者。
摘要由CSDN通过智能技术生成

序言

随着这些年编程教育的逐渐普及,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')          # 设置窗口标题

1. 初始化pygame库

pygame.init() 是在使用 pygame 库之前初始化 pygame 库。init 这个单词缩写要记好了,它是 initialize (初始化) 的缩写,在编程中经常出现。

2. 新建窗口对象

screen = pygame.display.set_mode((600, 750)) 这句代码,简单理解就是定义了窗口的大小:其中 600 表示窗口宽度,750 表示窗口高度。

不过这只是粗浅的理解,严格上来说,这句代码定义了一个窗口对象,名叫 screen。这里用 set_mode() 函数设置了这个窗口对象的大小属性。其实这个函数还可以设置其他属性,这里不做讲解。

对象这个概念,其实你可以把它理解为就是一个变量。我们这里把这个变量命名为 screen,当然你也可以给它起其他名字。这个变量里存了很多这个窗口的属性参数。

3. 设置窗口标题

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() 退出程序。


至此,一个可以正常关闭的游戏窗口就创建好了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

两只程序猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值