0

例如,假设我有字符串

hunger > 80 then findFood();

或者

distanceTo sun < 30 then moveAwayFrom(sun);

这不是我想要的确切语法,但有谁知道我可以制作它的简单方法,以便我可以将它传递给游戏中的实体,他们基本上会遵循它?目前唯一想到的是制作一大块 if 语句来解析给定的字符串,但这感觉真的非常低效。

我想要第二个意见,只是想看看我是否在这里忽略了一些非常简单的东西:/

4

1 回答 1

3

不是一件容易的事!您基本上是在说您需要创建一种语言。

该语言将描述所有可能的命令,然后您将从中解析和生成命令。

现在你可能会想“哎呀,我以前从来没有写过语言!”。这就是ANTLR的用武之地。它允许您为您的语言编写语法,然后生成解码命令所需的解析器/词法分析器。您可以获得一个用于使用 ANTLER 的 IDE,名为ANTLRWorks,并且您应该查看入门教程。你真的必须克服你对 wiki 页面问题的“诅咒”,然后潜入这里。

在此过程中,您可能会意识到对命令进行编码的更简单或更有效的方法,以便以后可以对它们进行解码。一些可能的替代方案是嵌入一种脚本语言,您将使用它来编码/解码命令,例如 Python、JavaScript 或 Lua。我以前在游戏中看到过 Lua,你可以在这里阅读他们关于为什么它们在游戏中受欢迎的声明。祝你好运!

于 2013-10-27T13:00:14.313 回答