KeyFansClub

首页 » - 特色讨论区 - » 键社茶餐厅 » 超·论坛代码"GB Plus!"发布!
悠久ノ風 - 2009/6/14 14:04:00


+ GameBook Plus! ----------

一起来写游戏吧。^^

使用论坛代码"GB Plus!",可以创造出各种有趣的GameBook(游戏书?)。

对GameBook没有概念的话可以去玩一玩『这里是心跳☆高中』

本次发布的论坛代码是上次的"GB"代码的一次升级,追加了很多新功能,进化至"GB Plus!"。

"GB Plus!"代码支持内容的分页显示,支持变量定义与计算,以及条件页面跳转和随机页面跳转,以及模板变量,并附带一个调试台。

使用"GB Plus!"代码可以实现各种基于选项和记分的测验、占卜、冒险等文字游戏。

对于传统的帖子,内容分页的功能也有助于更好地组织帖子的内容。

爱生活,爱"GB"。一起来使用吧。^^


+ 示例 ----------


[gb=GameBook("『小白兔的旅途』");]

{debug/}

{#}

这是某个兔子星的某只小白兔的故事


:miffy9: 


{@序曲, carrot=3}开始{/@}


{/#}

{#序曲}
“形式已经相当的严峻了... 即将到来的会是怎样的命运呢” :miffy3:
“家里边的萝卜只剩下三天的份了”:miffy3:

“到米菲乐园去,那里是你的归宿”
一只乌鸦飞来了,叫了一声,然后飞走了

决定后,小白兔带上最后的三根萝卜,踏上了旅程。

到达米菲乐园需要七天时间。
但是每天都需要吃一根萝卜。
只靠三根萝卜的话旅途会变得很艰险。

“总会有办法的吧”:miffy6:

{@早晨, day=1}小白兔的旅途开始了。{/@}
{/#}

// 七日循环开始 ===================================

{#早晨}

%day%天  萝卜x%carrot%



早晨到了。
"今天也加油哦~":miffy5:

{@事件}走啊走  走啊走{/@}
{/#}

// 随机事件传送点
{$事件, ?} {20, 无事} {60, 熊} {100, 田} {/$}

{#无事}

%day%天  萝卜x%carrot%



{@夜晚}今天什么也没发生,平安地度过了。:miffy5:  {/@}
{/#}

// 熊遭遇事件开始 ===================================

// 根据剩余萝卜数量调整事件
{$熊, carrot} {0, 熊1} {99, 熊2} {/$}

// 没有萝卜时
{#熊1}

%day%天  萝卜x%carrot%



遇到熊了!:miffy6:
熊:“噢噢噢!把萝卜交出来!”
怎么办?

{@战斗}与熊战斗! {/@}  {@战斗}与熊战斗! {/@}
{/#}

// 剩余萝卜时
{#熊2}

%day%天  萝卜x%carrot%



遇到熊了!:miffy6:
熊:“噢噢噢!把萝卜交出来!”
怎么办?

{@交出}交出一根萝卜... {/@}  {@战斗}与熊战斗! {/@}
{/#}

{#交出}

%day%天  萝卜x%carrot%



熊:"噢噢!好兔子!"

{@夜晚, carrot - 1}失去了一根萝卜...:miffy3: {/@}
{/#}

// 战斗胜负判断
{$战斗, ?} {20, 战胜} {100, 战败} {/$}

{#战胜}

%day%天  萝卜x%carrot%



激烈的战斗之后...
胜利了!:miffy6:

{@夜晚, carrot + 2}战利品的两根萝卜入手了!{/@}
{/#}

// 战败后根据剩余的萝卜调整事件
{$战败, carrot} {1, 战败1} {99, 战败2} {/$}

{#战败1}

%day%天  萝卜x%carrot%



激烈的战斗之后...
被打败了!:miffy12:

{@夜晚, carrot = 0}所有的萝卜也被抢走了!{/@}
{/#}

{#战败2}

%day%天  萝卜x%carrot%



激烈的战斗之后...
被打败了!:miffy12:

{@夜晚, carrot - 2}两根萝卜也被抢走了!{/@}
{/#}

=================================== 熊遭遇事件结束 //

// 种萝卜事件开始 ===================================

// 根据剩余萝卜数量调整事件
{$田, carrot} {0, 田1} {99, 田2} {/$}

// 没有萝卜时
{#田1}

%day%天  萝卜x%carrot%



发现了肥沃的田地!

{@夜晚}但是一根萝卜也没有了...:miffy12: {/@}
{/#}

// 剩余萝卜时
{#田2}

%day%天  萝卜x%carrot%



发现了肥沃的田地!:miffy6:
要种一根萝卜试试么?

{@种, carrot - 1}种{/@}  {@夜晚}不种{/@}
{/#}

// 收成判断
{$种, ?} {60, 收获} {100, 无收} {/$}

{#收获}

%day%天  萝卜x%carrot%



埋了一根萝卜。
过了很久之后...

{@夜晚, carrot + 2}长出来两根萝卜!:miffy9: {/@}
{/#}

{#无收}

%day%天  萝卜x%carrot%



埋了一根萝卜。
过了很久之后...

{@夜晚}什么也没发生...:miffy3: {/@}
{/#}

=================================== 种萝卜事件结束 //

// 根据剩余萝卜数量发展剧情
{$夜晚, carrot} {0, 升天} {99, 过夜} {/$}

{#升天}

%day%天  萝卜x%carrot%



晚上到了。

“已经一根萝卜都没有了啊。”
“看来俺的日子也到头了...”:miffy12:
谁也不知道的寒冷的深夜里,小白兔去了天国。

- Game Over -
{/#}

{#过夜}

%day%天  萝卜x%carrot%



晚上到了。

{@吃萝卜, carrot - 1}“吃萝卜吧!”:miffy9: {/@}
{/#}

{#吃萝卜}

%day%天  萝卜x%carrot%



萝卜少了一根。

{@天亮, day + 1}于是夜深了...:miffy15: {/@}
{/#}

{$天亮, day} {7, 早晨} {8, 乐园} {/$}

=================================== 七日循环结束 //

{#乐园}
七天的旅途过去了,小白兔终于来到了米菲乐园。
堆得像山一样高的萝卜印入眼帘。
“啊啊啊!太棒了!”
于是小白兔的幸福生活再次开始了。

- The End -
{/#}

[/gb]

* 说明 ***

以上游戏移植于米菲剧场的示例。

因为使用了大量的条件跳转,代码会显得很复杂,写起来也很花时间。

以上示例的主要意图是证明“连这种事情啊那种事情啊都可以做哦”,用以演示GB Plus!能强大到什么程度。

实际使用中,大家可以根据自己的根性量力而为。


* 代码 ***

为了节省篇幅,使代码的结构清晰可见,以下代码中去掉了实际的代码中用于排版和样式的UBB标签,只保留了核心代码。

[wrap=点击展开]
[ gb=GameBook("『小白兔的旅途』");]

{debug/}

{#}
这是某个兔子星的某只小白兔的故事
{@序曲, carrot=3}开始{/@}
{/#}

{#序曲}
“形式已经相当的严峻了... 即将到来的会是怎样的命运呢”
“家里边的萝卜只剩下三天的份了”

“到米菲乐园去,那里是你的归宿”
一只乌鸦飞来了,叫了一声,然后飞走了

决定后,小白兔带上最后的三根萝卜,踏上了旅程。

到达米菲乐园需要七天时间。
但是每天都需要吃一根萝卜。
只靠三根萝卜的话旅途会变得很艰险。

“总会有办法的吧”

{@早晨, day=1}小白兔的旅途开始了。{/@}
{/#}

// 七日循环开始 ===================================

{#早晨}
第%day%天  萝卜x%carrot%

早晨到了。
"今天也加油哦~"

{@事件}走啊走  走啊走{/@}
{/#}

// 随机事件传送点
{$事件, ?} {20, 无事} {60, 熊} {100, 田} {/$}

{#无事}
第%day%天  萝卜x%carrot%

{@夜晚}今天什么也没发生,平安地度过了。 {/@}
{/#}

// 熊遭遇事件开始 ===================================

// 根据剩余萝卜数量调整事件
{$熊, carrot} {0, 熊1} {99, 熊2} {/$}

// 没有萝卜时
{#熊1}
第%day%天  萝卜x%carrot%

遇到熊了!
熊:“噢噢噢!把萝卜交出来!”
怎么办?

{@战斗}与熊战斗! {/@}  {@战斗}与熊战斗! {/@}
{/#}

// 剩余萝卜时
{#熊2}
第%day%天  萝卜x%carrot%

遇到熊了!
熊:“噢噢噢!把萝卜交出来!”
怎么办?

{@交出}交出一根萝卜... {/@}  {@战斗}与熊战斗! {/@}
{/#}

{#交出}
第%day%天  萝卜x%carrot%

熊:"噢噢!好兔子!"

{@夜晚, carrot - 1}失去了一根萝卜...{/@}
{/#}

// 战斗胜负判断
{$战斗, ?} {20, 战胜} {100, 战败} {/$}

{#战胜}
第%day%天  萝卜x%carrot%

激烈的战斗之后...
胜利了!

{@夜晚, carrot + 2}战利品的两根萝卜入手了!{/@}
{/#}

// 战败后根据剩余的萝卜调整事件
{$战败, carrot} {1, 战败1} {99, 战败2} {/$}

{#战败1}
第%day%天  萝卜x%carrot%

激烈的战斗之后...
被打败了!

{@夜晚, carrot = 0}所有的萝卜也被抢走了!{/@}
{/#}

{#战败2}
第%day%天  萝卜x%carrot%

激烈的战斗之后...
被打败了!

{@夜晚, carrot - 2}两根萝卜也被抢走了!{/@}
{/#}

=================================== 熊遭遇事件结束 //

// 种萝卜事件开始 ===================================

// 根据剩余萝卜数量调整事件
{$田, carrot} {0, 田1} {99, 田2} {/$}

// 没有萝卜时
{#田1}
第%day%天  萝卜x%carrot%

发现了肥沃的田地!

{@夜晚}但是一根萝卜也没有了...{/@}
{/#}

// 剩余萝卜时
{#田2}
第%day%天  萝卜x%carrot%

发现了肥沃的田地!
要种一根萝卜试试么?

{@种, carrot - 1}种{/@}  {@夜晚}不种{/@}
{/#}

// 收成判断
{$种, ?} {60, 收获} {100, 无收} {/$}

{#收获}
第%day%天  萝卜x%carrot%

埋了一根萝卜。
过了很久之后...

{@夜晚, carrot + 2}长出来两根萝卜!{/@}
{/#}

{#无收}
第%day%天  萝卜x%carrot%

埋了一根萝卜。
过了很久之后...

{@夜晚}什么也没发生...{/@}
{/#}

=================================== 种萝卜事件结束 //

// 根据剩余萝卜数量发展剧情
{$夜晚, carrot} {0, 升天} {99, 过夜} {/$}

{#升天}
第%day%天  萝卜x%carrot%

晚上到了。

“已经一根萝卜都没有了啊。”
“看来俺的日子也到头了...”
谁也不知道的寒冷的深夜里,小白兔去了天国。

- Game Over -
{/#}

{#过夜}
第%day%天  萝卜x%carrot%

晚上到了。

{@吃萝卜, carrot - 1}“吃萝卜吧!”{/@}
{/#}

{#吃萝卜}
第%day%天  萝卜x%carrot%

萝卜少了一根。

{@天亮, day + 1}于是夜深了...{/@}
{/#}

{$天亮, day} {7, 早晨} {8, 乐园} {/$}

=================================== 七日循环结束 //

{#乐园}
七天的旅途过去了,小白兔终于来到了米菲乐园。
堆得像山一样高的萝卜印入眼帘。
“啊啊啊!太棒了!”
于是小白兔的幸福生活再次开始了。

- The End -
{/#}

[ /gb]

[/wrap]


+ 使用说明 ----------


* 代码结构 ***
[ gb=标题]

{debug/}

注释
{#}
  {@标识符 , 算式}链接{/@}
{/#}

注释
{#标识符}
  %变量名%
  {@标识符 , 算式}链接{/@}
{/#}

注释
{$标识符 , 变量名}
  {数值 , 标识符}
  {数值 , 标识符}
{/$}

[/gb]



* 流程 ***

要创造一本书,首先需要定义一些"节点",以及连接各个节点的"边"。

"节点"包括页面节点,以及控制链接跳转方向的传送点。

"边"对应于页面中定义的链接。用户可以点击链接,跳转到不同页面。

从计算机专业的角度换句话说,"节点"和"边"定义了一个图,或者说是定义了一个自动机。

系统根据用户的点击,在不同的节点之间互相切换,显示不同的页面。


* [ GB=标题][ /GB] ***

定义一本书。

标题通常是一段文字描述,可包含部分论坛代码。

点击标题后展开或者合上书。

[ GB=标题]与[ /GB]之间可插入代码段,注释,以及调试开关。


* 代码段 ***

定义一个节点或一条边。

例如标签{#}与{/#}之间的代码,包含标签本身,定义了一个节点。这称为一个代码段。


* 注释 ***

代码段之间可以添加注释。

在不引起与代码段混淆的情况下,注释可以使用任何内容。

注释中不要使用半角"-"号,有可能引发错误。


* {debug/} ***

注释中包含"{debug/}"时,开启调试模式。

调试模式下,代码执行过程中的变量计算、节点移动等状态信息将显示在额外的调试台里。

调试模式可以帮助用户在书写代码的过程中检查错误,分析代码执行流程。

正式发布时建议去掉“{debug/}”以关闭调试模式。


* {#标识符}{/#} ***

定义一个页面节点。

标识符为空时,该页面节点作为首页。

{#}与{/#}之间可以插入链接,模板变量,以及任何论坛代码。


* 标识符 ***

节点的唯一标识,可以使用除半角","号以外的便于理解和使用的任意字符。

同一本书中的标识符不可重复。


* %变量名% ***

定义页面中的模板变量。

页面显示时,模板变量会替换为对应的数值。

例如变量"day"等于7,某页面包含"第%day%天",该页面显示时,显示结果为"第7天"。


* 变量 ***

用户在脚本中自定义的变量。

变量主要用于页面的条件跳转。

变量名可以使用除半角","号以外的便于理解和使用的任意字符。


* {@标识符 , 算式}链接{/@} ***

定义一个节点指向另一个节点的链接。

用户点击链接后,系统跳转到与标识符对应的节点,并利用算式更新变量的值。

标识符为空时,跳转到首页。

算式为空时,跳转时不更新变量。

{@}与{/@}之间可以插入部分论坛代码。


* 算式 ***

定义点击链接时伴随的运算操作。

格式:[变量名] [运算符:+-*/=] [数字]

示例:"x + 5"、"neko_number = 1"、"经验值 / 2"

运算符使用 + - * / = 之一。

运算时,[变量名] = [变量名] [运算符] [数字]。例如"x + 1"对应于 x = x + 1。

当变量名第一次出现时,系统自动创建该变量,并将其值初始化为0。

除号"/"使用整除计算。例如x等于5时,算式"x/2"运算后,x等于2。

等号"="使用赋值运算。例如x等于5时,算式"x=3"运算后,x等于3。


* {$标识符 , 变量名} {数值 , 标识符} {/$} ***

定义一个传送节点。

变量名等于半角“?”号时,定义一个随机传送节点。

系统逐一对比指定变量与{$}{/$}之间定义的跳转条件,满足条件时跳转至相应节点。

{$}与{/$}之间可以包含多对形如 {数值 , 标识符} 的跳转条件定义。

数值为整数,如:5、0、-1,标识符为节点标识符。

按照跳转条件定义的先后顺序,系统依次对比“数值”与“变量”。

当第一次满足“变量”小于等于“数值”的条件时,跳转到该数值对应的节点。

最后一组跳转条件定义必须使得“变量”满足小于等于“数值”,否则会因为没有适合的跳转条件而发生错误。

因此最后一组定义中的“数值”可以取一个足够大的值,比如9999。

随机传送节点的情况下,系统用值为0~99之间的随机等概率整数取代变量名对应的值,完成上述对比。
就烦起名字 - 2009/6/14 14:07:00
GB的升级版?加了什么新功能呢?
Dangoo201723 - 2009/6/14 14:14:00
原帖由 悠久ノ風 于 2009-6-14 14:04:00 发表
"GB Plus!"代码支持内容的分页显示,支持变量定义与计算,以及条件页面跳转和随机页面跳转,以及模板变量,并附带一个调试台。


话说调试台是什么....下面的介绍没有提啊....会不会是代码自动错误检测啊...:miffy6:

=================================================================================
还是 没明白调试台是做什么的....:miffy2:


=================================================================================
突然茅舍顿开....明白过来...果然是有爱的调试台....避免错误了...
悠久ノ風 - 2009/6/14 14:16:00
调试台啊 看看示例里边的小白兔就知道了:miffy12:
key天空 - 2009/6/14 16:26:00
:miffy2: :miffy2: :miffy2: :miffy2: 总是有错误~!
水羊 - 2009/6/14 18:34:00
看到2F的GB升級有什麼用這句話時,我就狂笑.........
咳,抱歉,抱歉.....我直接聯想到某個人........(光速逃)
麻,新代碼我就純支持  (我就不知道會不會用到了.......)
樓上說總有錯誤?!
怎樣的錯誤.....?
waxeh0043 - 2009/6/15 21:34:00
晚上到了。

“已经一根萝卜都没有了啊。”
“看来俺的日子也到头了...”
谁也不知道的寒冷的深夜里,小白兔去了天国。

- Game Over -
--------------
去了天国:miffy9: 小白兔你好。小白兔再见
Bce - 2009/6/16 9:25:00
嗯,貌似这样的话Save / Load 也是可能的。。。。

有根性的淫,站起来吧~
SOLAの夢 - 2009/6/20 19:48:00
哦,就前些日子测试那段代码吧,话说lz的图让咱想到了映射……
keyfanjun - 2009/6/20 22:48:00
上次在团子星试了一下…………不知道是不是没有去掉空格的问题呢……结果代码全都出来了…………啃

好好学习,为了早日使用好GB~~(逃)
邪音符 - 2010/9/24 15:06:00
突然发现者论坛功能好强大。。。。
永恒存在~夏 - 2010/10/5 16:27:00
总算打结束啦,额~~我是打12遍还是21遍?算了算了,反正总算过去了,这期间小兔斗饿兽种田地,不容易啊..5555~~~~(我也不容易~~~失败是成功之母  哦也~~~飘!!)
liubobby - 2010/11/27 18:02:00
啊...........为什么我总是失败............

抱歉...把这个上古神贴顶起来了....我面壁去...
动画玩家 - 2010/12/15 8:13:00
请问去哪下载啊把网站发给我:miffy1:
在一旁飞翔 - 2011/6/11 20:35:00
这个游戏虽说简单,但是也是开启了KeyFansClub自己制作游戏的先河
这个游戏是不是属于那种纯靠运气的??
玩起来和文字游戏差不多,就是类型少了点
wings - 2012/10/6 15:13:00
没看懂。。亲。。。凑字数。。。凑字数
1
查看完整版本: 超·论坛代码"GB Plus!"发布!