如果不能正常显示,请查看原文 , 或返回

Zillions语言教程(二)(转开不了车文章)_nuhuo1234_新浪博客

第二章 游戏主体
一个游戏,它的主体便是游戏的主要内容,在游戏中是必需的。
ZoG的游戏脚本,需要一个最基本的结构,这就是:
(game
...
)
(variant
...
)
(variant
...
)
...
其中game段为游戏主要规则段,variant为变体规则段。所谓变体,即是同一种棋类的规则略有变化。例如说,在斗兽棋里面,可以规定大象能吃老鼠,也可以规定大象不能吃老鼠,那么这就是一种变体。game段是一定要有的,而variant段可有可无。也就是说,可以没有变体(如自带的中国象棋)。
我们先说game段的内容,variant段的将在以后说。
game段所包含的内容:
(title "...")填写游戏的标题,在标题栏和Variants菜单里可以看到,[...]即为填写的内容。如果没有此段的话,将不能在Variants中选择变体。
(description "...")填写游戏的介绍内容,在Help->Game Description里可以看到,[...]即为填写的内容。可以分多行来填写,就是说中间可以有回车键,运行时会被忽略。如果要换行,则输入"\\"。另外,如果内容中有行首多个空格,则只当一个空格来用。这一段非必要,在游戏中不填亦可。
(history "...")填写游戏的历史内容,在Help->Game History里可以看到,填写方法与前述一样,非必要。
(strategy "...")填写游戏的策略内容,在Help->Game Strategy里可以看到,填写方法与前述一样,非必要。

(music "...")填写游戏的背景音乐文件。如:(music "Audio\\China.mid")。文件为MIDI格式,没有此段则为默认的“Audio\Defalut\Zillions.mid”音乐。
(win-sound "...")填写游戏的胜利时的声音。如:(win-sound "Audio\\Pan.wav")。文件为WAV格式,没有此段则为默认的“Audio\Default\Win.mid”。
(loss-sound "...")填写游戏失败时的声音。没有此段则为默认的“Audio\Default\Loss.mid”。
(draw-sound "...")填写游戏和局时的声音。没有此段则为默认的“Audio\Default\Draw.mid”。
(opening-sound "...")填写游戏打开时的声音。没有此段则为默认的无声。
(click-sound "...")填写拿起棋子时的声音。没有此段则为默认的无声。
(release-sound "...")填写放下棋子时的声音。没有此段则为默认的无声。
(drop-sound "...")填写往棋盘上下子时的声音。没有此段则为默认的“Audio\Default\Drop.mid”。
(move-sound "...")填写走棋时的声音。没有此段则为默认的“Audio\Default\Move.mid”。
(capture-sound "...")填写吃子时的声音。没有此段则为默认的“Audio\Default\Capture.mid”。
(change-sound "...")填写变子时的声音。没有此段则为默认的“Audio\Default\Change.mid”。
注:填写文件名,形式上可以用“\”、“/”、“\\”。文件地址,则是首先寻找该规则文件所在文件夹下的,没有则寻找ZoG程序文件夹下的。

(players xxx xxx ... xxx)指定游戏方。最多可以有32方。例如(players Red Black)。如果在某方的名称前加个“?”,那么该方会成为随机方,也就是说,会随机控制其操作,例如骰子或者军棋中的随机布阵。
(turn-order xxx xxx ... xxx repeat xxx xxx ... xxx)指定轮流顺序。例如(turn-order Red Black)。如果有repeat,在repeat之前的则只进行一次,之后则循环repeat之后的。另外说一下xxx的写法:
一、形式为:选手方。这种便是直接操作。
二、形式为:(选手方 选手方)。这种会令前一方来操作后一方的棋子,例如Neutron棋。
三、形式为:(选手方 移动类型)。这种会令该选手方只能进行规定的移动类型,例如军棋前数步必须进行布阵。
四、形式为:(选手方 选手方 移动类型)。二和三的叠加。

(option "..." 属性)指定特殊设定。非必要。特殊设定如下:
"animate captures":设定吃子时有无拿掉棋子的动画。true为有,false为无,默认为有。
"animate drops":设定下子时有无棋子进入的动画。true为有,false为无,默认为有。
"discard cascades":设定是否在“棋子流”中是否重置。true为是,false为否,默认较为复杂,不再多说。
"highlight goals":设定是否在目标点显示五角星,典型的如迷宫的终点。true为是,false为否,默认为否,除非菜单栏里设置Author Mode并且打开"Use authoring Show options"。
"include off-pieces":设定在计算棋子数目时是否包括没下到棋盘上的棋子。true为是,false为否,默认为否。
"maximal captures":设定棋子在连续移动中是否必须走到不能再走为止。true为是,false为否,2为true当两种走法结果一样时只挑远的,默认为否。
"pass partial":设定棋子能否在连续移动中停止。true为是,false为否,默认为否。
"pass turn":设定能否不走,例如朝鲜将棋、围棋可不走。true为是,false为否,forced为根据有无可走的来强制能否不走,默认为否,此时无路可走即为“stalemate”。
"prevent flipping":设定是否不允许翻转棋盘,例如日本将棋翻转棋盘后,棋子变成尖头朝自己,就不合适了。true为允许,false为不允许,2为只变换位置,不变换图像,3为特殊。
"progressive levels":设定胜利之后是否往下一个变体进行,例如迷宫。true为是,false为否,默认为否。
"recycle captures":设定吃掉的子是否变成未下的子,如Ki Shogi。true为是,false为否,默认为否。
"recycle promotions":设定吃掉的子是否成为升变的,如大国际象棋,没吃掉对方的某种子就不能升变为这种子。true为是,false为否,默认为否。
"selection screen":设定是否为选择画面,这将意味不能编辑棋盘,如ZoG的选择画面。true为是,false为否,默认为否。
"show moves list":设定是否显示棋谱。true为是,false为否,默认为否。
"silent ? moves":设定随机方是否移动不出声。true为是,false为否,默认为否。
"smart moves":设定是否为“聪明移动”,即当一个棋子只有一种移动方法时,单击即可移动。true为是,false为否,默认为根据菜单栏里的设定。

(move-priorities 移动类型 ... 移动类型):设定移动类型优先顺序。例如军棋必须先放子后走子。

最后,给个提示:所有的内部命令必须都是小写,大写无法识别。

返回