我一直在编写文字冒险游戏。在游戏开始时,会调用 Menu(string Choice, bool takeDump)。还有几种其他方法具有用户可能遇到的不同场景,例如宠物小精灵遭遇等。如果用户死了,那么他们会在 Menu() 处重新启动,这意味着它会从自身内部再次调用。有没有办法避免这种情况? 节目来源
问问题
6737 次
3 回答
4
只要有条件退出循环,就没有问题。如果没有,你基本上有一个无限循环(直到发生 StackoverflowException)。
从纯技术的角度来看,只要在 stackoverflowexception 发生之前打破循环就没有问题。
于 2013-10-04T21:42:21.320 回答
3
不,从自身调用方法是完全可以的——名称是“递归”/“递归函数”。
在您的特定情况下,绝对没有必要(并且可能是错误的)。顶级游戏代码通常看起来像无限循环而不是递归:
while (continuePlaying)
{
ResetLevels_Lives_AndEverything();
while(notDead)
{
handleInput()
draw()
notDead = ChechStillAlive();
}
continuePlaying = CheckContinuePlaying();
}
于 2013-10-04T21:44:55.963 回答
1
使用递归时应该注意的一件事是堆栈溢出。这似乎不是您尝试做的问题,但是如果您的方法多次调用自身,并且每个调用再次调用它多次,它就会发生(除非您设置合理的限制你走多深的水平)。想想分形、阶乘、斐波那契数列。
于 2013-10-04T22:02:19.000 回答