EV3吃球小游戏分析附我的模块简易使用参考

       上周看到朋友设计了一个EV3纯编程小游戏,觉得蛮有意思,于是自己大概了解了下任务要求,也尝试设计了这么一个游戏,这里将我自己编写的思路和程序进行分享,毕竟不是乐高教育行业的工作人员,太复杂我写不出来,简单一点的还是可以,所以不足之处请多包涵。文章可能有点长,觉得不错就点个赞什么的。

EV3吃球小游戏分析附我的模块简易使用参考

任务:

       上图黑框为EV3程序块屏幕,在红色方框(有三面和屏幕重合)内,黑色实心方形(上图2号)随机出现,移动黑色空心方形(上图1号),如果1号和2号重合,即1号吃掉了2号,那么下方的F积分进行+1计算(初始分数为0),然后2号继续随机出现,但是1号方形在移动过程中不能出红色方框,否则游戏挑战失败。

 

前提设定:

  1. 黑色空心方形(1号)初始出现的位置设定为坐标(0,0);
  2. 通过EV3程序块上的按键对1号方形进行上下左右移动,每次移动的距离为10像素;
  3. 只有当1号方形和2号方形完全重合,才表示1号吃掉了2号,所以这里需要针对2号随机出现的位置进行设置,即2号XY的坐标必须是10的倍数(为什么呢,因为如何重合一点,有点复杂,我不会哈也不想去思考);
  4. 黑色实心方形(2号)不会随机出现再红色方框外;
  5. 红色方框的范围大小,X的范围和屏幕一致都是(0-177),Y的范围是(0-110)。

 

程序分析:

第一步:

       首先需要确定设计的变量值,包括1号方形的坐标值其中包含两个变量,这里分别为X变量和Y变量;2号方形的坐标值也包含两个变量,分别为AX变量和AY变量;最后还包括一个统计得分的变量:FENSHU。参考程序如下:

EV3吃球小游戏分析附我的模块简易使用参考

 

第二步

       就是编写黑色实心方形(2号)随机出现的程序,但是有前提,就是出现的坐标值必须都是10的倍数,所以这里需要利用数学运算模块,参考如下:

EV3吃球小游戏分析附我的模块简易使用参考

       从上图可以得知,AX的值是1-16的范围中随机选取一个数字,这个数字乘以10的结果。同理,AY的范围是在0-10之间选取数字乘以10的结果。为什么这里定的是1-16和0-10这个上下限范围呢。我是这么思考的:

       因为方形坐标值是方形左上角定点的坐标,红色方框的Y值范围是到110结束,加上2号方形的宽度10个像素,所以2号方形随机出现的位置最大也就是100,所以Y方面的范围就是0-100之间,如果大于这个就会超出红色方框。关于X放方面的范围本来应该是0-16的,因为结合取10的倍数和不能超过177的范围,所以应该定0-16中取随机数字,但是考虑到1号方形的初始位置是在(0,0)坐标,为了防止可能出现程序刚开始1号和2号就会出现重合的情况(当然选定0-16也可以),所以将X的范围向上加入了一些,即最后定的1-16范围取数字。

       这部分的程序会在后面还会遇到,因为当1号和2号重合之后,2号仍然需要进行随机出现,所以这里利用我的模块来将程序稍微精简一些。

EV3吃球小游戏分析附我的模块简易使用参考

       我给它取名字叫pingguo。

       至于这个步骤如下,需要说明的是这部分程序应该新建一个程序界面来编写,不建议在之前的程序后方添加:

EV3吃球小游戏分析附我的模块简易使用参考

       首先选中模块,选中之后会变成蓝色方框;

EV3吃球小游戏分析附我的模块简易使用参考

       然后点击上方菜单栏-工具-我的模块创建器。

EV3吃球小游戏分析附我的模块简易使用参考

       然后输入名称,不能输入中文,然后还可以选取一个图标来表示区别。最后在之前主程序后面加入这个模块,该模块在下方我的模块中能够看到。

       主程序如下:

EV3吃球小游戏分析附我的模块简易使用参考

       在后面添加一个清空屏幕为真的模块。

 

