2019-4-26 14:57:34 [显示全部楼层]
41929浏览
查看: 41929|回复: 22

[入门教程] Mind+ 掌控板入门教程13 贪吃蛇

[复制链接]
【Mind+】掌控入门 项目十三 贪吃蛇

-DFRobot官方出品
上一篇:【Mind+】掌控入门 项目十二 电子秒表

下一篇:【Mind+】掌控入门 项目十四 智能物联手表(part1)

      很多游戏玩家都会记得小时候用最简朴的掌机玩《贪吃蛇》的岁月,在那款分辨率极低的屏幕上,几条扭扭曲曲的弧线似乎穿越了整个童年。

Mind+ 掌控板入门教程13 贪吃蛇图1

      今天就让我们用掌控板来实现这款经典的游戏。

项目示例

      在本项目中,我们将屏幕上的单个像素点作为贪吃蛇的蛇头身体食物,利用按钮A、B控制蛇头的运动方向,通过不断吃食物,贪吃蛇身体变长,来制作一个简单的贪吃蛇游戏。

      在编程过程中,首先我们将通过按钮控制蛇头的运动,然后实现蛇的身体跟随蛇头一起运动,最后添加吃食物身体变长、开机动画、游戏失败和计分机制,完善整个游戏。

      通过以下三个小任务进行实践:

  • 任务一:按钮控制蛇头运动

  • 任务二:蛇的身体运动

  • 任务三:完善游戏机制

任务一:按钮控制蛇头移动

      将贪吃蛇的蛇头简化为屏幕上一个像素点,通过按扭A、B改变像素点的运动方向。

      在屏幕上,蛇头一共有四个运动方向,游戏开始默认向右运动,按下按钮A逆时针(左转)改变运动方向,按下按钮B顺时针(右转)改变运动方向。每按下一次按钮,方向改变90度。

Mind+ 掌控板入门教程13 贪吃蛇图2

      程序如下:
Mind+ 掌控板入门教程13 贪吃蛇图3

   运行结果:

  • 开机时,屏幕中央显示一个像素点,默认向右运动;

  • 按下A,左转;

  • 按下B,右转。

* 因为未对坐标范围进行限制,所以蛇头像素点会超过屏幕显示范围。如果觉得像素点太小,可以使用画圆指令。

Mind+ 掌控板入门教程13 贪吃蛇图4

任务二:蛇的身体运动

      将蛇的身体也简化为像素点,一个像素点代表一节身体。蛇的身体运动时只需要考虑蛇头坐标变化,其余每一节身体依次取代前一节身体的坐标即可。

      程序如下:

Mind+ 掌控板入门教程13 贪吃蛇图5
Mind+ 掌控板入门教程13 贪吃蛇图6
Mind+ 掌控板入门教程13 贪吃蛇图7

      运行结果:开机时,由6个像素点组成的贪吃蛇出现在屏幕中央,默认向右移动,按下A或B,会逆时针或顺时针转向。

      在程序中我们使用了列表来存储贪吃蛇每个像素点的位置。如下图,列表XY分别存储贪吃蛇6个像素点的x、y坐标值。

Mind+ 掌控板入门教程13 贪吃蛇图8

      当蛇头向右移动一步时,旧蛇身数据依次替换到新蛇身中,补齐新蛇头的坐标即可。

Mind+ 掌控板入门教程13 贪吃蛇图9
任务三:完善游戏机制

       在任务二程序基础上,添加函数“开场动画”、“吃到食物”、“碰壁”来完成游戏的开场动画、吃到食物身体变长计分机制游戏失败并重新开始游戏。

1.“开场动画”函数

       定义“开机动画”函数,将下面16张照片依次显示在掌控板上,每张显示0.2秒。下图中只截取了部分程序

Mind+ 掌控板入门教程13 贪吃蛇图10
Mind+ 掌控板入门教程13 贪吃蛇图11
2.“碰壁”函数

       定义“碰壁”函数,设定游戏失败条件是蛇头碰到屏幕边缘。游戏失败后显示得分,2秒后重新开始游戏。

Mind+ 掌控板入门教程13 贪吃蛇图12

3.“吃到食物”函数

       定义“吃到食物”函数,在屏幕上随机显示一个像素点作为食物,当蛇头与食物位置重合表示吃到食物,蛇的长度+1。

Mind+ 掌控板入门教程13 贪吃蛇图13

4. 同时为了保证开场时随机食物的出现,在初始化长度中,增加设置随机食物初始值。


Mind+ 掌控板入门教程13 贪吃蛇图14

5. 将函数“开场动画”放置到主程序中,并放置显示食物像素点的“画点”指令,以保证食物一直出现在屏幕上。

Mind+ 掌控板入门教程13 贪吃蛇图15

6. 最后,将函数“吃到食物”、“碰壁”放置到函数“贪吃蛇活动”中。

Mind+ 掌控板入门教程13 贪吃蛇图16

   运行结果:

  • 开场动画

Mind+ 掌控板入门教程13 贪吃蛇图17

  • 随机出现食物

Mind+ 掌控板入门教程13 贪吃蛇图18
  • 碰壁之后结束游戏和计分

Mind+ 掌控板入门教程13 贪吃蛇图19
知识拓展

软件知识

1、“列表”指令

      列表是变量的一种,表示一组变量。举个例子,一周中每天的天气如何?周一是晴天还是下雨?周二呢?周三?……这些就可以看成一组变量,因为都是描述这一周天气的。

     “列表”指令的新建:

