【发布时间】:2015-09-14 14:03:28
【问题描述】:
我正在使用 paxCompiler 在 Delphi 中制作游戏书创作程序。 paxCompiler 支持 Basic,这就是我使用 paxBasic 的原因。
在游戏手册中,您有时需要重定向到不同的程序而不返回此处并继续执行。
例如:
procedure p_woods;
begin
if Random(2)=1 then go('fight');//the function go is my own, it calls the procedure "p_fight"
print('You stroll peacefully in the woods');
end;
您会看到,在调用该过程后,它应该停留在那里而不是返回这里。
在 Pascal 中,有一个解决方案,但很麻烦:
begin
go('proc');
exit;
end;
但我在 Basic 中找不到与此 begin..end 块等效的任何内容。
我的问题:
- 什么 Basic 代码可以模拟上面最好的代码?
- 是否可以缩短 Pascal 代码?
【问题讨论】:
-
在 pascal 或 delphi 中没有
go();方法这样的东西,afaik。你在想GoTo吗?听起来这就是你想要的。但是,理想情况下,这可能不是您应该采取的路线。分解你的大方法听起来是一个更好的方法。将存在于分支决策之下的任何内容放入单独的方法中。 -
如果你不希望 go() 下面的代码被执行,那就不要把它放在那里......也许我错过了什么
-
else关键字有什么问题?if Random(2)=1 then go('fight') else print('You stroll peacefully in the woods');工作完成。 -
@J...,Shinkarom 本质上是要求使用 JMP 指令而不是 CALL。这个
go函数是假设的。然而,无论是 gamebook 还是普通的线性导航书,子程序,无论是否返回,似乎都不是阅读书籍行为的好模型。 Shinkarom,您最好为您的任务寻找不同的解决方案。 -
这种应用程序应该使用状态和转换