Pygame有很多模块,每个模块又有很多方法,在此不能够逐一讲解,所以,我们通过一个实例来学习Pygame,然后再分解代码,讲解代码中的模块。

例:制作一个跳跃的小球游戏。

创建一个游戏窗口,然后在窗口内创建一个小球。以一定的速度移动小球,当小球wordpress碰到游戏窗口的边缘时,小球弹回,继续移动。可以按照如下步骤实现该功能。

(1)创建一个游戏窗口,宽和高设置为640*480。代码如下:

import sys #导入sys模块

import pygame #导入pygame模块

pygame.init() #初始化pygame

size = width,height = 640,480 #设置窗口

screen = pygame.display.set_mode(size) #显示窗口

上述代码中,首先导入pygame模块,然后调用init()方法初始化pygame模块。接下来,设置h3cne窗口的宽和高,最后使用display模块显示窗体。display模块的常用方法如下表selenium所示。

方法名

功能

pygame.dispaly.init

初始化display模块

pygame.dispaly.quit

结束display模块

pygame.dispaly.get_init

如果display模块已经被初始化,则返回True

pygame.dispaly.set_mode

初始化一个准备显示的界面

pygame.dispaly.get_surface

获取当前的Surface对象

pygame.dispaly.flip

更新整的待显示的Surface对象到屏幕上

pygame.dispaly.update

更新部分内容显示到屏幕上,如果没有参数则与flip功能相同

(2)运行上述代码,会出现一个一闪而过的黑色窗口,这是因为程序执行完成后会自动关闭。如果让窗口一直显示,需要使用while True让程序一直执行,此外,还需要设置webdriver关闭按钮。具体代码如下:

#-*-coding:utf-8-*-

import sys #导入sys模块

import pygame #导入pygame模块

pygame.init() #初始化pygame

size = width,height = 640,480 #设置窗口

screen = pygame.display.set_mode(size) #显示窗口

#执行死循环,确保窗口一直显示

while True:

#检查事件

for event in pygame.event.get():

if event.type == pygame.QUIT: #如果单击关闭窗口,则退出

sys.exit()

pygame.quit() #退出pygame

上述代码中,添加了轮询事件检测。pygame.event.get()能够获取事件队列,使用for...in遍历事件,然后根据type属性判断事件类型。这里的事件处理方式与GUI类似,如event.tpye等于pygame.QUIT表示检测到关闭pygame窗口事件,pygame.KEYDOWN表示键盘按下事件,pygame.MOUSEBUTTONDOWN表示鼠标按下事件等。

(3)在窗口中添加小球。我们准备好一张ball.png图片,然后加载该图片。最后将图片显示DedeCMS在窗口中,具体代码如下:

#-*-coding:utf-8-*-

import sys #导入sys模块

import pygame #导入pygame模块

pygame.init() #初始化pygame

size = width,height = 640,480 #设置窗口

screen = pygame.display.set_mode(size) #显示窗口

color = (0,0,0) #设置颜色

ball = pygame.image.load("ball.png") #加载图片

ballrect = ball.get_rect() #获取矩形区域

#执行死循环,确保窗口一直显示

while True:

#检查事件

for event in pygame.event.get():

if event.type == pygame.QUIT: #如果单击关闭窗口,则退出

sys.exit()

screen.fill(color) #填充颜色

screen.blit(ball,ballrect) #将图片画到窗口上

pygame.display.flip() #更新全部显示

pygame.quit() #退出pygame

上述代码中,使用image模块的loda()方法加载图片,返回值ball是一个Surface对象。Surface是用来代表图片的Pygame对象,可以对一个Surface对象进行涂画、变形、复制等各种操作,事实上,屏幕也只是一个Surface,pygame,display.set_mode就返回了一个屏幕Surface对象。如果将ball这个Surface对象画到screenSurface对象,需要使用bilt()方法,最后使用display模块的filp方法更新整个待显示的Surface对象到屏幕上。Surface对象的常用方法如下表所示。

方法名

功能

pygame.Surface.blit

将一个图像画到另一个图像上

pygame.Surface.convert

转换图像的像素格式

pygame.Surface.convert_Alpha

转换图像的像素格式,包含Alpha通道的转换

pygame.Surface.fill

使用颜色填充Surface

pygame.Surface.get_rect

获取Surface的矩形区域

运行上述代码,结果如下图。

(4)下面该让小球动起来了。ball.get_rect()方法返回值ballrect是一个Rect对象,该ECShop对象有一个move()方法可以用于移动矩形。move(x,y)函数有两个参数,第一个参数是X轴移动的距离,第二个参数是Y轴移动的距离。窗体左上角坐标为(0,0),例如move(100,50),如下图示。

为实现小球不停地移动,将move()函数添加到whlie循环内,具体h3c代码如下:

#-*-coding:utf-8-*-

import sys #导入sys模块

import pygame #导入pygame模块

pygame.init() #初始化pygame

size = width,height = 640,480 #设置窗口

screen = pygame.display.set_mode(size) #显示窗口

color = (0,0,0) #设置颜色

ball = pygame.image.load("ball.png") #加载图片

ballrect = ball.get_rect() #获取矩形区域

speed = [5,5] #设置移动的X轴、Y轴距离

#执行死循环,确保窗口一直显示

while True:

#检查事件

for event in pygame.event.get():

if event.type == pygame.QUIT: #如果单击关闭窗口,则退出

sys.exit()

ballrect = ballrect.move(speed) #移动小球

screen.fill(color) #填充颜色

screen.blit(ball,ballrect) #将图片画到窗口上

pygame.display.flip() #更新全部显示

pygame.quit() #退出pygame

(5)运行上述代码,发现小球在屏幕中一闪而过,此时,linux小球并没有真正消失,而是移动到窗体之外,此时需要添加碰撞检测的功能。当小球与窗体任一边缘发生碰撞,则更改小球的移动方向。具体代码如下:

#-*-coding:utf-8-*-

import sys #导入sys模块

import pygame #导入pygame模块

pygame.init() #初始化pygame

size = width,height = 640,480 #设置窗口

screen = pygame.display.set_mode(size) #显示窗口

color = (0,0,0) #设置颜色

ball = pygame.image.load("ball.png") #加载图片

ballrect = ball.get_rect() #获取矩形区域

speed = [5,5] #设置移动的X轴、Y轴距离

#执行死循环,确保窗口一直显示

while True:

#检查事件

for event in pygame.event.get():

if event.type == pygame.QUIT: #如果单击关闭窗口,则退出

sys.exit()

ballrect = ballrect.move(speed) #移动小球

#碰到左右边缘

if ballrect.left < 0 or ballrect.right > width:

speed[0] = -speed[0]

#碰到上下边缘

if ballrect.top < 0 or ballrect.right > height:

speed[1] = -speed[1]

screen.fill(color) #填充颜色

screen.blit(ball,ballrect) #将图片画到窗口上

pygame.display.flip() #更新全部显示

pygame.quit() #退出pygame

上述代码中,添加了碰撞检测功能。如果碰到左右边缘,则更改X轴数据为负数:如果碰到上下边缘,则更改Y轴数据为负数。运行结果如下图。

(6)运行上述代码发现好像有多个小球在飞快移动,这是因为自动化测试运行上述代码的时间非常短,导致肉眼观察出错觉,因此需要添加一个“时钟”来控制程序运行的时间。这是就需要使用软件测试pygame的time模块。使用pygame时钟之前,必须先创建Clock对象的一个实例,然后在while循环中设置多长时间运行一次。具体代码如下:

#-*-coding:utf-8-*-

import sys #导入sys模块

import pygame #导入pygame模块

pygame.init() #初始化pygame

size = width,height = 640,480 #设置窗口

screen = pygame.display.set_mode(size) #显示窗口

color = (0,0,0) #设置颜色

ball = pygame.image.load("ball.png") #加载图片

ballrect = ball.get_rect() #获取矩形区域

speed = [5,5] #设置移动的X轴、Y轴距离

clock = pygame.time.Clock() #设置时钟

#执行死循环,确保窗口一直显示

while True:

clock.tick(60) #每秒执行60次

#检查事件

for event in pygame.event.get():

if event.type == pygame.QUIT: #如果单击关闭窗口,则退出

sys.exit()

ballrect = ballrect.move(speed) #移动小球

#碰到左右边缘

if ballrect.left < 0 or ballrect.right > width:

speed[0] = -speed[0]

#碰到上下边缘

if ballrect.top < 0 or ballrect.right > height:

speed[1] = -speed[1]

screen.fill(color) #填充颜色

screen.blit(ball,ballrect) #将图片画到窗口上

pygame.display.flip() #更新全部显示

pygame.quit() #退出pygame

