Skip to content

Commit 9db538d

Browse files
committed
Created wiki page through web user interface.
1 parent 1e056f9 commit 9db538d

File tree

1 file changed

+136
-0
lines changed

1 file changed

+136
-0
lines changed

wiki/BBSRubySyntax.wiki

Lines changed: 136 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,136 @@
1+
#labels Featured
2+
BBSRuby 版本 v0.2, API Interface: v0.111
3+
4+
Source Code下載:http://orez.us/~zero/BBSRuby.c
5+
6+
=== 為什麼開發 BBSRuby? ===
7+
8+
因為人家有 BBSLua (誤),其實只是想學學看怎麼把 Ruby interpreter 嵌入
9+
程式中。剛好人家有這麼棒的點子就拿來用囉XD 以前也曾想要寫 C# 的 BBS
10+
有一項功能就是用 C# 的 Runtime Compiler Service 弄 C# Script。
11+
12+
不過... 該計畫... 被放棄了(小聲) 所以算是實現當時的願望吧 (?) XD
13+
14+
=== 已知問題 ===
15+
16+
1. Hash.to_s() 不明原因出現 parameter error. @@
17+
18+
2. Ruby interpreter 有時候啟動時會顯示 parse 錯誤,可是重新再進入一次
19+
卻又可以正常執行。
20+
21+
=== 修改記錄 ===
22+
23+
v0.2
24+
1. 修正行號不會重新計算的問題,只要故意load一個空白檔案就可以了。 :P
25+
26+
v0.3
27+
1. 修正getch()對於特殊按鍵沒反應的問題
28+
29+
=== 如何撰寫 ===
30+
31+
BBSRuby大致上與BBSLua相容,不過依然有一些變動。
32+
如程式開頭結束皆使用###BBSRuby。 至於API的部份,BBSRuby將參考
33+
BBSLua API實做。以下將以BBSLua的API列表搭配說明/顏色指示支援狀態。
34+
原文作者為 piaip。
35+
36+
支援狀況: 不支援 部份實做 完全支援 BBSRuby專屬
37+
38+
TOC標籤:
39+
##Interface: BBS-Ruby API 版本號碼 (可方便系統警示不相容的訊息)
40+
##Title: 程式名稱
41+
##Notes: 程式說明
42+
##Author: 作者資訊
43+
##Version: 程式自訂的版號
44+
##Date: 最後修改日期
45+
46+
請注意 BBSRuby 的輔助函式以 "BBS." 不是 "bbs.",TOC存取方式也不同。
47+
48+
[輸出]
49+
bbs.addstr(str, ...) 畫字到目前位置
50+
目前請使用outs。視情況考慮是否 alias outs 過來。
51+
52+
bbs.outs(str, ...) 畫字到目前位置 (同 addstr)
53+
bbs.title(str) 移至左上角繪製標題
54+
bbs.print(str, ...) 印完所印字串後再加上一個換行
55+
print(str, ...) 同 bbs.print
56+
不支援STDOUT輸出。請使用bbs.outs / bbs.print。
57+
58+
* 全系列畫字函式都可以接受 ANSI 指令
59+
* 注意: 輸出並不會立刻反應在畫面上,要等 refresh()
60+
或其它輸入函式才會作全螢幕的更新。請見 refresh() 說明
61+
62+
bbs.vmsg(str) 顯示訊息提示框
63+
64+
[移動]
65+
bbs.getyx() 傳回游標目前位置 (y, x), y/x 由 (0,0)表左上角
66+
bbs.getmaxyx() 傳回目前螢幕大小 (my,mx), 實際可移動範圍到
67+
(my-1,mx-1)
68+
bbs.move(y,x) 移動到 (y,x) (也就是 ANSI 的 *[x;yH)
69+
bbs.moverel(dy,dx) 移動到游標目前位置加上 (dy,dx)
70+
71+
[清除]
72+
bbs.clear() 清除整個畫面+回到左上角
73+
bbs.clrtoeol() 清至行尾
74+
bbs.clrtobot() 清至螢幕底端
75+
76+
[2D繪圖]
77+
bbs.box(rows,cols,title) 以目前游標位置為起點,用目前色彩屬性繪製一個
78+
高度 rows 寬度 cols 的視窗。
79+
若有指定 title (可省略) 則會置中輸出字串
80+
81+
[更新畫面]
82+
bbs.refresh() 呼叫此命令時才會真的更新畫面
83+
(呼叫輸入等待指令如 getch/getstr/pause/
84+
kbhit/sleep/vmsg時也會自動更新)
85+
86+
[屬性]
87+
bbs.color(c1,c2,...) 切換 ANSI 屬性 (也就是 *[c1;c2;....m)
88+
不指定參數時 bbs.color() = *[m (重設屬性)
89+
bbs.setattr(c1,c2,...) 同 color()
90+
請使用color,未來視情況決定是否支援。
91+
92+
bbs.ANSI_COLOR(c1,...) 傳回 ANSI 屬性字串 (不馬上變屬性,要 outs 才會變)
93+
bbs.ANSI_RESET 傳回 *[m 字串
94+
bbs.ESC 傳回 ANSI 的 *
95+
96+
[輸入]
97+
bbs.getch() 輸入單鍵
98+
特殊按鍵為大寫名: UP DOWN LEFT RIGHT
99+
ENTER BS TAB HOME END INS DEL PGUP PGDN F1 ... F12
100+
另外與 Ctrl 合按的複合鍵會以 ^X 的形式出現。
101+
102+
bbs.getdata(n,echo) 畫 n 個字元的輸入框並輸入字串
103+
echo (可省略) = 0 時只輸入不畫字 (可作密碼輸入)
104+
bbs.getstr(n,echo) 同 getdata
105+
請使用 bbs.getdata。
106+
107+
bbs.pause(msg) 在底部畫暫停訊息並等輸入單鍵 (傳回值同 getch())
108+
109+
bbs.kbhit(wait) 傳回使用者是否有按鍵 (若無輸入則會等待最多 wait\0
110+
秒)
111+
bbs.kbreset() 清空輸入緩衝區 (吃掉所有已輸入的鍵)
112+
因為BBS I/O核心的關係暫時不支援。
113+
114+
[時間]
115+
bbs.time() 現在時間 (以數字表示),精準度到秒 (處理速度較快)
116+
bbs.now() 同 time()
117+
請使用 Ruby 內建的 Time.now
118+
119+
bbs.ctime() 現在時間 (以字串表示)
120+
請使用 Ruby 內建的 Time.now.to_s
121+
122+
bbs.clock() 高精準度的時間 (可到秒的小數點以下但速度較慢)
123+
bbs.sleep(sec) 停止執行 sec 秒 (可到小數點以下)
124+
請使用 Ruby 內建的 sleep。
125+
126+
[BBS 資訊]
127+
bbs.userid() 目前使用者的 id
128+
bbs.sitename BBS 站名
129+
bbs.interface BBSRuby API 版本號碼
130+
131+
[程式 TOC 資訊]
132+
bbs.toc["Title"] TOC 中的 Title: 資訊
133+
bbs.toc["Notes"] TOC 中的 Notes: 資訊
134+
bbs.toc["Author"] TOC 中的 Author: 資訊
135+
bbs.toc["Version"] TOC 中的 Version: 資訊
136+
bbs.toc["Date"] TOC 中的 Date: 資訊

0 commit comments

Comments
 (0)