目录
一、说明
二、pygame是什么?
2.1 为游戏开发设计
2.2 版本发展史
2.3 特点
三、pygame安装要点
四、入门知识
4.1 初始使用
4.2 要更改 pygame 窗口的外观
4.3 完整窗口程序
4.4 窗口对象接口示例
五、隐形窗口和显性窗口
六、结论
一、说明
为什么要介绍pygame?这是因为在窗口运行中,qt、tkinter等只是为了界面,不存在动态动画功能。opencv是针对图像数值处理进行的,也不存在动态。而pygame可以将数学上的运动,归结为动画,这就能大大增强我们的数据说服能力,这是一个有力工具,很有必要掌握。
二、pygame是什么?
2.1 为游戏开发设计
Pygame是一组跨平台的Python模块,专为编写视频游戏而设计。它包括设计用于 Python编程语言的计算机图形和声音库。
2.2 版本发展史
Pygame 版本 2 于 2009 年计划为“Pygame Reloaded”,但 Pygame 的开发和维护完全停止,直到 2016 年底版本 1.9.1。 2019 年 3 月发布 1.9.5 版本后,新版本 2 的开发正在积极进行。
2.3 特点
Pygame 使用Simple DirectMedia Layer (SDL) 库,[a]的目的是允许实时 计算机游戏开发,而无需C 编程语言及其衍生语言的低级机制。这是基于这样的假设:游戏中最昂贵的函数可以从游戏逻辑中抽象出来,从而可以使用高级编程语言(例如Python)来构建游戏。
SDL 拥有的其他功能包括矢量数学、碰撞检测、2D 精灵场景图管理、MIDI支持、相机、像素阵列操作、转换、过滤、高级自由字体支持和绘图。
使用 Pygame 的应用程序可以通过 Android 版 Pygame 子集 (pgs4a) 在 Android 手机和平板电脑上运行。Android 支持声音、振动、键盘和加速计。
三、pygame安装要点
在window上使用pygame首先必须安装C语言环境,而window下的C语言环境非VC++莫属,因此,先安装一个visual studio 2019然后安装pygame:
pip install pygame
四、入门知识
4.1 初始使用
如今游戏编程非常有价值,它也可以用于广告和教学工具。游戏开发包括数学、逻辑、物理、人工智能等等,而且它可以非常有趣。在Python中,游戏编程是在pygame中完成的,它是最好的模块之一。最简程序框架:
- 导入pygame.
- 初始化pygame.
- 使用pygame.display.set_mode()方法形成屏幕。
- 使用screen.get_size()方法获取形成的屏幕的大小。
- 退出pygame。
import pygame
# initialize pygame
pygame.init()
# Form screen
screen = pygame.display.set_mode()
# get the default size
x, y = screen.get_size()
# quit pygame
pygame.display.quit()
# view size (width x height)
print(x, y)
以上代码设置窗口几何尺寸,并获取窗口尺寸。
4.2 要更改 pygame 窗口的外观
PyGame 窗口是一个简单的窗口,在窗口屏幕上显示我们的游戏。默认情况下,pygame 使用“Pygame window”作为其标题,并使用 pygame 图标作为 pygame 窗口的徽标。我们可以使用set_caption()函数来更改名称,使用set_icon() 函数来设置窗口的图标。
语法: pygame.display.set_caption('窗口标题')
2)更改 pygame 窗口的图标
语法: pygame.display.set_icon(Icon_name)
注意点:
display是pygame窗口的一个接口,专门针对窗口外观设定而存在,所有的对窗口外观操作都使用固定格式pygame.display作为指令前缀。类似的接口还有很多,本文暴露的有:
- pygame.display
- pygame.event
- pygame.image
更多接口将在后文中一一讲解。
4.3 完整窗口程序
窗口使用的固定步骤,大致如下:
注意:以上过程中“外观设置”用:set_mode,此函数已经生成一个窗口。
步骤1:导入窗口对象,初始化
import pygame
pygame.init()
还可以检查模块是否安装完好,用:
# importing the library
import pygame
# initializing all the imported
# pygame modules
(numpass,numfail) = pygame.init()
# printing the number of modules
# initialized successfully
print('Number of modules initialized successfully:',
numpass)
步骤2:初始化要显示的窗口。我们使用.set_mode()函数来创建一个窗口。我们将窗口的宽度和高度作为参数传递给 set_mode() 函数。
pygame.display.set_mode((窗口宽度,窗口高度))
步骤 3:要更改 pygame 窗口的默认标题和图标,我们使用.set_caption()和.set_icon()函数。要更改图标,我们首先使用 pygame.image.load(“image_path”) 函数加载图标图像,然后使用 .set_icon() 更改默认图像。
pygame.display.set_caption('GeeksforGeeks')
icon = pygame.image.load('gfglogo.png')
pygame.display.set_icon(icon)
步骤 4:保持该窗口运行,直到用户按下退出按钮。除非用户按下退出按钮,否则我们使用一个为 true 的变量。为了保持游戏运行,我们使用 while 循环并检查变量是否为真。
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
4.4 窗口对象接口示例
对于窗口操作接口下文将出现,有外观:display.set_mode、pygame.image.load,还有事件event,get,示例代码还有:
# import pygame package
import pygame
# initializing imported module
pygame.init()
# displaying a window of height
# 500 and width 400
pygame.display.set_mode((400, 500))
pygame.display.set_caption('GeeksforGeeks')
icon = pygame.image.load('gfglogo.png')
pygame.display.set_icon(icon)
# creating a bool value which checks
# if game is running
running = True
# keep game running till running is true
while running:
# Check for event if user has pushed
# any event in queue
for event in pygame.event.get():
# if event is of type quit then
# set running bool to false
if event.type == pygame.QUIT:
running = False
五、隐形窗口和显性窗口
一般来说,每个程序都有一个主应用程序,这个主应用程序可以看成隐形窗口,或叫后台窗口,这和我们看到的,可以用鼠标点击的窗口有区别,隐形窗口要比显性窗口功能强大一万倍。所有的用户交互中,显性窗口只是一个信息接收的阀门,而隐形窗口才是真正有灵魂的存在。上面看到的黑窗就是显性窗口,隐形窗口操纵显性窗口,实现强大功能。
六、结论
好了,运行以上代码,可以初步了解pygame如何进入运行状态,更多更丰富的内容,我们将在下一篇中继续讨论。