为了证明小弟最近不是什么都没干,为了某位网友的呼唤,也为了表白在下确实正艰苦卓绝的构建着文档及代码,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 <r吃了吗/>?/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 |
作用: 将脚本中的预定义变量内容于指定位置显示出来。 写法: 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日晚准时发布,不见不散。
再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow