为了证明小弟最近 不是什么都没干,为了某位网友的呼唤,也为了表白在下确实正艰苦卓绝的构建着 文档及代码, lgame文档及0.2.8版,已决定于9月15日正式发布, 以下是一些相关信息。 lgame-0.2.8 版包结构如下 自 0.2.8 版起, lgame 中新增了 avgscreen 类
为了证明小弟最近不是什么都没干,为了某位网友的呼唤,也为了表白在下确实正艰苦卓绝的构建着文档及代码,lgame文档及0.2.8版,已决定于9月15日正式发布,以下是一些相关信息。
————————————————————————————————
lgame-0.2.8版包结构如下
自0.2.8版起,lgame中新增了avgscreen类,以方便用户快速制作avg类型游戏(当然,h game也可以的说……),或以此实现比较绚丽的动漫过场以及动漫交互效果(没错,以后作贪食蛇都可以加avg过场了)。
以下本次更新后将会出现的,lgmae-0.2.8 avgscreen中默认的脚本命令。
ps:lgame中脚本命令不区分大小写。
脚本命令
命令说明
include
作用:
在当前脚本中载入另外一个脚本的内容,当导入脚本结束时将继续读取当前脚本。
写法:
include res/myscript.txt
if……else……endif
作用:
分支判断脚本流程。
写法:
if a>b
xxxx
else if a==b
xxxx
else
xxxx
endif
begin……end
作用:
此命令用以构造一组脚本,但不立即执行,仅在调用call命令时才能触发此命令内部的脚本。
写法:
begin showmessage
mescolor red
mes 孔曰成仁,孟曰取义。
xxxxx
end
call
作用:
此命令用以调用指定的命令段,需要和begin……end命令配合使用。
写法:
call showmessage
此时showmessage命令段将被执行。
in……out
作用:
这是一组从输入到输出的命令,在两组命令之间的字符串数据将被以选择框形式展现给用户。
写法:
in
a.景德镇瓷器
b.景德镇戏剧
c.景德镇餐具
out
select
作用:
为选择框加上标题,如果select命令为空,则in……out命令输出的选择框将只有选项,而没有标题。
写法:
select 景德镇盛产什么?
in
a.景德镇瓷器
b.景德镇戏剧
c.景德镇餐具
out
selleft
作用:
设定选择框文字在显示时距离选择框左侧的偏移距离,用以调节文字位置。
写法:
seleft 10
seltop
作用:
设定选择框文字在显示时距离选择框顶端的偏移距离,用以调节文字位置。
写法:
seltop 10
mes
作用:
显示一组对话,用以令游戏角色向用户传递信息。
写法:
1、单纯显示
mes 吃了吗?没吃?!……没吃回家吃去吧。
2、强制换行
mes 吃了吗?/n没吃?!……/n没吃回家吃去吧。
3、转换指定范围内文字颜色
mes 吃了吗/>?/n没吃?!……/n没吃回家吃去吧。 (r为红,w为白,b为黑,o为橘黄)
meslen
作用:
规定mes命令在显示对话时每行最多的显示字数,超过将自动换行(不填时以系统判断的默认行数执行)。
写法:
meslen 20
mescolor
作用:
规定mes命令在显示对话时文字的默认颜色。
写法:
mescolor yellow
mestop
作用:
规定mes命令在显示时距离消息框上方的距离,用以调节文字位置。
写法:
mestop 10
mesleft
作用:
规定mes命令在显示时距离消息框左边框的距离,用以调节文字位置。
写法:
mesleft 10
messtop
作用:
关闭当前画面上的消息框或选择框。
写法:
messtop
gb
作用:
显示指定的背景画面。
写法:
gb res/background.png
cg
作用:
显示指定的角色画面。
写法:
1、 单纯显示
cg res/role.png
2、 显示在指定位置
cg res/role.png 50 50
3、 替换当前cg
cg res/role.png to res/role1.png
4、 删除指定cg
cg del res/role.png (ps:只填写cg del则删除全部cg)
sleep
作用:
令画面延迟指定时间,此段时间内画面将无响应。
写法:
sleep 1000
flash
作用:
令画面以指定颜色闪烁。
写法:
flash 200,125,200
cgwait
作用:
暂停当前画面,当点击时继续运行。
写法:
cgwait
fadein
作用:
以指定颜色进行屏幕淡入。
写法:
fadein black
fadeout
作用:
以指定颜色进行屏幕淡出。
写法:
fadeout black
shake
作用;
让画面产生模拟震荡。
写法:
shake 30
play
作用:
播放指定音乐。
写法:
paly res/m1.wav
playloop
作用:
循环播放指定音乐。
写法:
play res/m1.wav
playstop
作用:
停止音乐的播放。
写法:
playstop 0 (0为音乐索引号,按照添加顺序累加,直接playstop将停止所有音乐的播放)
petal
作用:
画面呈现樱花飞舞效果。
写法:
petal(停止为petalstop)
snow
作用:
画面呈现银装素裹效果。
写法:
snow(停止为snowstop)
rain
作用:
画面呈现落雨纷纷效果。
写法:
rain(停止为rainstop)
set
作用:
预定义脚本变量。脚本变量也可在avgscreen中通过command类设置,也多用于avgscreen与脚本交互,或者定义需要重复使用的数据信息。
写法:
set var = “res/background.png”
set var1 = 100
print
作用:
将脚本中的预定义变量内容于指定位置显示出来。
写法:
1、set var = “res/background.png”
mes print(var)
2、set var =7
if var == 7
xxxx
else
xxxx
endif
3、set var=10/2*36-7
reset
作用:
清空脚本中一切缓存,此时所有预订义变量都将不复存在。
写法:
reset
//,#.’
作用:
以上三者为行注释符号,自该符号起一整行数据将不被脚本读取。
写法:
//xxxx
#xxxx
‘xxxx
/**/
作用:
区域注释符号,自/*起,直到*/结束的所有数据将不被脚本读取。
写法:
/*
xxxxxxxxx
xxxxx
xxx
*/
exit
作用:
离开avgscreen窗体。当执行此命令时脚本将被强制终止,并执行onexit函数,多用于转换screen。
写法:
exit
说到这里,其实我们可以看出lgame默认给出的脚本功能非常有限(相对专业avg引擎而言),只包含了最基础的avg功能。
但是,那并不重要,因为lgame是一款通用(万能)的游戏开发框架,只要lgame将相关修改权限交给游戏开发者,游戏开发者就完全可以通过lgame组件对avgscreen扩充出任何您所需要的功能。
下列是一个继承自avgscreen的窗体:
public class avgscript extends avgscreen { /** * 使用指定脚本,指定路径中图片为对话框 * * @param initscript * @param initdialog */ public avgscript(string initscript, string initdialog) { super(initscript, initdialog); } /** * 使用指定脚本,指定对话框图片 * * @param initscript * @param img */ public avgscript(string initscript, image img) { super(initscript, img); } /** * 使用指定脚本,默认对话框 * * @param initscript */ public avgscript(string initscript) { super(initscript); } /** * avg底层绘图接口,允许直接在此绘制您所需要的画面(即使不使用底层绘图, 您也可以通过add方式增加组件或精灵到指定位置) */ public void drawscreen(lgraphics g) { } /** * 仅在初始化时起作用,设定脚本命令参数,可于此处预设游戏中变量供脚本读取 */ public void initcommandconfig(command command) { } /** * 仅在初始化时起作用,设定信息框参数,不填此项时,对应组件默认置于屏幕下方,自适应信息框图片 */ public void initmessageconfig(lmessage message) { } /** * 仅在初始化时起作用,设定选择框参数,不填此项时,对应组件默认置于屏幕下方,自适应选择框图片 */ public void initselectconfig(lselect select) { } /** * 当执行avg脚本时触发此项,message中数据为脚本信息,若返回false, 则当前脚本将被此函数截取(此时默认解释器无效),用户可以自行解析 * 该行脚本数据。 */ public boolean nextscript(string message) { return true; } /** * 当画面中出现选择项,并且选中时触发此函数,message中数据为[select]命令信息,type为选中的选择项,索引由0开始 */ public void onselect(string message, int type) { } /** * 当脚本执行[exit]命令时将调用此参数,可在此执行setscreen之类命令离开avg窗体 */ public void onexit() { }}
值得说明的是,即便什么都不再实现,继承自avgscreen的窗体也可以起到解释并执行指定脚本的作用。另外j2se版与android版更新内容完全相同,故不再赘述。
事实上,avgscreen的操作使用非常之简便,只要结合lgame现有的强大组件与精灵支持,就算要制作出传说级的avg(或galgame),也只是轻而易举的事情罢了(当然,大前提是有美工支持,或者套用其它游戏图片……)。
再者,虽然avg类游戏制作非常简单,某些类型的avg游戏甚至非常卖座(比如月姬、圣杯战争、初音岛之类以及很多纯h的),但在android上的avg游戏却非常罕见,这给无论是原创或移植游戏都留下了巨大的商机。
另外0.2.8中也修正了所有大家反馈回来的bug(这次改版后应该没有特别明显的bug存在了),并针对精灵类作了优化,修正了一些耗时的算法,同时为lgame的标准精类(不是仿j2me的那个)添加了自由旋转以及色彩过滤功能,并且增加了一些画面特效,具体留待正式发布时再详细说明。
小弟本周六、日两天准备死磕文档,没有发生人力不可抗拒之意外的话(诸如停电、受伤、其它项目赶工、硬盘崩溃、乃至海啸、地震、战争、外星人入侵、小弟蒙主召唤等等),文档以及lgame-0.2.8会在2010年9月15日晚准时发布,不见不散。
