2014年10月7日 星期二

[game] - 文字大富翁

在被眾多的小括號折磨之後, 來點輕鬆有趣的東西, 談談電腦遊戲 - 大富翁。在這篇 [問題] 自製程式,幫忙Debug 給點意見~~~~ 看到了這個文字大富翁的遊戲, 喚起了我心中的大富翁之魂。

我玩的第一個電腦遊戲當然不是大富翁, 但是將我帶入電腦遊戲大門的是大宇的大富翁 II, 兩張 1.2 磁片的容量, 單純的畫面, 簡單的操作方法 (按 enter 就好), 卻能讓我沉迷其中, 我就這樣按下了上百次的 enter。雖然我現在是個寫程式的, 但卻從來沒想過要寫個大富翁遊戲。因為我把它想得太難了, 光是畫面處理, 就得花上不少功夫, 卻從了沒想過用文字模式來代替, 虧我還那麼喜歡文字模式的程式。

這篇文章的作者完成了一個文字大富翁 (for windows), 這是他做的遊戲回報網址: https://docs.google.com/forms/d/1U4S1lbNEr_kksr9GxAaGJWq_9zzyJrubXRDQq4b_ZoY/viewform

當時版上一群人積極的向原作者提供意見時, 我則更積極地向原作者詢問原始碼, 感謝原作者的大方, 我拿到 source code 了。我好想贏韓國 (我想贏日本)要在 linux 上玩這個遊戲, 藉由之前的 ncurses 的經驗, 我想用 ncurses 移植這個遊戲。

這個遊戲很完整, 幾乎滿足所有遊戲元素:
  • 可以存檔
  • 音樂播放
  • 可以自己編輯地圖檔
  • 有個 windows 安裝檔

以下是遊戲內附的說明檔案, 可以看出他們的辛苦。

ReadMe.txt
NHSH 25th Information Class Results Published Works
內湖高中25屆高瞻資訊班成果發表作品
Rich (Monopoly) final version
大富翁 最終版
--------------------------------------------------------------
開發人員 Developer
--------------------------------------------------------------
建立者 Founders / 設計者 Designers

黃彥凱 Huang Yan-Kai
蔡士寬 Cai Shi-Kuan
江村志 Jiang Cun-Zhu
曾家暉 Zeng Gu-Hui
洪宜昌 Hong Yi-Chang
--------------------------------------------------------------
<更新歷史>
Ver1.5.0
-歡迎頁建立
-功能初定
-選單建立(可上下選擇)
-工作人員名單建立
-字體背景顏色更改
-最高分數建立
Ver1.5.1
-顯示內容檔案化
-選單新增說明
-重複程式碼模組化
-歡迎頁顏色bug修復
Ver 1.6.0
-新增未完成頁
-新增玩家人數頁
-新增電腦人數頁
-新增起始金額頁
-新增地圖選單頁
-小BUG修正
-執行檔ICON修改
Ver 3.0.0
-新增背景音樂(暫定)
-新增地圖(高校時代)
-新增玩家名稱設定頁
-新增骰子功能(可設定單/雙顆)
-新增角色狀態功能
-最高分數修改為破關記錄
-限制最多人數為五
-新增角色移動功能
-新增電腦角色自動擲骰功能
-連結骰子與角色移動功能
-小BUG修正
Ver 3.0.1
-角色狀態看板BUG修正
-Unistall功能修正
Ver 3.1.0
-看板BUG修正
-移動功能BUG修正
-修改擲骰方式(降低電腦資源消耗)
-更換背景音樂
-新增遊戲按鍵功能說明(遊戲頁面)
-新增遊戲暫停功能(遊戲頁面)
-遊戲讀取頁(可選擇)
-按鍵(END)對應BUG修復
-視窗大小調整
Ver 3.3.0
-背景音樂微調/EQ效果
-遊戲存檔/讀取功能完成
-新增獲勝模式選項
-遊戲頁新增"結束遊戲"鍵
-小BUG修正
Ver 3.6.0
-新增上看版
-獲勝模式完成
-獲勝判定功能完成
-破關記錄功能完成
-小BUG修正
-版本號(Ver) 命名方式修改
-遊戲畫面排版調整
-新增背景音樂暫停功能(F12)
Ver 3.6.1
-破關記錄頁新增清除功能
-小BUG修復
Ver 4.5.0
-小BUG修復
Ver 8.3.0
-修復 上看板(topShow) 骰子(dice) Bug
Ver 8.6.0
-功能整合完成
Ver 9.0.0
-多項功能新增
-BUG修復
Ver 9.6.1
- Fixed many bugs
- Added the "Tip Kanban"
- Added "Around the world" map
- Changed the Welcome Page
- Changed the Winner Page
Ver 10.1.0
- Fixed bugs
- Background reput

我做的工作:

  • 將 windows 檔案格式轉為 unix 格式。
  • 將 big5 轉為 utf8 編碼。
  • 重畫地圖檔。
  • 將 c 修改為 c++ (請不用擔心, 這是長的很像 c 的 c++ 程式)
  • 使用 ncurses
花了幾天時間終於勉強可以執行在 linux 上。

linux 遊戲畫面


目前已經移植了 95% 的功能, 放在 https://bitbucket.org/dsung/ascii_rich, 內湖高中的同學們, 感謝你們, 也希望有興趣的朋友可以一起來改進這遊戲。讓我們一起來按下 ENTER。

我有使用 PDCurses for Windows 移植回 windows, 不過 windows xp console 無法秀出 utf8 中文, 花了一點時間尋找後 ... 我放棄了。

不要覺得這個遊戲很簡單, 你可以自己試試看, 要完成到這樣的程度要花上多少心血, 我只不過是做做移植的工作就覺得辛苦, 可以想見他們的努力是多麼的深入, 別花太多時在軟體方法論, design pattern 上, 把時間花在寫程式上, 程式一旦完成, 比朗朗上口那些名詞更有成就感。

你也許會覺得程式中 call 了 main() 很奇怪, 對, 就是那個 c 進入點 main function, 但我覺得這是一種不被侷限的想法, 是一種創意的思考, 沒有 call main 之前, 你怎麼知道不能 call 呢? 有時候只是我們自己限制住了自己, 試著突破自己的固有思維 (怎麼變成勵志文章了)。

看看這篇, 用C設計,用C++編碼 有時候我們真的想太多東西了, 考慮這, 考慮那, 尤其你知道越多, 就想的越多, 這個程式只要會 loop, if, 開關檔案, windows console 操作 (這應該是這程式最困難的知識), 就可以寫出來了, 不需要精妙的設計或是 design pattern (請不要解釋成我認為這不重要)

看到這個文字模式大富翁, 讓我興起了文字小瑪莉, 可以用 77 代表那 77 圖示, 用 ** 代表星星圖示, BAR 就 BAR; 或是文字水果盤, 以 777 代替那個 777 圖示, 這都是我當初喜歡的遊戲, 應該可以順利完成吧, 應該 ... 我改天應該來介紹一下 ncurses, 推廣一下文字模式的介面開發方式。

1 則留言:

使用 google 的 reCAPTCHA 驗證碼, 總算可以輕鬆留言了。

我實在受不了 spam 了, 又不想讓大家的眼睛花掉, 只好放棄匿名留言。這是沒辦法中的辦法了。留言的朋友需要有 google 帳號。