至此,就完成了测试跳跃的小球游戏。

python中的pygame模块使用方法_Pygame的基本使用相关推荐

  1. python中利用pygame模块输出文字

    import pygame,sys from pygame.locals import * pygame.init() #初始化pygame模块 DISPLAYSURF = pygame.displa ...

  2. python中的pygame弹球游戏代码_pygame弹球游戏

    pygame弹球游戏 写的很简陋 pip install pygame 安装pygame模块 代码,复制运行即可 import pygame import random pygame.init() w ...

  3. python中的pygame弹球游戏代码_pygame实现弹球游戏

    本文实例为大家分享了pygame实现弹球游戏的具体代码,供大家参考,具体内容如下 pygame弹球游戏 写的很简陋 pip install pygame 安装pygame模块 代码,复制运行即可 im ...

  4. Windows 下在 Python 中安装 Swampy 模块的方法

    在学习 Think Python 第四章 接口设计 时, 遇到的第一个问题就是安装 Swampy 模块,参考了官方的安装方法 http://www.greenteapress.com/thinkpyt ...

  5. Python 中的 os 模块常见方法

    os.remove()删除文件 os.rename()重命名文件 os.walk()生成目录树下的所有文件名 os.chdir()改变目录 os.path.split()返回(dirname(),ba ...

  6. Python 中的 os 模块常见方法?

    1 os.remove() 删除文件 2 os.rename() 重命名文件 3 os.walk() 生成目录树下的所有文件名 4 os.chdir() 改变目录 5 os.mkdir/makedir ...

  7. python安装django模块_python中安装django模块的方法

    网上搜一下对应的版本号,版本号相对应. 安装django有两种方式: 1.pip安装 pip install django 这个方法我用的时候已经报错.貌似访问被阻挡.我一般都用第二种 2.下载压缩包 ...

  8. python中tkinter模块_使用Python中的tkinter模块作图的方法

    python简述: Python是一种解释型.面向对象.动态数据类型的高级程序设计语言.自从20世纪90年代初Python语言诞生至今,它逐渐被广泛应用于处理系统管理任务和Web编程.Python[1 ...

  9. python json loads_如何区别python中的json模块loads和load方法

    在python中的json模块,有一对方法load()和loads(),其中load()方法是从json文件读取json,而loads()方法是直接读取json,两者都是将字符串json转换字典对象. ...

最新文章

  1. 【关注】人类的智力是如何发展起来的?《自然》发布三大科学假说
  2. Type mismatch:
  3. 【转】Microsoft Graph 概述
  4. 【demo练习二】:WPF依赖属性的练习
  5. 2018广技师C语言专插本试题,2018年成功插本广技师 ,分享备考经验!附:复习时间表...
  6. linux系统in命令,Linux中的In命令
  7. 2018CHD-ACM新生赛(正式赛)E.解救迷茫的草滩小王子
  8. es6 next()、throw()、return() 的共同点
  9. [置顶] asp.net(c#)中相对路径(虚拟路径)和物理磁盘路径的转换
  10. 递归和非递归分别实现求n的阶乘
  11. PHPWAMP自定义php版本的方法
  12. GitHub 下dist和src,dest目录的区别
  13. WIN10 Localhost 无法打开 怎么解决
  14. LeetCode93—Restore IP Addresses
  15. 计算机控制系统是闭环还是开环,电喷摩托车系统的开环控制与闭环控制
  16. Hole_making基于特征加工
  17. LINUX基础CAN指令及常见操作
  18. 域名防封之长城防封系统都能做什么?
  19. 操作系统(四)操作系统的主要功能
  20. 使用Keil uVision5进行开发的必备知识

热门文章

  1. 前端学习笔记之 创建节点 与 添加节点案例
  2. JAVA的方法的定义和调用
  3. python treeview文本自动换行显示_在tkinter.ttk.Treeview列中设置文本格式
  4. python 判断时间是否大于6点_python中判断时间间隔的问题
  5. 在列表前方插入一个数据_通俗易懂的Redis数据结构基础教程
  6. 2020笔记本性价比之王_什么笔记本性价比高?2020性价比最高的笔记本电脑
  7. 收到一个机器人txt微盘_经阁-第一章 吞了个机器人-爱阅小说网
  8. smith标准型_线性系统理论(八)多项式矩阵Smith-McMillan标准型计算方法
  9. exec go 重启_无停机优雅重启 Go 程序
  10. 转码java,java转码