蘑菇云「行空板Python入门教程」第七课:舒尔特方格小游戏

本文介绍了如何利用Python的pygame库制作舒尔特方格注意力训练游戏,通过游戏训练注意力。游戏包含开始界面、显示数字图片、计算完成时间等功能,还介绍了pygame库中加载图片、播放音效、处理鼠标事件等方法。玩家需按顺序点击1-25的数字,记录完成时间,以提高注意力水平。
摘要由CSDN通过智能技术生成

注意力是一切学习的根本,是大脑进行感知、学习、思维等认知活动的基本条件。然而,无论是孩子还是成年人,我们常常会因开小差、注意力无法集中而困扰。此时,找到一个合适的方法来训练我们的注意力势在必行。

舒尔特方格训练法,是全世界范围内最简单,最有效也是最科学的注意力训练方法之一。 舒尔特方格 (Schulte Grid) 是在一张方形卡片上画上 1cm*1cm 的 25 个方格,格子内任意填写上 阿拉伯数字 1 ~ 25 等共 25 个数字。训练时,要求被测者用手指按 1 ~ 25 的顺序依次指出其位置,同时诵读出声,施测者一旁记录所用时间。数完 25 个数字所用时间越短,注意力水平越高。

让我们一起用DFRobot行空板设计一个舒尔特方格小游戏来训练一下自己的注意力吧!
在这里插入图片描述

任务目标
在屏幕上进行舒尔特方格小游戏。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

知识点

1、学习使用pygame库加载图片的方法

2、 学习使用pygame库播放音效的方法

3、学习使用pygame库实现鼠标交互的方法

材料清单
硬件清单:

行空板x1

Type-C&Micro二合一USB线x1
USB小喇叭x1

软件使用:Mind+编程软件x1

知识储备

1、pygame库image模块中的常用方法

pygame库image模块主要用于对于图像的处理。在编程时,可通过“模块名.方法名()”的形式来实现功能。

(1)load()方法加载图像文件

load()方法可以实现从指定位置加载图像

screen.blit(pygame.image.load(“pic/start-5.png”), (30, 190)) # 在(30,190)坐标位显示图片start-5.png

其中,“pic/start-5.png”,表示的是具体的图像的路径和文件名,这里指来自pic文件夹下名称为start-5.png的图像文件,在加载好图像后,我们可通过blit方法将其显示在指定的位置。

2、pygame库music模块中的常用方法

pygame库music模块在使用时与mixer模块紧密相连,可实现对于音频和声音的控制。

(1)load()方法加载音频文件

load()方法可以实现对于音频文件的加载。

wavFileName = ‘sounds/fire.wav’ # 设置音效文件路径

sndTrack = pygame.mixer.music.load(wavFileName) # 加载音效文件

其中,wavFileName指的是具体路径下的音频文件。sndTrack是个变量,用于存储加载的音频对象。

(2)play()方法播放音频

play()方法可以实现对于加载后的音频文件的播放。

pygame.mixer.music.play() # 播放音乐

3、pygame库mouse模块中的常用方法

pygame库mouse模块可以用来获取鼠标设备的当前状态,这个游戏中我们通过触摸屏幕来模拟鼠标的控制。在编程时,可通过“模块名.方法名()”的形式来实现功能。

(1)get_pos()方法获取鼠标的位置

get_pos()方法可以实现对于鼠标所在位置的x、y坐标的获取。

t_x, t_y = pygame.mouse.get_pos() # 获取鼠标的x和y坐标位,存储到变量t_x, t_y中

其中,t_x,和t_y是两个变量,用来存储获取到的鼠标所在的横纵坐标。

4、pygame库中的鼠标事件以及事件检测

鼠标是计算机最重要外接设备之一,同时它也是游戏玩家必不可少的工具之一,比如游戏中对于图片的按下,松开等操作,这些都需要鼠标来配合实现。

Pygame 提供了三个鼠标事件,分别是鼠标移动(MOUSEMOTION)、鼠标按下(MOUSEBUTTONDOWN)、鼠标释放(MOUSEBUTTONUP),不同事件类型对应着不同的成员属性。

而对于三个鼠标事件,pygame都提供了一个pos 属性,即相对于窗口左上角,鼠标的当前坐标值(x,y)。

因此,要想实现鼠标控制游戏的进行,那么我们就需要先检测事件,再对事件进行判别。

if event.type == pygame.MOUSEBUTTONUP and 30 <= t_x <= 200 and 190 <= t_y <= 250: # 如果鼠标被释放且横纵坐标在“开始游戏”图片的范围内

其中,event.type表示事件的类型,pygame.MOUSEBUTTONUP表示鼠标释放事件, 30 <= t_x <= 200 and 190 <= t_y <= 250表示鼠标的横坐标在30-300之间,纵坐标在190-250之间。

5、什么是numpy库及常见函数

Numpy是Python中的一个科学计算库,一般用于数组的处理。编程时,通过“import numpy”导入库后可采用“numpy.函数名()”的形式来实现功能。

(1)array()函数创建一个数组

通过array()函数我们创建一个数组。

Xpts = [0, 48, 96, 144, 192] # x坐标

Ypts = [0, 48, 96, 144, 192] # y坐标

ha = itertools.product(Xpts, Ypts) # 将x、y的坐标进行全排列,得到25组数据

haha = list(ha) # 通过list函数将全排列后的数据转换为列表形式

‘’'得到:[(0, 0), (0, 48), (0, 96), (0, 144), (0, 192), (48, 0), (48, 48), (48, 96), (48, 144),

(48, 192), (96, 0), (96, 48), (96, 96), (96, 144), (96, 192), (144, 0), (144, 48), (144, 96),

(144, 144), (144, 192), (192, 0), (192, 48), (192, 96), (192, 144), (192, 192)]‘’’

map = np.array(haha) # 把列表中数据转换为数组形式

这里,我们先创建了两组列表Xpts和Ypts,分别存储数据来表示x、y坐标值,之后我们通过Python内置的itertools库中的product()函数,将两组列表中的数值进行了全排列并将结果转换为列表形式,最后我们通过numpy库中的array()函数将其再转换成数组形式,并存储到变量map中。

6、time库time()函数检测当前时间

time库中的time()函数可以用来检测时间并返回当前时间的时间戳。

time_start = time.time() # 开始计时

time_end = time.time() # 结束计时

time_c = round(time_end - time_start, 1) # 计算运行所花时间,保留1位小数

这里,我们先后通过time.time()记录下的当前的时间,之后将两者进行做差运算,得到时间差。

动手实践

任务描述1:创建游戏窗口与开始界面

通过pygame库创建一个游戏窗口并在其上显示游戏开始界面。

1、硬件搭建

通过USB连接线将行空板连接到计算机

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值