上QQ阅读APP看书,第一时间看更新
7.3.4 递归的实际运用简介
笔者曾经做过一款叫《冒险之路》的策略战棋游戏,如图7.7所示为游戏战斗界面。
图7.7 《冒险之路》战棋游戏战斗界面截图
扫二维码看彩图
其中浅蓝色血条的是本方人员(被围在中间),红色血条的是敌方人员,本方人员能走的方向是上下左右四个方向,但遇到敌方人员的格子就走不过去了。现在本方人员的移动力是40,每移动一个格子,耗费的移动力是10,而此时,敌方人员是在三个方向将本方人员围住,要求计算出本方人员能够移动到哪些位置。
其中深蓝色半透明(用粗线框住)的这些格子就是经过计算后得到的本方人员能够走到的位置。怎样计算得到这些位置?其实就是通过一个递归函数来计算的。在这里,不准备写实际的代码,而是写一些伪代码来帮助读者理解递归函数调用在实际游戏开发中的一个应用。伪代码如下:
以上就是一个递归函数在实际应用中的举例。该递归函数的调用出口在哪里?实际上它有两个出口条件:一是是否存在图块,二是是否有剩余的移动力,当图块不存在或者当没有剩余的移动力时,该函数都会返回。
希望通过这个例子让读者了解递归的一些实际用途,而不是仅仅简单地做一些递归练习题。