Pygame的介绍

Pygame是一组专门为编写游戏设计的Python模块,增加了SDL库功能。可以使你在Python语言中轻松的创建全功能的游戏和多媒体程序。

Pygame是免费的,在GPL许可下发布,你可以创建开源,免费,免费软件,共享软件,和商业游戏。 Pygame已经存在很多时间了,许多优秀的程序员加入其中,把Pygame做得越来越好。

安装Pygame

首先通过win+R键打开运行窗口,输入cmd命令进入到控制台,然后输入pip install pygame -i https://pypi.doubanio.com/simple 命令安装pygame。




Python pygame格斗游戏 用python和pygame写游戏_pygame安装

安装pygame



安装完成之后,输入python回车,进入python环境,然后输入import pygame检查是否安装成功。




Python pygame格斗游戏 用python和pygame写游戏_pygame做的著名游戏_02

检查是否安装成功



如果出现:ImportError: No module named pygame 那就是没有安装成功,(●'◡'●)。

如果没有出现异常错误,那就说明pygame模块安装成功了。

导入与初始化

环境安装完成之后,我们就正式开始介绍关于pygame的使用,准备好了吗?




Python pygame格斗游戏 用python和pygame写游戏_pygame做的著名游戏_03

开始



今天我们主要讲pygame导入与初始化、载入图像与声音、主循环等内容。

在pygame中,导入和初始化是一个非常简单的过程。有多简单呢?

首先,第一步导入pygame包,只有导入包之后才能使用其中的方法与属性。

import pygame

第二步初始化,通过init方法初始化pygame库,让计算机硬件做好准备。

pygame.init()

完成了初始化的工作之后,接下来我们尝试创建出来一个pygame的窗口。

创建一个Pygame窗口

Pygame最重要的部分是表面。我们可以把表面想象成一张白纸。你可以用表面做很多事情:画线、填充颜色、复制图像等。这个表面可以是任何尺寸的,我们设置的是800(宽)*600(高)的大小。试着运行这个程序,你会发现有一个黑黑的窗口一闪而过。

import pygamepygame.init()screen = pygame.display.set_mode([800,600])

这是因为Pygame的作用就是为了创建游戏,所以需要与玩家不断互动, 需要有一个事件循环一直运行。 为了让事件驱动系统"看到"事件发生,它必须不断"寻找"事件,这种特殊的循环我们称为事件循环。因此我们需要采用while来执行这种循环。

import pygamepygame.init()screen = pygame.display.set_mode([1080,675])while True:    pass

添加了while循环之后,黑窗口就能够一直存在了,但是会产生新的问题,那就是程序进入了死循环,无法关闭。




Python pygame格斗游戏 用python和pygame写游戏_pygame做的著名游戏_04

死循环



接着,我们要增加一个事件处理器,用来监听当用户点击退出按钮时发生的事件。

在pygame中我们将使用的模块是 pygame.event,使用pygame.event.get()方法可以从事件队列得到所有事件的一个列表。

获取到所有的事件之后,通过遍历的方式处理列表中的每一个事件,如果遇到QUIT退出事件,则调用sys.exit方法结束程序。

import sysimport pygamepygame.init()screen = pygame.display.set_mode([1080,675])while True:    for event in pygame.event.get():        if event.type == pygame.QUIT:            sys.exit()

运行以上代码,你就会看到一个能正常工作的窗口啦~,通过右上角的叉叉就能够正常的关闭程序。

插入图像(pygame.image)

当程序正常运行之后,接下来我们想办法在窗口中插入一张图片, 在 Pygame 中,使用图像最简单的方法就是利用 image 函数, pygame.image模块有一个load()函数,可以帮我们加载图片。

import sysimport pygamepygame.init()screen = pygame.display.set_mode([1080,675])image_filename = './Source/diss.png'image = pygame.image.load(image_filename)while True:    for event in pygame.event.get():        if event.type == pygame.QUIT:            sys.exit()




Python pygame格斗游戏 用python和pygame写游戏_pygame安装_05

可恶



运行代码之后,pygame的窗口并没有出现图片这是因为图片加载完成后,我们需要将像素从一个地方复制到另一个地方。像素复制在编程中有一个特殊的名字,叫做块移(blitting)。

它可以帮助我们将一个图像从一个地方“块移”(就是复制啦)到另一个地方。移到哪里呢?我们需要设定一个起始位置,即: x 轴(水平方向)、y 轴(垂直方向)。 在 Pygame 中, 这两个数是从从窗口左上角的 [0, 0] 坐标开始的。

所以我们需要加入以下代码:screen.blit(image, [0, 0]).

除此之外,对于 Pygame 窗口中显示的所有内容来讲,如果内容发现变化之后就需要进行flip,否则修改的内容并不能更新到窗口。

# 导入模块import sysimport pygame# 初始化pygame.init()# 设置窗口screen = pygame.display.set_mode([1080,675])# 图片路径image_filename = './Source/diss.png'# 加载图片image = pygame.image.load(image_filename)# 移动图片screen.blit(image, [0, 0])# 更新窗口内容pygame.display.flip()# 循环监听事件while True:    for event in pygame.event.get():        if event.type == pygame.QUIT:            sys.exit()