Mind+ 掌控板入门教程13 贪吃蛇图20

      当要存储和调用多个字符的时候,使用“列表”指令会很方便。需要注意的是,在列表中存储的数据是以字符串的形式存在,比如Mind+ 掌控板入门教程13 贪吃蛇图21,插入的1表示字符串1,而不是数字1。

       当需要字符串数字相互转换的时候,此时可以调用“运算符”中的转换指令。

Mind+ 掌控板入门教程13 贪吃蛇图22
      通过指令Mind+ 掌控板入门教程13 贪吃蛇图23可替换列表中指定项的数据。

      通过指令Mind+ 掌控板入门教程13 贪吃蛇图24调可获得列表中指定项的数据。

2、数据类型

      什么叫数字1,什么又叫字符串1呢?其实字符串或者数字都叫做数据类型。比如数字1表示数值类型数据,可以加减乘除,而字符串1表示文本类型数据,不能加减乘除,但可以和其他文本合并。字符串一般可以由数字、字母、下划线组成。

      数据类型的出现是为了把数据分成所需内存大小不同的数据,编程的时候需要用大数据的时候才需要申请大内存,就可以充分利用内存。例如大胖子必须睡双人床,就给他双人床,瘦的人单人床就够了。

3、指令汇总

Mind+ 掌控板入门教程13 贪吃蛇图25

项目小结

  • 掌握掌控板函数、变量的使用

  • 学习列表,存储和调用多组字符,完成复杂任务

  • 了解数据类型,掌握数据类型转换方法

挑战一下

1、增加游戏难度,比如随着吃到的食物越来越多,加快贪吃蛇运动速度。

2、在屏幕中内置迷宫和障碍,增加游戏趣味度。

贪吃蛇程序.zip

181.56 KB, 下载次数: 3229

卡布摩森布丁  见习技师

发表于 2023-12-4 20:32:45

程序有错误呀
任务二和任务三一样的错,在“定义 贪吃蛇活动”里面,画身子的时候,【将字符串“123”转换为[整数]】,这个里面的“123”应该是取列表里面的对应项。应当改为 【将字符串【X的第【变量 列表d】转换为[整数]】】
回复

使用道具 举报

有德为善  学徒 来自手机

发表于 2019-7-31 16:57:27

xiaohe9527 发表于 2019-5-7 14:32
向列表的第*项插入,这个指令不存在啊,而且与后面的在列表的第*项前插入相矛盾啊
这官方程序也不严谨啊 ...

mind+还支持数组,强大
回复

使用道具 举报

xiaohe9527  高级技师

发表于 2019-5-7 14:32:42


向列表的第*项插入,这个指令不存在啊,而且与后面的在列表的第*项前插入相矛盾啊
这官方程序也不严谨啊
回复

使用道具 举报

rzyzzxw  版主

发表于 2019-4-26 18:16:01

哇呀呀,好玩呀。
回复

使用道具 举报

xiaohe9527  高级技师

发表于 2019-5-7 13:28:24

程序有点长了,如果能提供源程序就好了
回复

使用道具 举报

xiaohe9527  高级技师

发表于 2019-5-7 14:46:15

获取列表的第*项也没有啊
回复

使用道具 举报

EVE  高级技匠
 楼主|

发表于 2019-5-7 15:35:29

xiaohe9527 发表于 2019-5-7 13:28
程序有点长了,如果能提供源程序就好了

程序在附件上传咯
回复

使用道具 举报

EVE  高级技匠
 楼主|

发表于 2019-5-7 16:01:36

本项目目前只能在1.5.2版本Mind+上运行
回复

使用道具 举报

laai  初级技师

发表于 2019-6-5 10:19:44

好程序,可以学习学习
回复

使用道具 举报

33  见习技师

发表于 2019-7-7 12:28:01

能不能提供一下源程序
回复

使用道具 举报

EVE  高级技匠
 楼主|

发表于 2019-7-8 09:16:53

33 发表于 2019-7-7 12:28
能不能提供一下源程序

提供了呀 最后的压缩包就是
回复

使用道具 举报

LeSoleil  见习技师

发表于 2019-7-17 09:20:45

太好了!
回复

使用道具 举报

gada888  版主

发表于 2019-8-3 21:04:15

这功能都给挖出来了。
回复

使用道具 举报

binarystar  学徒

发表于 2021-3-2 14:58:21

我的Mind+软件没有列表
回复

使用道具 举报

binarystar  学徒

发表于 2021-3-2 15:02:50

1.6.3版本的Mind+没有列表、元组、字典呀,我用的是micropython
回复

使用道具 举报

6leo  高级技师

发表于 2021-4-14 15:06:30

我的没有成功,不知道你们都怎么样?蛇的身长好像没有变化
回复

使用道具 举报

GPS  见习技师

发表于 2021-7-11 12:49:50

求程序中的图片,下载几次就卡没了
回复

使用道具 举报

河岸上的鱼  见习技师

发表于 2022-1-28 21:43:55

真好受到启发了哈哈哈
回复

使用道具 举报

赤星三春牛!  初级技神

发表于 2022-1-30 12:44:39

求源程序!
回复

使用道具 举报

赤星三春牛!  初级技神

发表于 2022-1-30 12:45:01

作品很不错!
回复

使用道具 举报

赤星三春牛!  初级技神

发表于 2022-1-30 12:45:36

感谢分享!
回复

使用道具 举报

12下一页
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail