你的名字——一個Golang小遊戲
GIF
Jeremyyip的Go語言學習系列
你的名字 —— 一個golang小遊戲
前言
1. 基於Go語言並發功能開發的一個簡單小遊戲。
2. 使用開源包工具cli,借用其框架,實現命令行輸入功能。
3. 小遊戲緩解壓力。
遊戲簡介(應用說明)
開始遊戲輸入操作參數p ,角色1名字,角色2名字,按下回車,即可遊戲;即 -o p -n1 Jeremy -n2 boss ,其中操作數-o的參數是p,角色1名字-n1的是jeremy,角色2名字的是boss;
角色的血量初始值是20,可以通過參數 -hp1 修改角色1的血量,-hp2修改角色2的血量;
每一個回合角色輪流使出技能,對於降低對方的血量,回合結束後計算血量;
遊戲中存在「秘籍」的突發特殊情況,有意想不到的效果;
某角色將對方的血量先到0了,則為該角色勝利,遊戲結束;
更多遊戲幫助可使用參數 -h 來獲取;
遊戲過程如圖:
GIF
過程圖
屏幕截圖
代碼要點
偽隨機演算法生產的隨機數,需要不同種子seed,否則會生產相同的隨機數序列。(即遊戲中隨機產生的「技能」,若固定種子seed不變的話,則每次運行程序都是相同的隨機數列,遊戲中使出的「技能」次序每次都一樣。)
利用無緩衝通道channel的特性,使得兩個並發程序之間由通道阻塞等候,保證同時交換數據。(即體現在於遊戲的輪詢交替回合制)
fmt函數的對其列印格式調整(遊戲的結果輸出格式對齊)
cli庫的應用及理解(遊戲的參數輸入,參數幫助提示)
關於對sync.WaitGroup的實例以閉包方式來調用到函數里的思考×
在設計層面來看,熟悉代碼語句使用
代碼流程圖
yournameGame流程圖
源碼
結語的話
目前代碼還有可以擴展的功能,但是作為前期功能已經基本滿足了。
從想到修改這個程序,到最後的文章的發布過程中,我還經歷了兩台計算機之間的操作,後來發現在linux操作系統里進行文章編輯其實也很舒服的,因為我把圖文製作的實現在網頁上的工具來實現的。這幾乎跟電腦沒關,即與軟體還是硬體都沒有關係。
記得在一書中有提過,未來的計算機發展,軟體想打破微軟和英特爾之間的壟斷的一種方式,是軟體的網頁化,利用網路,這樣用戶就能忽略操作系統以及硬體上的限制。而在目前,就文字編輯和動圖製作,網頁工具應用確實不錯!(如題圖那張P圖)這個過程中我用的都是比較舒心的! :)
TAG:硬體工程師的自我修養 |