【编程学习】Blockly 游戏“池塘”关卡攻略

2020年8月12日 10 : 43

通过Blockly Games 的一系列小游戏,我们对Blockly语言有了基础的了解并掌握了一些技巧。掌握好Blockly语言可以帮助我们更好的使用APP Invertor编写手机程序。本期我们开始Blockly Games的最后一关池塘和它的前置关卡池塘导师,学习如何控制自己的小鸭子打败池塘里的其他对手(如图1)。

搜索“少儿编程教程网”找到“Blockly游戏”(https://blockly-games.kidscoding8.com/blockly-games/zh-hans/index.html?lang=zh-hans),可以开始Blockly Games之旅。

池塘导师这一关与以前的迷宫、乌龟相比,在使用积木编程后还添加了必须使用JavaScript编程的完成相似任务,这样我们在学习图形化编程的同时还接触到了JavaScript。

在前几关中我们会学会使用“cannon(大炮)”命令控制小鸭发射炮弹,第一个参数是角度,第二个参数是射程;使用while(true)开始循环,直到消灭敌人;使用scan(角度),让黄色小鸭扫描该角度上目标的距离并自动调整射程;使用swim(角度),设定小鸭的运动方向。

第8关

编写一行代码就可以过关:

Swim(275)

第9关

游戏提示不能用撞击的方式过关。需要小鸭游一段距离后再停下射击敌人。Loc_x()代表小鸭的水平位置,我们让小鸭位置小于23前向0度方向移动。停下后正常发射炮弹直到击败敌人为止(如图2)。

第10关

当目标被攻击时它会逃跑直到右上角为止,且炮弹最大射程是70。所以我们必须让小鸭一遍游泳一边攻击。

我们用while(true)开始循环,当Y坐标(x坐标也可)小于50的时候(30~99都可以,都在射程范围内),向45°方向跟随敌人一起游动,游动到设定位置后停下。朝向45°方向射击并且用扫描scan(45)控制射程,直到消灭敌人为止(如图3)。

池塘关卡

在池塘中你将同时面对3个不同策略的对手(如图1),虽然敌人强大但你也拥有最大的自由,设计自己的搜寻和攻击策略,消灭所有敌人吧。下面的代码只是我自己的搜寻和攻击策略,无法完美的通关效果,仅供参考。为了完成搜寻周围360度的敌人,使用了Math.random()产生随机数,当然也可以用循环完成360度的扫描。

建立变量r0为搜索角度,r1为移动方向,s1为射程。

让r0在360度范围内随机搜索,发现敌人就可以展开进攻。也可改为0到360度循环扫描搜索。

当s1小于70,即射程内有敌人时开火,无敌人时继续向r1方向运动。

自定义的搜索积木达到的效果是小鸭移动到池塘边缘时转90度方向继续前进。

具体程序如图4。


分享到: