微信小游戏制作工具中如何实现递归函数?

简介: 微信小游戏制作工具中如何实现递归函数?

嗨!大家好,我是小蚂蚁。


今天分享一下如何在微信小游戏制作工具中实现递归函数,当前小游戏制作工具是不支持递归函数的,但是我们仍然能够找到方法来实现它。


对于很多新手尤其是没有编程基础的小伙伴来讲,可能并不知道什么是递归函数。我们先简单的了解一下它到底是个啥东西。


它有两个特点,第一个是自己调用自己。也就是说这个函数在执行的过程中会去再次调用自己,再次执行自己的函数逻辑。

如图就是一个递归函数的执行过程,函数中的积木块是自上而下顺序执行的,当执行过程中遇到“调用自己”时就会再次返回到开始的位置重新执行。


从图中可以看出来,这样的递归函数是会无限执行下去的,为了防止它无限的执行下去,我们就需要为它设置一个结束条件,也就是递归函数的第二个特点:必须要有一个结束条件。


好了,这就是递归函数了,它是一个自己调用自己的,必须有结束条件的函数。递归函数在查找算法中应用的比较多,例如消除游戏中图标的查找匹配,寻路算法中的路径查找等等。


在任何一门编程语言中,实现一个递归函数都不难,只要遵循它的两个特点即可。但是在可视化的编程工具中,想要实现一个递归函数就有些困难了,可能是为了防止递归函数出现的各种严重问题,索性就限制了递归的使用。以微信小游戏制作工具为例,它目前并不支持递归函数,但是,我们还是能找到方法来实现。


下面我们就用递归函数实现一个简单的计数功能,将一个数字从 0 开始,每次增加 1, 直到数字增加到 100 结束。这样的一个功能其实完全可以使用一个循环来做,但是这里我们不使用循环,而是使用函数进行递归,相当于每调用一次函数,数字就增加 1 ,一共调用 100 次函数。


首先,我们创建一个全局变量“计数”,用于记录数字的增加。



接着,在积木区域选择“函数”类别,然后点击“新建函数”按钮,创建一个“递归函数”。



为递归函数增加一个“计数变量”的参数,然后增加如下的积木块。



逻辑并不难理解,如果“计数变量”不到 100 的话,就将其增加 1 ,然后继续调用自己,如果计数变量大于等于 100 ,则整个递归函数结束。


为了方便查看结果,我们在场景中增加了一个白色数字,在执行完递归函数后,将白色数字显示为“计数”的值。



如果递归函数正常执行的话,那么最终这个白色数字应该是会显示为 100 的,我们预览一下场景,看一下结果如何。


系统直接给我们弹出了一个提示,明确的告诉了存在递归调用,这个是不允许的。




既然明目张胆的递归是不允许的,那我们试着换个方式,既然不让自己调用自己,那我们能否让函数A 调用 函数B,然后再让 函数B 调用 函数A,让这两个函数之间来回调用实现递归呢?



我们重新创建两个递归函数,一个“递归函数1”,一个“递归函数2”。




接着我们修改一个白色数字的逻辑,使用“递归函数1”。



点击预览场景,又一次看到了这个讨厌的提示。




再一次失败了,看来使用两个函数互相调用仍然会被检查出来存在递归调用。


我们来梳理一下,存在递归调用的提示是在游戏场景显示之前,也就是说在游戏加载显示之前,会进行是否存在递归调用的检查,如果检查出来,就给予提示,游戏终止。那么其实我们只需要想办法绕过这个递归检查就可以了。经过各种各样的试验,还真是被我试出来了。


“递归函数1”还是那个“递归函数1”,不同的是我们在“递归函数2”里增加了一层判断逻辑。




再次运行场景,递归提示没有了,出现了我们期待的那个 100。



这是无意中试验出来的一个方法,但是让我们来猜测一下它为什么可行。


在游戏正式加载显示之前,微信小游戏制作工具会进行一次递归函数的检查,但是这个检查应该是有层数限制的,当我们在“递归函数2”中增加一层“如果”积木逻辑之后,达到了检查的最大层数,所以就到此终止了,不会继续检查这个“如果”积木块中的逻辑了,也就检查不出来我们的递归了。


