蘑菇云【行空板Python入门教程】第五课:2D迷宫

2D迷宫

迷宫游戏是许多小伙伴儿时经常做的游戏,它能锻炼我们的空间推理能力、逻辑力、耐心与恒心,也能带来许多欢乐。

让我们设计一个迷宫游戏,在DFRobot-行空板屏幕上体验一下吧!
2D迷宫图

任务目标

通过三轴加速度传感器获取加速度值,继而控制角色在地图上移动走出迷宫。

行空板获取加速度值
行空板获取加速度值

知识点

1、认识三轴加速度传感器

2、学习使用Pinpong库读取加速度值的方法

3、学习使用turtle库绘制迷宫的方法

材料清单

行空板材料清单

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

知识储备

1、什么是重力加速度与加速度传感器

地球表面附近的物体因受重力产生的加速度叫做重力加速度,也叫自由落体加速度,用g表示。

加速度传感器,是一种能够测量加速度,将其转换为电信号的设备。

行空板的加速度传感器是内置在板子上的,可以测量X,Y,Z三个方向的加速度,其中,X轴正方向为金手指一侧的方向,Y轴正方向为Home按键一侧的方向,Z轴垂直于板子,正方向为屏幕背面一侧的方向。
行空板XYZ方向加速度值
三轴加速度传感器

2、Pinpong库读取加速度值

Pinpong库的“pinpong.extension.unihiker”文件下“GD32Sensor_acc”类中的“get_x()”、“get_y()”、“get_z()”三个方法可以分别获取x/y/z三个方向的加速度值,并且由于在文件中已经对该类进行过实例化生成了一个accelerometer对象,因此,我们在使用时,可以直接通过“accelerometer.getx()”/“accelerometer.gety()”/“accelerometer.getz()”指令来获取各自方向的加速度值。当然,在这之前,我们需要先导入Pinpong库相关的文件并初始化板子。

from pinpong.board import Board # 从pinpong.board包中导入Board模块

from pinpong.extension.unihiker import * # 导入pinpong.extension.unihiker包中所有模块

Board().begin() # 初始化,选择板型和端口号,不输入则进行自动识别

 x = accelerometer.get_x() # 获取x轴加速度值

 y = accelerometer.get_y() # 获取y轴加速度值

其中,x和y是一个变量,分别用来存储检测到的x和y轴方向的加速度值。

3、turtle库屏幕控制的常见函数

turtle库中关于屏幕控制的函数有很多,我们只使用其中的一部分,编程时,通过“import turtle”导入库后可采用“turtle.函数名()”的形式来实现功能。

(1)bgpic()函数设置绘图窗口(画布)的背景颜色

通过bgpic()函数我们可为当前的窗口屏幕设置背景颜色。

turtle.bgcolor(“pink”) # 设置窗口背景颜色

其中,“pink”指的是粉红色。这里的颜色同样可以通过RGB值、十六进制值、固定值三种不同的方式来表示。

(2)clear()函数清空窗口

通过clear()函数我们可以将窗口上的内容清空掉。

turtle.clear() # 清空窗口

4、turtle库画笔运动的常见函数

(1)setheading()函数设置画笔当前的朝向

通过setheading()函数我们可使画笔朝向任何方位。0°表示正东方向,90°表示正北方向,180°/-180°表示正西方向,270°/-90°表示正南方向。

setheading()函数设置画笔方向图

turtle.setheading(90) # 设置画笔的朝向为90°方向

其中,“90”指的是具体要指向的方位角度。可通过改变方位角度值来改变画笔的朝向。

(2)write()函数书写文字

通过write()函数我们可以使画笔在窗口屏幕上书写文字。

turtle.write(‘you win!’,font = (‘微软雅黑’, 30)) # 书写“you win!”

其中,“you win!”指的是具体要写入的文字内容,align指的是对齐方式,“center”表示中心对齐,font指的是字体,这里为大小30的微软雅黑字体。

动手实践

任务描述1:绘制迷宫

在屏幕上绘制一幅盘根错节的迷宫图。

1、硬件搭建

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

2、程序编写

STEP1:创建与保存项目文件

启动Mind+,另存项目并命名为“005、2D迷宫”。

STEP2:创建与保存Python文件

创建一个Python程序文件“protract.py”,双击打开。

STEP3:程序编写1

在这个任务中,我们将绘制一幅迷宫图,由于迷宫图的绘制过程比较复杂,因此,我们将其单独编写在protract程序文件中,以便在后续直接调用。

(1) 导入所需功能库

这里,我们需要使用turtle库来绘制迷宫,因此,我们需要先导入它。

import turtle # 导入turtle库

(2) 创建图形窗口

为了能使迷宫显示在屏幕上,我们需要先创建一个和屏幕大小一致的图形窗口,而后在图形窗口中创建一块画布,设置好相应的大小尺寸和背景颜色,并设置屏幕延迟为0,避免卡顿。

turtle.setup(240, 320) # 设置图像窗口大小

turtle.bgcolor(“pink”) # 设置窗口背景颜色

turtle.delay(0) # 屏幕延迟

(3) 设计迷宫路线方案

对于迷宫图的绘制,我们分两步进行。首先,我们设定一个宽和高都为20像素的小方格作为一堵墙,之后,以此小方格为一个单位来设定整体的迷宫,由于屏幕的宽为240像素,高为320像素,在横向上,我们可绘制13个方格(屏幕显示为11个整块方格+2边各一个半块方格),而在纵向上,我们也够绘制13个方格。

这里,我们以“0”和“1”来表示小方格的有无,并通过列表嵌套的形式来表示迷宫的路线。

迷宫列表

maze_list = [

[0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0], # 第0行

[0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0], # 第1行

[0, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0], # 第2行

[0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0], # 第3行

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值