第三步

       新建一个程序编写建议,编写1号方形如果出红色方框的程序。

       这里分析下,红色方框的范围是在X(0-177),Y(0-110)之间,所以1号方形的坐标值确定的范围应该是:

       X方面:不能比0小,不能比167大,(由于初始是0,0坐标且每次移动都是10像素,所以准确的来说应该是不能超过160,可以包括160,因为还需要添加上方形本身的宽度10个像素)

       Y方面:不能比0小,不能比100大,因为超过100(可包含100)的话,1号方形就会出红色方框了,考虑到方形本身的长宽还有10个像素。

       明确了这些之后,就可以编写程序啦。

EV3吃球小游戏分析附我的模块简易使用参考

       这里所有的逻辑运算模块都选用的是Or运算,即只要有一种情况为真,那么将终止游戏。一共会应用到三次逻辑运算模块,第一次是X方面进行Or运算,第二次是Y方面,第三次是X和Y两方面共同进行。

       这部分也可以用我的模块来替代,所以第三步开始的时候就建议新建一个程序界面。和之前不同的是,这里需要进行逻辑输出,所以在我的模块中需要添加参数。

EV3吃球小游戏分析附我的模块简易使用参考

       按照上面的方法,弹出这个界面后,点击这个蓝色圆圈的+号,添加输出的参数,因为这部分的程序需要进行逻辑输出。

EV3吃球小游戏分析附我的模块简易使用参考

       这里我给我的模块选了一个图标,如上图蓝色方框显示。好,言归正传,既然给我的模块添加了参数,那么就需要对这个参数进行参数设置,注意上图中的红色椭圆框。

EV3吃球小游戏分析附我的模块简易使用参考

       参数这部分选择输出,并且数据类型是逻辑,注意上面的a也变了,变成逻辑输出的端口,而不是之前数据输入的端口。

EV3吃球小游戏分析附我的模块简易使用参考

       然后点击参数图标,选了这个逻辑运算的图标,注意下上方的a也变成了这个图标。

       最后在名称处输入我的模块的名称,点击完成即可。

EV3吃球小游戏分析附我的模块简易使用参考

       点击完成之后,在最后面会有一个这样的迷你模块出现,我在部落群问过一些朋友,这个具体叫什么,总之各种各样都有,姑且这里叫做逻辑输出模块,如果错了请告诉我。

       这个时候,需要进行联线,如下图:

EV3吃球小游戏分析附我的模块简易使用参考

       该部分完整部分如下:

 

EV3吃球小游戏分析附我的模块简易使用参考

       后返回主程序,进行第四步骤。

 

第四步

       这个部分主要是将红色方框(当然屏幕显示肯定是黑色的),1号和2号方形的位置进行初始设置,主要这个地方有三个图形需要同时显示存在,所以屏幕清楚都选择为伪。

EV3吃球小游戏分析附我的模块简易使用参考

       这里需要点击大图来查看,前后分别出现了三个显示模块,第一个显示模块是计分选项出现的模块,这里用到了文本模块,坐标值是(0,112)。

       第二个显示模块是红色方框出现的模块,坐标值是(0,0),长宽分别是:177和110。

       第三个是2号方形出现的模块,虽然2号方形的AX和AY坐标都是随机的,但是在这里不影响,不过需要注意的是,2号方形的长款都是10,且一定要记得选择填充为真。

EV3吃球小游戏分析附我的模块简易使用参考

       2号方形显示的模块,填充为真,颜色为黑色,清除屏幕选择伪。

 

第五步

       进行比较部分,之前任务中要求,当1号方形和2号方形完全重合,表示2号被吃掉,所以这里就需要进行比较,因为1号和2号方形都是一样大小,所以只需要将1号方形的坐标值和2号方形的坐标值进行对比即可,两者都相同那么表示2号将被吃掉。

EV3吃球小游戏分析附我的模块简易使用参考

       这里线有点多,看的有点乱,没关系,记住在显示模块后面添加两个比较模块,分别将1号方形的X值和2号方形的AX值进行对比,Y值和AY值进行对比即可,这里对比用的是=号。

       做出判定这里,两者完全重合,所以需要利用AND运算。

EV3吃球小游戏分析附我的模块简易使用参考

       有比较就需要用到切换模块,我叔以前老跟我说这句话。所以这里除了添加逻辑运算模块外,用的是AND运算,在后面添加切换模块-逻辑模式。

       将数据线连接。

 

