Skip to main content

· 4 min read

在十六世紀,民眾把不可知的一切都歸於上帝的旨意。 為什麼榖物收成不好?都是上帝的旨意。 為什麼會發生大地震?都是上帝的旨意。 為什麼天體如此運行?都是上帝的旨意。 但是到了啟蒙時代,物理、化學、生物等開始發展,人類開始針對宇宙萬象尋求科學上的解釋。 這並不是說,人們都變成了無神論者,而是人類對於宇宙運行的方式,有了更深的理解。 -- 從 A 到 A+

同樣的,當我們不去研究任何方便功能其背後的運作機制,而是直接將之歸因於「動態語言」或「框架」所提供的方便性時,我們和十六世紀的民眾其實沒有什麼差別,等於承認自己的無知。

每次我們兩手一攤,說:「答案一定是語言或框架做的手腳了!」我們等於放棄了以科學方式探討原因的機會。

正因為只要生活過得好,我們就心滿意足,所以很少人擁有無與倫比的人生經歷。 -- 從 A 到 A+

朋友對上面的話提出質疑:瞭解「動態語言」或「框架」背後的機制當然是不錯,但並不是那麼必要。因為就算不懂怎麼製造,還是可以把高階語言把玩的很好。 對軟體工程師來說,比較直覺的學習順序,應該是熟悉這些外功後,理解到有些不足,才會去想辦法補足內功的部份。

我說:就如同在古代人們不知道為什麼天空會降下雨的時候,還是可以先學會蓋房子避雨。有了房子的遮蔽,感到安全的人們,又可以騰出心力來探究天空為什麼會降雨的問題。 了解「動態語言」或「框架」,行有餘力時也去了解「動態語言」或「框架」背後的機制,也許也可以讓我們寫出更好的程式碼。

弄出天氣預報的人,永遠不會是眼光停留在遮風避雨階段的人,或是想著將遮雨的房子蓋的又大又舒服的人(這只是種選擇,無關於好或不好)。這大概就是「從 A 到 A+」一書所說的「優秀是卓越之敵」的理念吧。

· One min read

程式又短又簡單,那就是美麗,原因有很多。 也許最重要的就是易於理解,而理解程式比撰寫程式更為困難。 沒有什麼地方可以躲藏。 此外,程式緊湊,對指令集,I-cache 及 JIT 編譯器而言,也會配合得比較好,因此跑得比較快。 -- 美麗程式

· 5 min read

TextRPG 是我最近找到的一個好玩 python 模組,由德國人開發。 作用就是用來寫一個純文字的冒險遊戲。 目前的版本已包含了 RPG 中常見的對話、戰鬥等元素,整個遊戲可以完全由一個 python 腳本來構成。

因為實在太簡單了,所以來個五分鐘上手文好了:)

1. 安裝軟體

安裝好 Python 與 easy_install 模組後,接著安裝周蟒與 TextRPG

$ easy_install zhpy $ easy_install textrpg

如此安裝好後就可以開始寫 RPG 了。

2. 準備環境

新建一個檔案夾,首先,用文字編輯器新增一個 rpg.ini 檔案,裡面內容如下:

[charactor] 角色 = Char 樣板 = template 名字 = name 姓名 = name 說 = say 詢問 = ask 動作 = act 行動 = act 比較技能 = compete_skill 取得經驗值 = get_exp 生命力 = bTP 生命值 ==TP 攻擊力 = attack 武器 = weapon 防具 = armor 傷害 = wounds 活著 = active [story] 故事 = story 儲存 = save 給予經驗值 = give_exp 戰鬥 = battle 對話 = diag 將這個檔案儲存起來。接著開啟適當的 python 程式編輯器新建一個任意檔名的檔案 (範例裡將檔案取名為 HelloRPG.twpy)

在檔案開頭加入三行敘述:

#!/usr/bin/env python

encoding: utf-8

from rpg_lib.textrpg import * 好了,我們環境已經準備好了。

3. 撰寫故事

因為用 TextRPG 寫故事太容易了,這就編一個大雄大戰小叮噹的故事:

#!/usr/bin/env python

encoding: utf-8

from rpg_lib.textrpg import *

大雄 = 角色 () 大雄。名字 ="大雄"

小叮噹 = 角色 () 小叮噹。名字 ="小叮噹"

故事 ("""大雄哭著跑進房間""")

大雄。說 ("""嗚嗚~~小叮噹,技安跟阿福欺負我""") 小叮噹。說 ("""口胡,大雄我受夠你了,來戰吧!""")

大雄。攻擊力 = 3 小叮噹。攻擊力 = 90

大雄。動作 ("""大驚失色,狼狽逃竄""") 大雄。說 ("""小叮噹,你發什麼瘋!""")

勝利 = 小叮噹。戰鬥 (大雄) 如果 勝利: __故事 ("""小叮噹打敗了大雄,從此過上清靜的日子""") 否則: __大雄。動作 ("從如廢墟般的房間中爬起") __大雄。說 ("""呼呼,我還是贏了""") __故事 ("""大雄打敗了小叮噹,從此作者掰不下去封筆了。""")

註:上面程式範例中的 "____" 代表 4 個空格。用空格來表示程式邏輯區塊是 python 的語法。

好了,我們寫好了故事,接著就是將這個檔案儲存起來。 檔案儲存好之後,我們打開 command line 程式,開始執行這個遊戲:

$ zhpy HelloRPG.twpy 大雄哭著跑進房間 大雄:嗚嗚~~小叮噹,技安跟阿福欺負我 小叮噹:口胡,大雄我受夠你了,來戰吧! 大雄 大驚失色,狼狽逃竄 大雄:小叮噹,你發什麼瘋!

---battle-stats for 小叮噹 --- .... ---/battle-stats---

大雄 comes closer. 小叮噹: Do you want to attack 大雄?(Yes, no) Yes You attack 大雄. 小叮噹: How do you want to fight? (Usual, defensive, target head) Usual

You won this round. 大雄 took 80 points of damage and a critical wound.

小叮噹打敗了大雄,從此過上清靜的日子