0


【Mind+】掌控入门 项目13 贪吃蛇

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

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,会逆时针或顺时针转向。

   在程序中我们使用了**列表**来存储贪吃蛇每个像素点的位置。如下图,**列表X**、**Y**分别存储贪吃蛇**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

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

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

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

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

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

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、在屏幕中内置迷宫和障碍,增加游戏趣味度。

文本参考:

官方教程https://mc.dfrobot.com.cn/misc.php?mod=tag&id=3395
mindplus官方https://mc.dfrobot.com.cn/misc.php?mod=tag&id=3309
掌控板https://mc.dfrobot.com.cn/misc.php?mod=tag&id=3184


本文转载自: https://blog.csdn.net/Zhiyilang/article/details/141039676
版权归原作者 Stitch . 所有, 如有侵权,请联系我们删除。

“【Mind+】掌控入门 项目13 贪吃蛇”的评论:

还没有评论