原文要参照代码

1. XML解析

Task逻辑块可相互组合,形成复杂的树状结构,其结构用XML表示,即写成XML文件的形式。

样例如下:

<!-- 顺序执行块 -->

<seq>

<!-- 循环执行块 -->

<loop count="5">

<!-- 脚本执行块 -->

<cmd>

var i = 0;

game.nextStage();

</cmd>

</loop>

</seq>

为了便于设定上下文中的数据,XML 中还支持<var>标签,用于在当前节点的上下文中声明一个新的变量,供本节点及其子节点访问和修改。

为了实现脚本的可重用性,防止单个脚本过于繁杂,XML中支持<script>标签来引用别的XML文件。

在本游戏中,游戏角色的移动任务很普遍,所以XML支持<move>标签来快速实现一个角色移动任务。

游戏角色的逻辑特征往往包含多个方面,所以不是一个Task脚本可以定义的,因此多个上述XML脚本可以被置于<tasklist>标签中,从而形成一个完整的XML文本文件。

样例如下:

<!-- Task列表 -->

<tasklist>

<!-- 一个Task的逻辑结构 -->

<task name="task1">

<!-- 脚本执行块 -->

<cmd>

var i = 0;

</cmd>

</task>

<!-- 另一个Task的逻辑结构 -->

<task name="task2">

<!-- 脚本执行块 -->

<cmd>

var i = 0;

</cmd>

</task>

</tasklist>

1. Task逻辑块

a) Sequence:顺序执行块,其中包含的子逻辑块将顺序执行。

b) Parallel:并行执行块,其中包含的子逻辑块将并行执行。

c) IfElse:分支(选择)执行块,其中可包含一个或两个子逻辑块,并包含一个用于执行判断的表达式。

d) Loop:循环执行块,其中包含一个可循环若干次执行的逻辑块。

e) Wait:等待执行块,用于等待若干帧。

f) Script:脚本执行块,其中包含一段脚本,使用表达式解析模块进行执行。

g) Empty:空执行块。

由于游戏逻辑结构的需要,Task执行时,每次只执行一帧的内容,当一帧被消耗掉后,将中止执行,立即返回。而当Task被再次执行时,会从上次中断的地方继续运行。

在Java代码中,可以通过task.setBinding(name,value)来实现对每个Task中context数据的绑定。从而让叶子节点的脚本块能操作这些数据。

XML 中可嵌入 cmd命令脚本的更多相关文章

  1. windows 中常用的 cmd 命令汇总

    查看系统基本信息: cmd -> systeminfo 或 run -> dxdiag 查询主板出厂日期: cmd -> wmic bios get releasedate 关闭本地 ...

  2. Windows学习总结(10)——Windows系统中常用的CMD命令详解

    1.ping命令 ping是电脑网络故障诊断中的常用的命令,它的作用是用来检查网络是否通畅或者网络连接速度.我们来看一下PING命令的具体表述. 日常的诊断过程中我们最常用到的就是诊断连接是否通畅. ...

  3. C#中winform窗体如何嵌入cmd命令窗口

    解决方法一: 自己放一个文本框,改成黑色,然后输入命令,执行时,你Process.Start cmd ,此时CMD窗口不显示,然后,将CMD的返回值,再取出来,设回文本框. 如何用这种方法实时获取cm ...

  4. JAVA中ProcessBuilder执行cmd命令找不到路径的解决方法

    今天遇到了一个很奇葩的问题,终于解决了,记一下,以做备忘. 前提条件:工程路径在D盘下 cmd要执行的可执行文件路径不在D盘下 然后...出事了............................ ...

  5. python中command执行shell命令脚本方法

    在Python中有一个模块commands也很容易做到以上的效果.看一下三个函数:1). commands.getstatusoutput(cmd)用os.popen()执行命令cmd, 然后返回两个 ...

  6. 分享一篇Linux系统使用Tomcat服务时交互式修改server.xml中端口号的shell脚本

    #!/bin/bash echo -e '\n' echo "***********************************" port1=`grep -r "s ...

  7. Dockerfile文件中的ENTRYPOINT,CMD命令跟k8s中command,args之间的关系

  8. Linux 下 expect 脚本语言中交互处理常用命令

    Linux 下 expect 脚本语言中交互处理常用命令 1. #!/usr/bin/expect 告诉操作系统脚本里的代码使用那一个 shell 来执行.这里的 expect 其实和 Linux 下 ...

  9. CMD(命令提示符)命令大全及网络安全课程中所用到的命令

    CMD命令大全详解: 1.arp -a 获得IP地址,MAC地址. 2.arp -d * 命令用于清空arp缓存表. 3.arp –s 网关IP 网关MAC 命令则是将网关IP地址与其相应的MAC地址 ...

随机推荐

  1. WideCharToMultiByte和MultiByteToWideChar函数的用法(转)

    转自:http://www.cnblogs.com/gakusei/articles/1585211.html 为了支持Unicode编码,需要多字节与宽字节之间的相互转换.这两个系统函数在使用时需要 ...

  2. .net将枚举转成List

    using System; using System.Collections.Generic; using System.ComponentModel; namespace zifar.SgmhWeb ...

  3. hashCode()方法与equals()方法的说明

    1,一般我们自己用时,只使用equals()方法,用于判断两个对象是否是业务上等价的.2,在重写equals()方法时,强烈推荐也要重写hashCode()方法,因为有的集合用到了hashCode() ...

  4. [echo]echo输出换行

    echo -e "hello\nworld", -e处理转义字符

  5. Android控件GridView之仿支付宝钱包首页带有分割线的GridView九宫格的完美实现

    Android控件GridView之仿支付宝钱包首页带有分割线的GridView九宫格的完美实现 2015-03-10 22:38 28419人阅读 评论(17) 收藏 举报  分类: Android ...

  6. c# 自定义类型的DataBindings

    自定义类型TextBoxEx,扩展了TextBox,增加了一个属性KeyText来保存后台的值(Tag已另作它用). 程序里面需要将KeyText和DataTable的某个列绑定起来. 如果是Text ...

  7. 阿里云免费SSL证书绑定+sever2012 IIS配置

    1.阿里云域名 2.点击证书 3.免费证书 4.下载证书 5.服务器-运行-mmc 进入制台程序 6.制台程序,选择菜单“文件"中的"添加/删除管理单元”-> “添加”,从“ ...

  8. 用图片做div背景的列表布局 CSS代码

    思路: 1.因为是竖型列表,所以外层用 相对定位,这样 在不会重叠在一起 relative 2.里面用绝对位置 absolute,覆盖在图片上面 3.这里有个小技巧,我里面有个特效,文字竖立,并向右旋 ...

  9. 【IntelliJ IDEA】idea上提交代码到GitHub,已经提交了 但是GitHub上却没有的解决办法

    摘要: 今天提交idea上的代码到GitHub,提交过程已经完成, 在版本控制的Log中可以看到,已经将这一部分都提交更新了    在版本控制的Local Changes中已经看不到提交过的代码了   ...

  10. 怎么解决JSP中出现乱码的问题

    首先我们先了解一下问题的原因.一般情况在在每个JSP页的头部都有这样一条语句: 这条语句决定了此页面使用GB2312编码形式,而在数据库中一般用的是iso-8859-1字符集存储数据. 而Java程序 ...