递归函数算是一个高阶的技巧,虽然有的时候它会带来很大的便利,但是更多的时候它会带来很多的麻烦,例如难以理解,难以调试,一旦出错就会导致栈溢出,卡死等很严重的问题。所以出现了很多的其他的模式或者方案来替代递归。可视化开发工具面向的大部分是没有编程基础的人,为了避免出现严重的问题,就索性直接不允许使用了。这是为了避免更大的问题而需要接受的一点儿小的不便。


凡事总是有两面性的,可视化工具有着简单,快捷,门槛低的好处,但损失了一部分的灵活性和扩展性。


但凡事又总是有很多的解决方案的,只要你想,你总是能够找到一个解决方案来解决所遇到的问题。

相关文章
|
28天前
|
安全 API 开发者
微信开发者工具里面没有企业微信模式
企业微信与普通微信在应用场景和开发体系上存在本质区别,主要体现在身份认证、功能丰富性和开放能力等方面。企业微信开发需使用特定的API和工具,本文介绍了企业微信开发的基本步骤、特点及开发进度安排,帮助开发者更好地理解和应用企业微信的开发环境。
|
2月前
|
数据可视化 前端开发 小程序
5G时代-探索微信小游戏
5G时代-探索微信小游戏
29 2
5G时代-探索微信小游戏
|
2月前
|
缓存 数据可视化 Serverless
微信小游戏 案例一 像素飞机
微信小游戏 案例一 像素飞机
21 2
|
2月前
|
移动开发 小程序 数据可视化
微信小程序可视化开发工具之动态数据
微信小程序可视化开发工具之动态数据
45 3
|
4月前
|
人工智能 小程序 Java
【工具】轻松解锁SQLite数据库,一窥微信聊天记录小秘密
本文介绍了一款名为PyWxDump的开源工具,它可以获取微信账户信息、解密SQLite数据库以查看和备份聊天记录。此工具适用于已登录电脑版微信的用户,通过GitHub下载后简单几步即可操作。适合对数据恢复感兴趣的开发者,但请注意合法合规使用并尊重隐私。
591 2
【工具】轻松解锁SQLite数据库,一窥微信聊天记录小秘密
|
4月前
|
小程序 开发者
微信开发者工具如何集成SVN、同时解决集成SVN无效果的问题
这篇文章介绍了如何在微信开发者工具中集成SVN版本控制系统,并提供了解决集成后无效果问题的方法。
微信开发者工具如何集成SVN、同时解决集成SVN无效果的问题
|
5月前
|
小程序 开发工具 开发者
入职必会-开发环境搭建31-微信开发者工具下载和安装
微信开发者工具是一款由微信官方推出的开发工具,旨在帮助开发者更高效地进行微信小程序和微信公众号的开发与调试。该工具集成了代码编辑、代码上传、实时预览、调试等功能,能够提供便捷的开发环境和调试工具,帮助开发者快速定位和解决问题。
|
5月前
|
JavaScript
支付系统---微信支付23-数据绑定和事件,使用Vue调试要添加扩展,F12与console平级就出现了Vue,在支付资料,微信支付,04资料,工具里
支付系统---微信支付23-数据绑定和事件,使用Vue调试要添加扩展,F12与console平级就出现了Vue,在支付资料,微信支付,04资料,工具里
支付系统---微信支付14----创建案例项目---介绍,第二步引入Swagger,接口文档和测试页面生成工具,定义统一结果的目的是让结果变得更加规范,以上就是谷粒项目的几个过程
支付系统---微信支付14----创建案例项目---介绍,第二步引入Swagger,接口文档和测试页面生成工具,定义统一结果的目的是让结果变得更加规范,以上就是谷粒项目的几个过程
|
5月前
|
安全 API 数据安全/隐私保护
支付系统05------微信支付,接入指引----获取密钥和证书,随机密码生成器的工具,
支付系统05------微信支付,接入指引----获取密钥和证书,随机密码生成器的工具,https://suijimimashengcheng.bmcx.com/随机密码生成器的工具