1. 什麼是 QKMJ? 你是否沒有機會和別人打麻將? 是否常為了打麻將輸錢而和朋友傷和氣? 麻將本是中國的國粹, 但常久以來一直為人所垢病的一點, 就是許多人將它拿 來做為賭錢的工具. 現在一個讓你了解自己麻將實力的機會來了. 透過網路麻將, 你可以隨時 和來自各地的好手較量, 根據自己的分數進而可知道自己的實力究竟如何. QKMJ 之中文名稱為網路休閒麻將, 這是一個 Clinet/Server 架構, 可以讓你在網路上和其它的使用者一起打麻將的程式. 2. 如何取得 QKMJ? 新版的 QKMJ 可在下面 ftp site 取得: ftp.csie.nctu.edu.tw:/pub/CSIE/contrib/qkmj QKMJ 目前支援許多不同的機器, 請依據你所使用的機器來決定要抓哪一個 執行檔. 例如你所使用的是 SunOS 的工作站, 那就抓 qkmj95h-sun 以下為一範例: ------------------------------------------------------------------------------. sywu@ccsun33:/u/gcp/84/sywu 408 >ftp ftp.csie.nctu.edu.tw Connected to ftp.csie.nctu.edu.tw. 220 ccsun42 FTP server (Version wu-2.4(3) Thu May 4 04:07:52 CST 1995) ready. Name (ftp.csie.nctu.edu.tw:sywu): ftp 331 Guest login ok, send your complete e-mail address as password. Password: 230 Guest login ok, access restrictions apply. ftp> cd pub/CSIE/contrib/qkmj 250 Change exactly to the directory "pub/CSIE/contrib/qkmj". ftp> dir 200 PORT command successful. 150 Opening ASCII mode data connection for /bin/ls. total 1646 -rwxr-xr-x 1 8372 400 221184 May 30 09:14 hkmj-sun -rw-r--r-- 1 8372 400 37086 Nov 15 01:53 mjgps.c -rw-r--r-- 1 8372 400 596 Nov 15 06:31 mjgps.doc -rw-r--r-- 1 8372 400 8642 May 9 1995 mjrec.c -rw-r--r-- 1 8372 400 6235 Nov 7 18:52 qkmj.doc -rw-r--r-- 1 8372 400 15923 Sep 7 06:47 qkmj.faq -rwxr-xr-x 1 8372 400 201972 Nov 7 18:52 qkmj95h-aix -rw-r--r-- 1 8372 400 161166 Nov 7 18:52 qkmj95h-freebsd -rw-r--r-- 1 8372 400 184320 Nov 7 18:52 qkmj95h-hp -rw-r--r-- 1 8372 400 200121 Nov 7 18:52 qkmj95h-linux -rw-r--r-- 1 8372 400 379025 Nov 7 18:52 qkmj95h-osfv2 -rwxr-xr-x 1 8372 400 188416 Nov 7 18:53 qkmj95h-sun 226 Transfer complete. 804 bytes received in 0.21 seconds (3.8 Kbytes/s) ftp> bin 200 Type set to I. ftp> get qkmj95h-sun 200 PORT command successful. 150 Opening BINARY mode data connection for qkmj95h-sun (188416 bytes). 226 Transfer complete. local: qkmj95h-sun remote: qkmj95h-sun 188416 bytes received in 11 seconds (16 Kbytes/s) ftp> quit 221 Goodbye. sywu@ccsun33:/u/gcp/84/sywu 409 >mv qkmj95h-sun qkmj sywu@ccsun33:/u/gcp/84/sywu 410 >chmod 755 qkmj sywu@ccsun33:/u/gcp/84/sywu 411 >qkmj ------------------------------------------------------------------------------. 3. 如何使用 QKMJ? 3.1 執行方式 使用時請打 "qkmj ", 不加後面參數代表使 用原來的設定. 例如: qkmj 就可連到目前 QKMJ 的主要 server. 3.2 要如何開始打牌? 在 QKMJ 中, 一定要湊足四人一桌才能開始打牌. 你要湊足一桌, 有以下兩種方式: 一、加入尚未湊滿四人的桌 你可以打 "/free" 查看目前網路上有哪些上未湊滿四人的桌, 找 到以後就可打 "/join <桌長名稱>" 來加入此桌. 二、自己開桌等別人加入 如果你找不到尚未湊滿四人的桌, 也可以打 "/serv" 自己開一桌 等別人加入. 此時你就是桌長, 擁有將此桌的使用者踢出去的權力. 在開桌時, 你可以用 /note <附註> 來設定這桌的公告, 讓別人 知道這桌的一些規定. 當你自己開桌之後, 就耐心的等待別人的加入. 如果目前上線的 人數有幾十個人的話, 通常很快就能湊滿一桌. 當一桌的人數湊滿四人之後, 畫面就會自動變成打牌模式. 在這個模 式下, 你可以用 鍵來切換要打牌或和別人交談. 輪到你打牌時, 你可以用方向鍵選擇自己所想打的牌, 再按 打出去. 或者你也可以按下那張牌的代號, 就直接打出去. 3.3 畫面說明 當你進入打牌畫面時, 你會看到畫面中央是每個人的牌, 下面是交談 視窗. 畫面的右上角有四個小欄位, 是目前圈風、門風、連莊數及目前離 海底還剩幾張牌. 右邊中間所表示的是每個人位置、代號以及他目前所擁 有的金額. 在莊家的名字右邊會有一個反白的 "莊", 代表他目前是莊家. 畫面右下角所顯示的是四家的相關位置, 你可以和上面的位置、代號 比對, 來找出誰坐在哪一邊. 在每家的旁邊還有顯示數字, 代表每個人打 牌所花的時間. 這個時間是輪到你打牌的時候才開始計算. 這樣大家在一 起打的時候, 就知道誰打的快, 誰打的慢了. 3.4 指令說明 指令列表請進 qkmj 後打 /help 查看 左右鍵或 ',' & '.' 選牌 切換對話或打牌 Ctrl-U 清除對話緩衝區 Ctrl-C 離開 Ctrl-L 重繪螢幕 (遇到畫面亂掉時使用) 上下鍵或 Ctrl-P,Ctrl-N 尋找以前用過的命令 Ctrl-A 跳到一行最前端 Ctrl-E 跳到一行最末端 右下角為每人打牌速度 遇到亂碼時請切換至另一畫面再切回來 3.5 進階使用說明 QKMJ 設定檔格式說明 這個檔案不是必要的, 但設定後會增加許多方便性. 請將這個檔案放在你的 HOME directory 下 檔名: .qkmjrc 範例: # ---------------------------------------------- # server 設定 qkmj server 的 ip 及 port server 140.113.209.32 7001 # ---------------------------------------------- # login 可設定你每次進入時的 id login candle # ---------------------------------------------- # password 如果設定,進入時會自動幫你輸入 password qkmj # ---------------------------------------------- # note 為當你開桌時的公告 note Welcome! # friend 為你的朋友名單, 一行只能設一人 friend candle # ---------------------------------------------- # beep 可設定各種不同情況是否要發聲 # 1: 吃、碰、槓、胡 # 2: 輪到自己摸牌或選擇吃、碰等 # 3: 訊息 # 4: 邀請 # 5: 其它 (按某鍵繼續時) beep 1 off beep 2 on beep 3 off beep 4 off beep 5 off # ---------------------------------------------- # color 可設定各種牌的顏色 # 可選擇的顏色如下: # 黑:BLACK 紅:RED 綠:GREEN 黃:YELLOW # 籃:BLUE 紫紅:MAGENTA 青:CYAN 白:WHITE # 可設定範圍如下: # 0: 牌底 # 1: 萬 # 2: 索 # 3: 筒 # 4: 風牌 # 5: 紅中、青發、白板 color 0 GREEN color 1 RED color 2 GREEN color 3 CYAN color 4 YELLOW color 5 MAGENTA # 此檔名為 .qkmjrc , 請放到你的 HOME directory 下 # ---------------------------------------------- # server 設定 qkmj server 的 ip 及 port #server 140.113.209.32 7001 # ---------------------------------------------- # login 可設定你每次進入時的 id login candle # ---------------------------------------------- # password 如果設定,進入時會自動幫你輸入 (此行可省略) #password qkmj # ---------------------------------------------- # note 為當你開桌時的公告 note Welcome! # friend 為你的朋友名單, 一行只能設一人 friend candle # ---------------------------------------------- # beep 可設定各種不同情況是否要發聲 # 1: 吃、碰、槓、胡 # 2: 輪到自己摸牌或選擇吃、碰等 # 3: 訊息 # 4: 邀請 # 5: 其它 (按某鍵繼續時) beep 1 off beep 2 on beep 3 on beep 4 on beep 5 on # ---------------------------------------------- # color 可設定各種牌的顏色 # 可選擇的顏色如下: # 黑:BLACK 紅:RED 綠:GREEN 黃:YELLOW # 籃:BLUE 紫紅:MAGENTA 青:CYAN 白:WHITE # 可設定範圍如下: # 0: 牌底 # 1: 萬 # 2: 索 # 3: 筒 # 4: 風牌 # 5: 紅中、青發、白板 color 0 GREEN color 1 RED color 2 GREEN color 3 CYAN color 4 YELLOW color 5 MAGENTA #Function key F1 /friend F2 /player F3 /table F4 /free 4. 常見問題之解答 4.1 關於 QKMJ 安裝及連線的問題 □ 4.1.1 檔案抓下來後怎麼不能執行? 請確定你是否做到以下三點: (可參考前面第二部份的範例) (1) 確定所抓的執行檔和你所使用的機器是否相符 (2) 在抓檔案前先下 "binary" 指令, 表示用 binary 方式傳檔 (3) 抓回後記得用 "chmod 755 <檔名>" 來將其轉為可執行的狀態 如果你沒有設 "." 這個 path, 執行的時候會有 "command not found" 的錯誤訊息. 這時請在 ".cshrc" 或 ".login" 中加入 "." 這個 path, 先 logout 再 login 一次, 然後再執行 qkmj 就可以了. 要是你覺得麻煩, 那也可以每次都打 "./qkmj 140.113.209.32 7002" , 一樣可以執行. □ 4.1.2 我用 modem 上線, 畫面會亂掉, 鍵盤也有問題? Modem 的使用者請在連線前先打 "set term=vt102" 設定你的終 端機型態, 這樣應該畫面就不會亂掉了. 在打牌的時候, 方向鍵可能不能正常運作, 這時你可以改用 ',' 及 '.' 來取代左右鍵, Ctrl-P 及 Ctrl-N 來取代上下鍵. 或是直接 輸入代號來選擇你所要打的牌. □ 4.1.3 我沒有工作站的帳號, 要如何玩 QKMJ? 某些 bbs 有提供 QKMJ 的連線服務, 以下為其列表 直接連線之站: plasma.dorm12.nctu.edu.tw login: qkmj imux123.mgt.ncu.edu.tw login: guest moon.m19.thu.edu.tw login: qkmj eespcc.ncku.edu.tw login: qkmj BBS 站: eden.ee.nctu.edu.tw bbs.me.nctu.edu.tw bbs.nova.math.ncu.edu.tw jardin.pine.ncu.edu.tw bbs.nhctc.edu.tw bbs.sparc1.nhltc.edu.tw bbs.yuntech.edu.tw carbon.ch.ncku.edu.tw mm.ee.nchu.edu.tw eeptn04.ncku.edu.tw snow.ice.ntnu.edu.tw ug.ee.tku.edu.tw 140.130.1.8 140.138.246.113 163.18.1.4 □ 4.1.4 為何連不上 server? 通常連不上 server 有兩個原因. 如果你執行 QKMJ 後發現就當在那裡, 這表示你這臺機器和 server 之間的網路斷了. 這時只好慢慢等網路恢復. 如果執行後馬上就跳出來, 告訴你無法連往 server, 那很可 能是 server 那臺機器因為某些原因當機或 reboot, 這時就要等 QKMJ server 重新執行. QKMJ server 每個小時都會檢查一次是 否還在運作. 所以如果你遇到這種情形, 等一段時間應該就可以 連上了. □ 4.1.5 為什麼我打 "telnet 140.113.209.32 7001" 沒有反應? QKMJ 是一個 client/server 的程式, 也就是說, 你必須抓取 QKMJ 的 client 程式, 透過這個程式來和 server 溝通, 不能像 MUD 那樣直接就連往 server. □ 4.1.5 要如何註冊? 當你進去 QKMJ 之後, 首先輸入你的名稱. 這時候系統會檢查 你的名稱是否在資料庫中. 如果找不到, 就會認為你是新的使用者, 要你輸入所想要的密碼. 這樣就算完成註冊了. 如果你是第一次上 QKMJ, 系統就問你密碼, 那表示這個帳號已 經有人用了, 請你換一個名稱. 4.2 關於 QKMJ 系統的問題 □ 4.2.1 為什麼我無法使用中文? 無法使用中文分為兩種狀況, 一種是不能看也不能寫, 一種是只能看 不能寫. 如果是第一種狀況, 你必須先安裝中文系統, 然後再用支援中文的連 線程式. 一般人比較常遇到的是可以看到中文, 可是交談的時候卻打不出中文. 請你在執行 QKMJ 時, 先打 "stty pass8", 這樣應該就可以輸入中文了. □ 4.2.2 為什麼我的錢都不見了? 如果不是有人用你的帳號送錢(賺錢), 那就是 QKMJ 系統的 bug 了! 如果你發現辛苦賺來的錢都不見了, 而且是 bug 所造成的, 那你可以 mail 給作者, 幫你把錢加回來. □ 4.2.3 玩到一半突然當掉 先看看是不是網路的問題, 許多時候其實只不過網路暫時斷線而已. □ 4.2.4 方向鍵不聽使喚 這有可能是你用 modem 上線, 也可能是某些機器版本的 QKMJ 在方向 鍵的處理上有問題. 遇到這種情形, 你可以參考 4.1.2 有關鍵盤的部份, 教你如何用別的鍵來取代. □ 4.2.5 畫面出現亂碼怎麼辦? 如果你玩到一半發現畫面有一兩個字出現亂碼, 在倚天系統下你可 以先按 Ctrl-Esc 切回英文模式, 再按一次切回中文, 應該就可以了. 如果是玩到一半畫面受到別人 talk 或 write 訊息的影響, 可以按 Ctrl-L 重繪螢幕, 只是這樣會讓原有的彩色暫時失去. □ 4.2.6 為什麼我的牌看不到彩色? 如果你是在工作站使用 CXterm, 應該就看不到彩色. 這時你可以去 找找看有沒有彩色版的 CXterm. 在 PC 用 NCSA 連上來如果沒有彩色, 可能是你的 ansi driver 沒有 掛. 請你在 DOS 的 config.sys 加入 ansi 的 driver. □ 4.2.7 有時一桌會有五人? 這是系統的 bug, 發生這種情形的時候, 大家可以全部都離開, 再重 新開桌加入. □ 4.2.8 速度為什麼這麼慢? 當桌長開桌, 大家加入這桌打牌時, 所有打牌及交談的訊息, 都轉由 桌長來處理. 因此, 如果桌長來自網路較慢的地方, 那大家打牌及交談的 速度也會跟著變慢. 因此如果你希望大家打牌的速度都很快, 可以找連線 速度較快的桌加入. □ 4.2.9 為什麼我有時後會被踢出系統? 如果你所來自的機器和 server 之間的網路很慢 (美國、大陸...), 就會發生這種狀況. 解決的方法是使用當地的 QKMJ server. 目前在 美國、大陸、香港都設有 QKMJ server, 歡迎當地的使用者使用. 4.3 打牌時所遇到的問題 □ 4.3.1 要如何暗槓? 如果你剛發完牌就有四張相同的牌, 或是你隨時想要槓牌時, 可以 按 '3' 跳到右邊的選擇區域, 然後再按 3 或是 space 或 enter 確定. □ 4.3.2 要如何立直 當你摸到一張牌, 而打出一張牌就可以聽牌的時候, 請你按 '5', 然後打出一張你不要的牌, 如果牌的前面出現一條紅色的立直棒, 就 代表你已經立直了. 這時系統會自動幫你摸牌、打牌, 直到你可以胡 為止. □ 4.3.3 為什麼有時候應該可以胡, 可是系統卻不讓我胡? 這是因為過水的關係. 如果在這一圈中你曾經可以胡而不胡, 那麼, 在你打出一張牌之前, 你都不能再胡. 另外, 立直後不能過水, 如果過水的話, 以後就都不能胡了. 5. QKMJ 所有胡牌牌型及台數 和局種類: 海底流局 四風連和 四槓和 一炮三響 九么九和 胡牌種類及台數: 莊家 一台 門清 一台 自摸 一台 斷么九 一台 立直 一台 一盃口 一台 槓上開花 一台 海底摸月 一台 河底撈魚 一台 搶槓 一台 東風 一台 南風 一台 西風 一台 北風 一台 紅中 一台 白板 一台 青發 一台 花牌 一台 東風東 二台 西風西 二台 南風南 二台 北風北 二台 春夏秋東 二台 梅蘭菊竹 二台 全求人 二台 平胡 二台 混全帶么 二台 (破壞門清時一台) 三色同順 二台 (破壞門清時一台) 三色同刻 二台 (破壞門清時一台) 一條龍 二台 (破壞門清時一台) 二盃口 二台 三暗刻 二台 三槓子 二台 門清自摸 三台 碰碰胡 四台 混一色 四台 純全帶么 四台 混老頭 四台 小三元 四台 四暗刻 六台 四槓子 六台 大三元 八台 小四喜 八台 清一色 八台 字一色 八台 七搶一 八台 五暗刻 八台 清老頭 八台 天聽 八台 大四喜 十六台 八仙過海 十六台 天胡 十六台 地胡 十六台 人胡 十六台 連 n 拉 n n*2台 6. QKMJ server 之架設 如果你希望能自己架一個 QKMJ server, 可以到存放 QKMJ 的 ftp site 抓取 mjgps.c, 這是 QKMJ server 的原始碼. 這個原始碼目前是對 SunOS 工 作站設計的, 如果你所使用的機器是 Linux 或其它機種, 執行起來可能會有問 題. 當然, 如果你會寫程式的話, 或許可以自己改善這個問題. 然後再抓 mjrec.c, 這個檔案是用來維護 QKMJ 計錄檔的, 可以查詢、修改、刪除每個人 的資料. 這個 mjgps.c 是針對 SunOS 寫的, 所以如果你是用其它的機器, 可能會 遇到一些問題. 目前暫時沒有出其它機器的版本. 抓回 mjgps.c 之後, 首先將其編譯成可執行檔. 編譯方式如下: cc mjgps.c -o mjgps -lresolv cc mjrec.c -o mjrec 執行方式: 請先切換到你所要使用的目錄再執行 mjgps & ( & 代表放到背景中執行) 相關檔案: qkmj.inx : qkmj 的索引檔 qkmj.rec : qkmj 的計錄檔 news.txt : 一開始進去時的公布事項 你可以自己編輯這個檔案, 來顯示一進去時所要顯示的訊息 server.lst: 人數超過上限時所列出的 server 選項 (上限為 240 人) baduser.txt: 限制使用者進入之列表 (針對使用者的 e-mail address) 範例: (請從第一個字開始寫, 前面請不要留空白) sywu@ccsun3.csie.nctu.edu.tw <--- 限制此機器此使用者進入 guest <--- 限制所有 username 為 guest 的人進入 mjrec.c 之使用方式: 只要在同一個目錄下打 "mjrec" 就可以了. 然後輸入你要的選項. 如果 輸入的數字小於 0, 就會跳回前一個選項. 這個程式寫得很簡陋, 你可以依據自己的需要來增加新功能. 有時 qkmj.inx 會和 qkmj.rec 有不對應的 bug, 那你執行一下 "重建 index 檔", 應該就可以解決了. 7. QKMJ 使用規範 □ 請在開桌前使用 /note 公告這桌的一些說明. □ 加入一桌後, 請至少玩一圈, 等每個人都當過莊家後再離開. □ 如果有事要離開, 請事先聲明, 切勿直接 /quit. □ 遇到有人連莊, 最好不要胡莊家以外的人. □ 使用 modem,bbs, 或是一些來自網路比較慢的使用者, 請不要 加入速度較快的桌. □ 不可一人在同一桌開兩個以上的視窗同時打牌 (不同桌沒有關係). □ 原則上一人使用一個帳號, 請勿隨意申請, 以免增加 server 負擔. 8. 感謝錄 感謝 葉義雄老師 對 QKMJ 的支持與鼓勵 感謝 陳紹俊 (PowerBBS 作者) 對 QKMJ 之技術支援 感謝 黃彬先 對此程式架構、畫面設計之建議與測試 (QKMJ 這個名字是他 建議的) 感謝 張立璿、黃正志 對於 QKMJ 多方面的幫忙與鼓勵 感謝 吳軒豪 對 QKMJ 的鼓勵與建議 感謝 交大資工系統管理者忍受 QKMJ 在測試時所帶來的許多麻煩, 並提供 QKMJ server 之使用環境 感謝 Franklin 對 QKMJ 提出許多 Bug 及建議, 以供改進 感謝 Charles Chiou 將 QKMJ 推廣至美國 還有許多其他該感謝的人, 無法全部列出, 在此僅向這些人及所有 QKMJ 的 使用者致最高的謝意. 9. 關於作者 QKMJ 是我大學三、四年級的專題. 當初之所以會寫這個程式, 是覺得為什麼 網路上有橋牌、象棋、圍棋等程式, 卻沒有人寫個網路麻將. 因此就興起了發展 此程式的念頭. 程式開始寫的時候, 也遇到了不少的問題. 像是用文字模式要如何完整的把 資訊呈現在畫面上, 關於畫面的設計, 是經過一次又一次的修改與設計才完成的. 還有一個就是要如何在網路上解決吃、碰的問題. 因為每個人打牌的速度不一樣, 網路速度也有快有慢, 無法做到像真正的打牌一樣吃、碰完全都由自己來決定. 因 此在 QKMJ 中的設計是交由電腦判斷, 再讓玩家選則是否要吃、碰. 我目前唸的是交大資訊工程所, 因為研究所的事情比較多, 所以可能沒辦法花 太多的時間繼續發展新的版本. 不過有時間當然還是會慢慢去做的. 吳先祐 sywu@csie.nctu.edu.tw