当前位置:   article > 正文

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

import pygame

序言

随着这些年编程教育的逐渐普及,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()     # 结束程序
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

注释

代码是写给计算机看的,因为计算机只认识代码。但人看代码是很累的,所以我们常常会在代码后面写些注释,便于别人或几个月后的自己浏览。

在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()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

注释符 # 还有妙用,就是在调试(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()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

这时候你可以很方便地使 pygame.display.set_caption('2048') 这句代码不再执行。假如又需要它了,只需把前面的 # 再去掉就又会执行了。

引用库

Python 这门语言的一大优点,就是它有很多的。所谓库,其实就是别人已经写好的代码,你直接引用就可以了。像 pygame 这个库,就是其他开发者写好的底层代码,我们直接拿来使用,所以才能简洁地实现游戏的编程。

引用库的语法格式为:

import 库名
  • 1

在今天的程序中,我们除了 pygame 库外,还要引入 sys 库(system, 系统的缩写)用于结束程序。因此引入库部分的代码如下:

import sys
import pygame
  • 1
  • 2

其实也可以写到同一行:

import sys, pygame
  • 1

需要注意,编程中的逗号必须是英文逗号。引号、括号、冒号等其他符号同理。

初始化部分

初始化部分有这三句代码,下面我们对每句单独进行讲解。

# 初始化部分
pygame.init()       # 初始化pygame
screen = pygame.display.set_mode((600, 750))        # 新建窗口对象,设置窗口大小
pygame.display.set_caption('2048')          # 设置窗口标题
  • 1
  • 2
  • 3
  • 4

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()     # 结束程序
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

重复不断地做什么呢?获取用户的操作事件,比如鼠标点击、按键按下松开等。当获取到某个事件时,我们希望程序能执行指定的代码。

获取事件使用的是 pygame.event.get() 函数。这个函数可以返回一个列表,里面列着所有刚获取到的事件。使用 for 循环依次取出每一项事件存在循环变量 event 里,判断该事件的类型,并做出反应。

if event.type == pygame.QUIT: 就是判断事件类型是不是 pygame.QUIT。当我们按下窗口右上角的关闭按钮时就会触发 pygame.QUIT 事件。

当获取到关闭窗口事件时,执行 pygame.quit() 退出窗口。此时虽然窗口销毁了,但是控制台程序还在死循环,所以要使用 sys.exit() 退出程序。


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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/127168
推荐阅读
相关标签
  

闽ICP备14008679号