标签: scripting-language

为XNA游戏实现简单的基于XML的脚本语言

我正在与C#和XNA的RPG引擎团队合作.我们计划针对Windows和Windows Phone 7进行定位,但遇到人工智能交互问题并在过场动画期间控制玩家行为.在大多数情况下,使用MVC设计模式提取所有内容,但将所有逻辑和移动抽象到控制器中可能会导致问题.因此,我们的想法是拥有一个接口(IScriptEngine),它接受一个I​​ScriptObject并相应地更新地图模型中的数据.我在考虑将脚本放在XML语法中:

<Script Name="MoveNPC_1"> 
    <Action Command="MoveToTile" Target="NPC_1" Value="10,2"/> 
</Script> 
Run Code Online (Sandbox Code Playgroud)

并让IScriptEngine相应地解析它.我非常怀疑在一个巨大的switch语句中解析会是一个好主意,但这是我一直在使用的.

switch(Action.Command)
{
    case "MoveToTile":
      { 
         doMovement(Action.Value, Action.Target); 
         break;
      }
}
Run Code Online (Sandbox Code Playgroud)

即使我的高中编程经验告诉我这是一个坏主意,但我想不出任何其他方式.

编辑:我想以某种方式将这一切嵌入到地图文件中.在地图XML文件中,我们指定了包含多个标记的区域.然后会有一个部分,指定NPC在地图上的位置,以及它将使用哪些资源和脚本.然后会有一个部分,其中将定义所有战斗(再次,定义资源和不是什么),然后可能是一个部分,其中将定义这些脚本.我只是希望有一种方法可以使用WP7动态编译C#.如果我能得到双方的支持,这不会是一个问题.我想知道是否会有任何可以移植到WP7的Mono库来共享CodeDom和所有Compiler类的功能?

windows xna parsing scripting-language windows-phone-7

1
推荐指数
1
解决办法
4469
查看次数

请推荐使用模式匹配的解释语言

我正在寻找一种易于快速编写脚本的解释语言,如但它具有更多的Haskell感觉(即一种函数式语言).

具体来说,我希望它具有像haskell一样的模式匹配功能.这样的事情存在吗?

编辑:我主要问,因为我喜欢学习新语言,我注意到我学习的语言中有空位.
一方面,我已经解释并动态地输入了具有功能元素的Python和Ruby等语言,但并没有把这个概念放得太过分.
另一方面,我有Haskell,它具有我喜欢的许多功能特性,但是非常严格(我需要花费相当多的时间来完成简单的程序).
我只是想知道是否存在分裂这些差异的东西.

haskell functional-programming scripting-language interpreted-language pattern-matching

1
推荐指数
1
解决办法
321
查看次数

批处理 - 转义竖线的含义 | 等号前=

我目前正在努力理解Windows 批处理脚本介绍

SET /A errno=0
SET /A ERROR_SOMECOMMAND_NOT_FOUND=2

... 
... SET /A errno^|=%ERROR_SOMECOMMAND_NOT_FOUND%
Run Code Online (Sandbox Code Playgroud)

根据这个答案,抑扬^符是一个转义字符,所以我们以errno|=%ERROR_SOMECOMMAND_NOT_FOUND%. 但是这段代码在做什么呢?

在相应的文章中,作者指出这提供了将多个错误编号按位或组合在一起的灵活性

好的,但是我找不到任何关于批量按位运算的文章,上面有一行...

所以,请给我一点启发。

scripting scripting-language batch-file windows-scripting

1
推荐指数
1
解决办法
114
查看次数

是否为C ++提供了类似C的语法脚本语言解释器?

我很早以前就开始在动态图形可视化器,编辑器和算法测试平台(具有节点和弧线的图形,而非其他图形)上工作。对于算法测试平台,我需要让用户编写脚本或从文件中调用脚本,这将与当前加载的图形进行交互。可视化工具会执行一些操作,例如在脚本算法访问节点时点亮节点,并增加一些人为延迟,以可视化导航和处理算法的算法。其次,脚本还将用于添加第三方功能,这些功能既可以作为程序文件夹中的预先存在的脚本使用,也可以在经过测试和工作后,以c ++的形式集成到程序内部。

我在搜索程序中嵌入的所有搜索内容都将我带到了lua;然后,我开始为自己的类似C的语法脚本语言手写我自己的递归下降解析器(我计划使用C ++语法的子集,以便可以将用我的脚本语言编写的任何代码复制粘贴到任何C ++代码中。一个有趣的疯狂想法,我一点也不后悔,我有范围,函数,循环,gotos,类型安全变量,表达式。

但是现在我要增加类,类方法,继承(将默认脚本连接到程序需要一些默认类),我意识到这将花费很多时间和精力。对于一个有考试的未毕业学生的个人项目来说,这有点太多了……但是我还是希望完成这个项目。

脚本自身强加100%与C ++兼容的要求几乎是必要的,这将是一件不错的事情,我可以做不到。

现在的问题是,是否可以用类似c的语法替代lua,以支持我已经做过的所有事情以及类和继承?(必须将接口脚本的自定义“类”添加到程序中)

(我不能假设用户安装了完整的c ++编译器,所以我不能在运行时将其“脚本”编译为dll来加载和调用它,尽管我希望可以)

c++ interpreter scripting-language

1
推荐指数
1
解决办法
138
查看次数