不是你想的那樣:一個攻擊網站的程式

這節課我們來試試開發一個簡單的命令行小遊戲,來完整的體驗一次所謂的“開發過程”。

遊戲設定是這樣的:

這是一種棋盤類游戲,我們來猜測敵人戰艦的位置,只要命中數發就可以擊沉它們。

我們給這些戰艦貼點標籤……比如各種網站吧?所以,這就成了一個攻擊網站的程序……捂臉。

遊戲目標

我們要玩家以最少的次數攻擊網站,把它擊垮。然後我們根據玩家的猜測次數來進行評分。

大致設計

我們畫一個7*7的網格來代表棋盤,然後在網格上安排隨即的三個網站,每個網站佔連續的三格,然後要求玩家猜測網站的坐標。

由於我們暫時不接觸圖形設計,所以我們要求用戶輸入比如說 A5這樣的坐標,我們用字母代表縱坐標,數字代表橫坐標。然後我們設定三種狀態,分別是“沒打中”、“打中!”以及“幹掉它了!”

當玩家全部幹掉棋盤上的網站,我們就計算玩家的得分情況。

遊戲設計
遊戲設計

遊戲的流程圖設計

我們需要類和方法來搞定這個遊戲,但是具體都要哪些方法哪些類?恐怕在這之前我們還得先理順一下游戲的流程問題:

遊戲流程圖
遊戲流程圖

好吧,我瞎划拉的東西實在是太讓人難以讀懂了,不過沒關係,請領會精神。

第一個版本

看來我們可以使用 Game 和 WebSite 兩個類。首先,我們先來個簡單一點的,我們只用一維地圖,也就是在一個長條裡猜網站的位置——這樣更易於理解和實現,現在我們嘗試用偽代碼來寫出這個程序。

什麼是偽代碼?

偽代碼不是代碼,它是你用更接近自然的語言描述出來的代碼模型,用來測試最簡單的邏輯實現——在這個過程當中我們除了專注於設計本身外,也進一步注重了邏輯框架——但又避免了編程語言本身的語法困擾,讓表達更加自然和迅速。

這裡我們貼出一個偽代碼的手寫版本栗子給你:

偽代碼
偽代碼

下面我們再來一個用於輔助遊戲主體的類:

最後,雖然我們說要盡量遠離 main 文件,但這次為了方便,我們還是把遊戲運行直接寫在了入口裡:

好吧我承認WebSite 類並不是完全寫出來的,因為屏幕要截圖,篇幅等問題我只是寫了自​​檢這一個方法,不過沒關係,主要在於讓你領會寫偽代碼這個過程。

根據偽代碼寫出真正的代碼

好了,再三演算了偽代碼的邏輯過程,確定沒有什麼問題之後,就可以用真正的代碼來實現它了:

遊戲執行過程
遊戲執行過程

由於沒有 GUI 界面,所以看起來也不會怎麼高大上……但我們通過這個簡單的版本走了一遍完整的開發流程。

記住:

在實際開發當中,你寫好的偽代碼是什麼樣子,那麼就要把代碼寫成什麼樣子——我相信你的靈光乍現絕對值得關注——但你還是找個小本子先寫下來為妙。如果你真的順手就在你的代碼裡增加了其他並沒有預計的功能,那最終實現出來的代碼可能就有了奇奇怪怪的 bug。

所以說,一步一個腳印——先寫出偽代碼的實現,原始目的達成,再進行下一步——添加更多一個新功能……這樣會讓你的代碼健壯很多。

由...出版 R0uter

如非聲明,本人所著文章均為原創手打,轉載請註明本頁面鏈接和我的名字。

加入對話

1 評論

您的電子郵件地址不會被公開. 必填字段標 *