GameDesign 板


LINE

※ [本文转录自 C_and_CPP 看板] 作者: ForSinSoKing ( Penguin & Fish :)) 看板: C_and_CPP 标题: [情报] BBS-Lua 时间: Wed Jan 9 18:22:36 2008 以下文章都是转录自P2《BBSLua》版piaip 大师的文章:) 有兴趣的板友可以去P2参观看看, 目前P2可以在线上跑程式. 如果确认会实装的话, 以後可以直接在BBS 上面跑程式. (已经由版主同意分享此资讯给大家, 感谢版主) -- 作者 piaip (piaip) 看板 BBSLua 标题 [文件] BBS-Lua 简介 时间 Sun Jan 6 21:52:29 2008 ─────────────────────────────────────── 如果你是来体验 BBS-Lua 的,请在板上找任一篇开头为 [Lua ] 的文章, 阅读後按下大写 P 即可 =========================================================================== 本文件的最新版请至 PTT2 BBSLua 板取得 本文件为推广说明用,转录不需通知原作者 (推文会被不定期删除,请见谅) =========================================================================== ● 什麽是 BBS-Lua? BBS-Lua 是一个实验性的计画,由 piaip 开发并於 2008 年开始在 PTT2 BBS (ptt2.cc) 站开始试用。 正如它的名字,这个计画的目的就是「在 BBS 上执行 Lua(程式)」。 Lua 是什麽呢? Lua 念成「LOO-ah」(噜~啊),它是一个程式语言, 被大量的用在各种游戏平台中,包括着名的魔兽世界 (Wow) UI 界面 也是使用 Lua 来制作。 Lua 的相关资讯请见 http://www.lua.org/ 所以, BBS-Lua,就是要「让使用者可以在 BBS 上轻易的用 Lua 写程式」。 ● 为何要开发此计画? BBS-Lua 的诞生有好几个因素。 最主要的因素是来自於它的前身 - 互动式 BBS 动画。 在 2007 年末, PTT/PTT2 开始实装新一代的 pmore 2007 动画系统, 内含了不少互动与即时的指令,用来方便制作多重结局的动画。 这些指令後来 被拿来试作不少小游戏,但毕竟是以动画为出发点设计的系统,没有变数、回圈, 於是只要游戏的状态与变数一多,需要产生的画面就以指数成长。 基於这个经验,我们决定另外创造一个全新的互动系统,以真正的程式语言为基础, 独立於动画之外 - 也就是 BBS-Lua 计画。 另外,使用此计画还有不少的好处: - 减轻 BBS 非核心系统的开发负担 现有 BBS 有半数以上跟效率无关的程式 (包含许多游戏)。 使用 BBS-Lua 可以 把这些部份全部独立出来,修改程式也不用重新编译或启动 BBS - 方便移植程式 传统的 BBS 程式虽是用 C 写成,但各家分岐仍然过大 (Maple 2.x, Maple 3, Firebird, PTT, ...),导致程式码流通不易。 最明显的例子就是游戏: 这家 写的游戏要让另一个分支的 BBS 能跑,通常都要下一番功夫。 BBS-Lua 计画,可以允许 BBS 的底层南辕北辙,只要支援同样的 BBS-Lua 标准, 就可以让 BBS-Lua 的程式几乎一行都不用改就可以在别处执行。 - 方便程式流通 现在是开放源码 (Open Source) 的时代。 遗憾的是,BBS 这个超大程式平台, 现在并不方便让大家交流。 在某个 BBS 看到印象深刻的功能或游戏,若是直接 转寄到其它 BBS 就能玩,不是很有趣吗? 而且若是一般使用者也能进行创作, 相信 BBS 上可玩的东西数目会大增,品质也会增加。 以往你觉得游戏不好玩、美工不够好,只能每日一信建议站长改;现在你可以 自己动手作! ● 我要如何参与 / 使用 BBS-Lua? 要体验 BBS-Lua, 可以先找有内含 BBS-Lua 程式的文章。 它们通常会 在文内出现如 --#BBSLUA 这样的一行。 PTT2 BBSLua 板上 [Lua] [程式] [BBSLua] 或 [范例] 通常都是此类文章。 找到以後,进入阅读画面後按下大写 P (小写 p 是播放动画) 就可以执行 BBS-Lua 程式了。 另外,所有的 BBS-Lua 程式都可以在任何时候按下 Ctrl-C 中断执行。 如果你有程式设计的基础或是对於制作 BBS-Lua 有兴趣,请到 ptt2.cc 的 BBSLua 板,可以找到最新版的语法、API文件与说明。 ● BBS-Lua 的未来 / 以後会有别的 BBS 也支援吗? 基本上 PTT1/PTT2 应该是会支援,虽然 PTT1 的时程未定(或许在2009前)。 不过也要视 PTT2 测试的状况而定。 我们无法保证未来一定会实装。 我们很欢迎别的 BBS 一起来实作 BBSLua ,不过毕竟这不是我们能决定的罗~ 如果未来发展的好,应该是很有机会的事。 关於 BBS-Lua 的发展计画,我们希望在 2008 结束前能制定一个 1.0 标准版, 有足够的 API 来完成大部份 BBS 单人环境能作的事 (ex, 游戏) 或许会推出能在单机上执行的模拟环境与 SDK 2.0 之後则是以两人以上互动的架构为主轴。 ● 我有问题 / 我找到 Bug / 我想发表程式 目前 PTT2 的 BBSLua 板是最适合作这些事的地方。 -- 作者 piaip (piaip) 看板 BBSLua 标题 [文件] BBS-Lua 规格与 API 说明文件 时间 Sun Jan 6 21:52:29 2008 ─────────────────────────────────────── ===================================================================== Interface: 0.112 本文件最後更新时间: 2008/01/08 23:45 最新版本请至 PTT2 BBSLua 板取得 本文件为推广说明用,转录不需通知原作者 (推文会被不定期删除,请见谅) 但由於 BBS-Lua 目前变动非常频繁,建议您附上原出处方便阅读者取得最新版 ===================================================================== 提醒您: BBS-Lua 系统还在初期开发中,所有的架构/API 都随时可能大改! 请有您现在的作品可能忽然就跑不动的心理准备。 BBS-Lua 是在 BBS 里面跑程式语言的机制,选用的程式语言是 Wow UI 所使用的 Lua。 关於此程式语言请见 http://www.lua.org/pil/ http://www.lua.org/manual/5.1/manual.html 这份文件说明了如何在 BBS 上使用 Lua (也就是 BBS-Lua 计画), 以及目前可使用的 API 相关说明。 2008 Jan, piaip ===================================================================== ● BBS-Lua 的格式 BBS-Lua 的程式使用一般文章发文即可。 程式码要用特殊的标签前後标起来。 这个标签写成: (须在行前,前面不可有空白) --#BBSLUA 让我们来看个最简单的范例吧: --#BBSLUA print("Hello, world") --#BBSLUA 这就是一个最简单的 BBS-Lua 程式。 执行它的方法,目前是在阅读文章时按下大写 P 。 另外, 紧接着 --#BBSLUA 的下一行可以给定版本及作者资讯, (中间不可有空行) 称之为 TOC Tag。 格式为: -- Name: Value TOC 可由 BBS-Lua 中使用 toc.xxx 来存取,同时也可以让 BBS-Lua 系统警告 是否有相容性的问题。 目前支援的 TOC Tag 有: -- Interface: BBS-Lua API 版本号码 (可方便系统警示不相容的讯息) -- Title: 程式名称 -- Notes: 程式说明 -- Author: 作者资讯 -- Version: 程式自订的版号 -- Date: 最後修改日期 (0.113+) Interface 的号码,请填上您开发时参考的文件编号 (见本文开头) 下面是一个完整的范例: --#BBSLUA -- Interface: 0.112 -- Title: 贪食蛇 -- Notes: 在 BBS 上玩贪食蛇, Ctrl-C 可中断 -- Author: Hung-Te Lin <[email protected]> -- Version: 0.1 -- Date: 2008/01/09 print("hello, world"); --#BBSLUA 建议您平时最少加上 Interface 资讯,其它则是可加可不加: --#BBSLUA -- Interface: 0.112 print("Hello, world!") --#BBSLUA ===================================================================== ● BBS-Lua 与标准 Lua 异同之处 目前的 BBS-Lua 使用的是标准 Lua 5.1,除了下列不同: - print() 被转换为 BBS 输出 - os library 无法使用 - io library 无法使用 - debug library 无法使用 - load (package) library 无法使用 - 可使用 math library - 可使用 string library - 可使用 table library - 内建 bitlib ( http://luaforge.net/projects/bitlib ) ===================================================================== ● API 说明 目前 BBS-Lua 提供的专属输出入功能有: [输出] bbs.addstr(str, ...) 画字到目前位置 bbs.outs(str, ...) 画字到目前位置 (同 addstr) bbs.title(str) 移至左上角绘制标题 bbs.print(str, ...) 印完所印字串後再加上一个换行 (bbs.outs(str,...,"\n")) print(str, ...) 同 bbs.print * 全系列画字函式都可以接受 ANSI 指令 * 注意: 输出并不会立刻反应在画面上,要等 refresh() 或其它输入函式才会作全萤幕的更新。请见 refresh() 说明 [移动] bbs.getyx() 传回游标目前位置 (y, x), y/x 由 (0,0)表左上角 bbs.getmaxyx() 传回目前萤幕大小 (my,mx), 实际可移动范围到(my-1,mx-1) bbs.move(y,x) 移动到 (y,x) (也就是 ANSI 的 *[x;yH) bbs.moverel(dy,dx) 移动到游标目前位置加上 (dy,dx) [清除] bbs.clear() 清除整个画面+回到左上角 bbs.clrtoeol() 清至行尾 bbs.clrtobot() 清至萤幕底端 [更新画面] bbs.refresh() 呼叫此命令时才会真的更新画面 (呼叫输入等待指令如 getch/getstr/pause/kbhit/sleep 时也会自动更新) 另外注意: 1.10 前为了加速输出,在使用者已有输入资料且 程式尚未处理时, refresh() 完全不会更新输出。 1.10 後,一般输入指令的自动更新在输入资料未处理完时 不会更新画面,但 refresh() 会强制更新。 注: 由於这关乎总输出资料量,我们不保证未来会维持这个行为 或许哪天就会改回有输入资料未处理完前不更新输出。 请尽量把您的程式写好一点 [属性] bbs.color(c1,c2,...) 切换 ANSI 属性 (也就是 *[c1;c2;....m) 不指定参数时 bbs.color() = *[m (重设属性) bbs.setattr(c1,c2,...) 同 color() bbs.ANSI_COLOR(c1,...) 传回 ANSI 属性字串 (不马上变属性,要 outs 才会变) bbs.ANSI_RESET 传回 *[m 字串 bbs.ESC 传回 ANSI 的 * [输入] bbs.getch() 输入单键 特殊按键为大写名: UP DOWN LEFT RIGHT ENTER BS TAB HOME END INS DEL PGUP PGDN F1 ... F12 另外与 Ctrl 合按的复合键会以 ^X 的形式出现。 bbs.getdata(n,echo) 画 n 个字元的输入框并输入字串 echo (可省略) = 0 时只输入不画字 (可作密码输入) bbs.getstr(n,echo) 同 getdata bbs.pause(msg) 在底部画暂停讯息并等输入单键 (传回值同 getch()) bbs.kbhit(wait) 传回使用者是否有按键 (若无输入则会等待最多 wait 秒) bbs.kbreset() 清空输入缓冲区 (吃掉所有已输入的键) [时间] bbs.time() 现在时间 (以数字表示),精准度到秒 (处理速度较快) bbs.now() 同 time() bbs.ctime() 现在时间 (以字串表示) bbs.clock() 高精准度的时间 (可到秒的小数点以下但速度较慢) bbs.sleep(sec) 停止执行 sec 秒 (可到小数点以下) [BBS 资讯] bbs.userid() 目前使用者的 id bbs.sitename BBS 站名 bbs.interface BBS-Lua API 版本号码 [程式 TOC 资讯] toc.interface TOC 中的 Interface: 资讯 toc.title TOC 中的 Title: 资讯 toc.notes TOC 中的 Notes: 资讯 toc.author TOC 中的 Author: 资讯 toc.version TOC 中的 Version: 资讯 toc.date TOC 中的 Date: 资讯 (0.113+) [位元操作 (bitlib) ] bit.cast(a) cast a to the internally-used integer type bit.bnot(a) returns the one's complement of a bit.band(w1, ...) returns the bitwise and of the w's bit.bor(w1, ...) returns the bitwise or of the w's bit.bxor(w1, ...) returns the bitwise exclusive or of the w's bit.lshift(a, b) returns a shifted left b places bit.rshift(a, b) returns a shifted logically right b places bit.arshift(a, b) returns a shifted arithmetically right b places ===================================================================== ● 版本更新注意事项 === 2008/01/06 2:03 前的作品昇级要注意: (0.101) === 1. -- BBSLUA 改前後加上 --#BBSLUA 2. stand_title 改 title 3. bbs.outs(bbs.ANSI_COLOR(1,33) .. "test" .. bbs.ANSI_RESET); 建议改成 bbs.color(1,33); bbs.outs("test"); bbs.color(); === 2008/01/06 13:00 後有效: (0.102) === 1. 新增 getmaxyx(), moverel() 2. chattr() 改为 setattr() 3. igetch() 停止支援,请用 getch 4. getnstr() 停止支援,请用 getstr 或 getdata 5. vmsg() 停止支援,请用 pause 6. bbs.outs() / bbs.addstr() 可改为写 print(),不用加前面的 bbs. === 2008/01/06 15:55 後有效: (0.103) === 1. 新增 bbs.userid() 为目前使用者 id 2. 新增 bbs.kbhit() === 2008/01/06 17:05 後有效: (0.104) === 1. print()/bbs.print() 现在会比 outs() 多印一个换行 2. 修正跑久会停住的问题 === 2008/01/06 21:53 後有效: (0.105) === 1. 新增 bbs.clock() === 2008/01/07 10:50 後有效: (0.106) === 1. 新增 bbs.sleep(),暂时只开放最多 10 秒 === 2008/01/07 11:50 後有效: (0.107) === 1. 修正 bbs.sleep() 未处理 Ctrl-C 的问题,重新开放上限 2. 新增 bbs.kbreset() === 2008/01/07 14:15 後有效: (0.108) === 1. 新增 bitlib ( http://luaforge.net/projects/bitlib ) 为标准之一, 方便移植用 C 写的程式 === 2008/01/07 21:05 後有效: (0.109) === 1. 新增 bbs.interface bbs.sitename 2. 格式新增 TOC tags (toc.*) === 2008/01/08 01:00 後有效: (0.110) === 1. 由於太多人无法理解 refresh() 与 input queue 的关系,此版起 refresh() 会无视输入缓冲区强制更新。 === 2008/01/08 03:00 後有效: (0.111) === 1. 修正 co-routine yield/resume 不正常的问题 === 2008/01/08 23:45 後有效: (0.112) 1. 修正 bbs.pause() 传回值,现在与 bbs.getch() 相同 2. 修正 bbs.color(): 无参数时等於 bbs.color(0) (重设颜色) === 2008/01/?? ??:?? 後有效: (0.113) === 1. 新增 toc.date === 未制定 API: 1. user store / global store (user.store.load/user.store.save) 2. TOC about dialogs 3. communiction api ---- 有兴趣的人就去P2研究看看吧! piaip 大师说只要有程式底子的都可以研究看看喔:) --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.211.94.214
1F:推 compbell:虽然跟C/C++没什麽关系 可是这东西好像很有趣XD 01/09 18:24
2F:推 revivalworld:看起来很有趣 01/09 19:39
3F:推 StubbornLin:看起来蛮有趣的 XD 01/09 19:43
4F:→ StubbornLin:我来改写我以前的贪吃蛇变成BBS Lua版好了 XD 01/09 19:55
5F:推 qazq:已经有人在 ptt2 的 BBSLua 板写好了 XD 01/09 20:01
6F:推 vizshala:比起bbs-lua lua本身的程式码更有趣 01/09 20:07
7F:→ vizshala:如何用c就可以完成一个脚本语言 这和本版比较有关 01/09 20:07
8F:推 StubbornLin:借转 GameDesign 01/09 21:16
-- VICTOR工作室 http://www.kinmen.info/vic/ 程式设计教学 http://victorlin.serveftp.org/programming/article/?article_id=2 --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 125.231.211.128
9F:推 asoedarren:lua是好物 01/09 21:40
10F:推 keitaandwing:lua是好物+1 01/09 21:52
11F:→ StubbornLin:BBS + Lua真的不错玩 XD 大家可以去玩玩看 01/09 21:58
12F:推 geken:学lua会不会很难? (没有lua的版...) 01/09 22:03
13F:推 HalfLucifer:推个Lua! 真的很赞 不会很难学喔 :D 01/09 22:15
14F:→ doomleika:露啊!(我只是路过) 01/09 22:50
15F:推 LPH66:如果有C的基础的话 www.lua.org的manual看过应该基本没问题 01/10 00:57







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:BabyMother站内搜寻

TOP