目录

一、说明

二、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中完成的,它是最好的模块之一。最简程序框架:

  1. 导入pygame.
  2. 初始化pygame.
  3. 使用pygame.display.set_mode()方法形成屏幕。
  4. 使用screen.get_size()方法获取形成的屏幕的大小。
  5. 退出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() 函数来设置窗口的图标。

1)改窗口标题
语法: pygame.display.set_caption('窗口标题')

2)更改 pygame 窗口的图标 

语法: pygame.display.set_icon(Icon_name)

        注意点:

        display是pygame窗口的一个接口,专门针对窗口外观设定而存在,所有的对窗口外观操作都使用固定格式pygame.display作为指令前缀类似的接口还有很多,本文暴露的有:

  • pygame.display
  • pygame.event
  • pygame.image

        更多接口将在后文中一一讲解。

4.3 完整窗口程序

        窗口使用的固定步骤,大致如下:

【Pygame手册01/20】最简应用:窗口-LMLPHP

        步骤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手册01/20】最简应用:窗口-LMLPHP

五、隐形窗口和显性窗口

        一般来说,每个程序都有一个主应用程序,这个主应用程序可以看成隐形窗口,或叫后台窗口,这和我们看到的,可以用鼠标点击的窗口有区别,隐形窗口要比显性窗口功能强大一万倍。所有的用户交互中,显性窗口只是一个信息接收的阀门,而隐形窗口才是真正有灵魂的存在。上面看到的黑窗就是显性窗口,隐形窗口操纵显性窗口,实现强大功能。

【Pygame手册01/20】最简应用:窗口-LMLPHP

六、结论

        好了,运行以上代码,可以初步了解pygame如何进入运行状态,更多更丰富的内容,我们将在下一篇中继续讨论。

02-15 10:59