第六步

       需要进行分析,如果满足条件,即逻辑值为真的情况下,那么表示2号方形被吃掉,我这里选择让其发出声音,并且分数需要进行+1计算,且还需要对2号方形进行再次随机确定位置,这个时候第一个我的模块又被派上用场啦。

       我们来看下,为真的情况下程序编写,参考如下:

EV3吃球小游戏分析附我的模块简易使用参考

       可以看到,【fenshu】这个变量值初始是为0的,吃掉一个就算1分。最后这里添加一个屏幕清空的程序。这里给个问题,如果没有添加这个屏幕清除模块会如何呢?或者说更换下它的位置顺序又会如何呢?

       有兴趣的朋友可以测试下,不用告诉我结果哈。

       接下来,来看为伪的部分:

       为伪就意味着两者没有重合,需要对1号方形进行上下左右移动,这里就需要利用到EV3程序块按键啦,这么多选择,就肯定要用到切换模块-数字模式。到了我们肯定会发现,1号方形都还没有出现呢,不着急,现在就写出来。

EV3吃球小游戏分析附我的模块简易使用参考

       1号方形的长宽都是10像素,初始位置是(0,0),这里在后面添加了一个等待模块-程序块按钮-更改模式,为什么要添加这个,因为到了这部分,就说明需要对EV3程序块按键进行按压,至于是哪个就不清楚啦,可能上,可能下等等,所以选择更改模式。这个模块很重要哈,不能删除啦,如果删除了可以试试结果会是什么,为什么呢?

       下面,我们要对1号方形的位置进行调整,需要用传感器模块中的程序块按钮模块,它的输出数据值来作为测量的条件。

EV3吃球小游戏分析附我的模块简易使用参考

       这里默认的数字是0,表示不对EV3程序块按钮进行任何按压,也没有数字2,因为数字2代表的是中间按键,1代表左键,3代表右键,4代表上键,5代表下键。这里在每种分支情况后面都添加了清除屏幕的模块,主要是将上一次1号方形出现的图形给清除掉。为了方便观看,在完整程序的时候,我会将这个视图改成选项卡示图模式。

       整个为伪部分的程序如下:

EV3吃球小游戏分析附我的模块简易使用参考

       红色方框内的模块不能删除哈。

 

第七步

       这是一个循环,每进行一次都需要进行判定,即将1号方形和2号方形的坐标值进行比较,所以需要给这些添加一个循环。

       但是循环是有条件的,这个条件就是1号方形不能跳出设定的方框,如果出现了那么游戏结束。

       所以这个时候需要利用到第二个我的模块啦。

EV3吃球小游戏分析附我的模块简易使用参考

       这里将第二个我的模块,名称tiaochu,这个模块有输出端口,是逻辑输出,这个逻辑输出值作为循环是否结束的条件,所以将数据线连接到循环处。这是一个分支程序,当然也可以不用分支,直接将tiaochu这个我的模块放到切换模块的后面,也是一样的道理。

EV3吃球小游戏分析附我的模块简易使用参考         EV3吃球小游戏分析附我的模块简易使用参考

       好像第二个我的模块图标我最后还是选择了默认的,这个不重要,有点小尴尬。

 

第八步

       终于到最后一步啦,就是说如果游戏结束,应该怎么办,当然这个步骤可有可无,游戏结束就添加一个画面和声音。

EV3吃球小游戏分析附我的模块简易使用参考

       完整程序参考如下(细心的朋友会发现这里面fenshu这个变量,之开始是大写的,然后后面变成小写的了,这里是我个人操作的失误,写了两个分数变量,一个是大写的,一个是小写的,直到我写完这篇文章的时候才发现这个问题,真的很抱歉,改图太麻烦了,我就不改了,参考的朋友需要进行更正过来):

EV3吃球小游戏分析附我的模块简易使用参考

EV3吃球小游戏分析附我的模块简易使用参考

       以上内容仅供参考,我写的方法比较笨,没有我朋友写的好。

       最后抛出两个问题,这是上周同福客栈里面,一个朋友提出来的,大家有兴趣可以一起探讨下其中的原因是什么?

       以下三个程序,电机分别转动几秒,为什么?

EV3吃球小游戏分析附我的模块简易使用参考

EV3吃球小游戏分析附我的模块简易使用参考EV3吃球小游戏分析附我的模块简易使用参考