Pygame 是什么?有什么作用

  • Post category:Python

Pygame 是一个开源的 Python 游戏开发库,它提供了一些游戏开发所需的基本模块,例如输入、声音、图像等等。使用Pygame可以在Python语言下创建2D游戏、图形和动画。该库非常适合初学者和中等级 Python 程序员快速入门游戏开发。

作用

Pygame 主要用于制作2D游戏,包括游戏的开发、测试、演示,可以应用于各种计算机操作系统下的开发。
– 当你想快速开发一个游戏时,或者你不想调试底层算法,Pygame非常适合用于这种目的。
– 此外,Pygame也用于动漫制作、多媒体制作等相关领域。

特点

  1. 跨平台性:Pygame能在多种操作系统上运行,如 Linux 、Mac OS、Windows、iOS、Android等。
  2. 简单易学:使用 Pygame 容易上手,入门难度较低,很容易掌握,并能快速制作一个基本的游戏。
  3. 精美图形:Pygame支持多种格式的图形文件,包括 PNG、JPEG、BMP 和GIF等。
  4. 游戏引擎和物理引擎:Pygame集成了一些流行的游戏引擎(如PyOpenGL)和物理引擎,通过这些引擎可以快速开发出非常实用的游戏程序。
  5. 易于扩展:由于 Pygame 建立在 Python 之上,因此可以使用其他 Python 库进行扩展。

优势

  1. 快速:由于Pygame是基于Python的,而Python是一个解释型语言,所以它可以快速开发,快速迭代游戏。
  2. 可移植性:Pygame可以在多个平台上运行,使得进行测试、发布和维护变得轻松。
  3. 轻量级:Pygame库的大小较小。开发人员不需要额外添加其他依赖项,使得程序开发、测试和交付更加轻松。
  4. 灵活性:Pygame提供了丰富的功能,包括音频、图像和输入模块,使得游戏的交互更加灵活。
  5. 社区的支持:Pygame发展历史悠久,具有庞大而活跃的开发社区,大量的示例、教程、文档、代码库可以帮助开发人员减少开发周期,并使用规范。

示例

以下是一个Pygame 示例代码,它演示了如何创建一个具有背景显示和动画的窗口,周期性的旋转一个图片,当鼠标点击时图片会放大并立即恢复原始大小。

import pygame as pg
pg.init()

win_width, win_height = 400, 300
clock = pg.time.Clock()

#创建一个窗口
win = pg.display.set_mode((win_width, win_height))
pg.display.set_caption("Pygame优秀")

#加载图片
pg_img = pg.image.load("example.jpg")

#设置图片信息。更改图片大小为屏幕窗口大小,并在窗口居中显示
pg_rect = pg_img.get_rect(center=(win_width / 2, win_height / 2))

# 主循环
while True:
    dt = clock.tick(60) / 1000 # 每秒60帧的动画,用来计算与前一个时间点的差值dt

    win.fill((0, 0, 0)) # 设置背景颜色
    win.blit(pg_img, pg_rect) # 将图片复制到窗口

    # Image旋转
    rotate_img = pg.transform.rotate(pg_img, pg.time.get_ticks()/40 % 360) # 获取当前时间,按每40ms一周 360度旋转 image
    rotate_rect = rotate_img.get_rect(center=(win_width / 2, win_height / 2))
    win.blit(rotate_img, rotate_rect)

    # 鼠标点击事件
    for event in pg.event.get(): # 检查所有事件
        if event.type == pg.QUIT: # 如果用户单击了关闭按钮
            pg.quit()
            sys.exit()

        elif event.type == pg.MOUSEBUTTONDOWN: # 如果用户单击了鼠标
            pg_rect.width += 10 # 宽度+10
            pg_rect.height += 10 # 高度+10
    pg.display.flip() # 刷新输出

此程序是通过load函数加载一个图片,将其绘制在带有背景色的窗口中。然后使用pygame.image.transform.rotate()函数在钟表时间内周期性转动图像180度。同时,当鼠标单击时,设置图片尺寸变大。