你以為我在玩遊戲?其實我在學程式設計!

孤獨鍵客發表於2019-02-18


閱讀本文大概需要 1.8 分鐘。

 

作者 | 八知道也

 

前幾天休假的時候接觸了幾款挺有意思的小遊戲,寫出來安利一下,也許能搏同行一笑。

 

 

程式設計師升職記

 

 

《程式設計師升職記》是一款送給宅男們的智力遊戲。 在每一層,老闆都會派給你一份工作。你可以通過編寫小程式自動把工作搞定!一旦你成功了,恭喜!你升職了!

 

 

實際上這是一個非常不錯的程式設計啟蒙遊戲,指令集與彙編類似,作為一個沒有學過彙編的弱雞,這就是我的彙編基礎課啦:)

 

程式的關卡介面長這樣,一看就十分硬核,難度階梯型遞增:

 

簡單的加減乘除 -> 斐波那契 -> 去重排序, ......

 

 

隨便挑選一關進去瞅瞅,可以看到能利用的主要指令包括:

copyfrom, copyto, add, sub, bump+(相當於++),bump-(相當於--),jump/jump if zero/jump if negative等。和彙編比較類似。

 

我們能做的就是用拖拽的方式組合不同的處理步驟,左上角的小人會根據你的設計去讀取InBox的資料,藉助中間的地毯(記憶體)可用空間快取中間結果,輸出最終結果到OutBox中。

 

 

當組織好右邊的工作流之後,就可以按那個綠色的執行鍵進行測試,執行鍵左右兩個按鍵可以進行正逆方向的單步除錯,最右邊的滑塊可以用來控制是否快進。執行起來的效果如下圖所示,還是很可愛的。

 

 

即使最終通過了右上角上級的考核,也不代表你就完美過關了。

 

因為遊戲還會對你的程式碼長度和耗時進行評估,並且告訴你哪裡還有改進空間。

 

優化診斷和效率診斷有時候不可兼得,真是逼死強迫症啊。

 

後者更多時對程式設計的考驗,但前者有時難以捉摸,由於指令集有限,即使邏輯一樣,jump的時機不一樣會導致程式長度有那麼一兩行的差異,總之要達到前者請儘量複用程式碼。

 

 

遊戲還有一個個人欣賞的優點:支援答案以虛擬碼的形式匯入匯出,這個特性很體現程式設計師思維方式,非常有利於愛好者分享討論自己的解法,已經發現github上有人上傳了自己的解法大全,並有幾百個star。

 

 

7 Billion Humans

 

 

比較詳細介紹了上面那個遊戲,再簡短地介紹一下它的續作:7 Billion Humans

 

和前作最大的不同是移除了input和output,但是引入了並行,同步,隨機,變數,迴圈,條件判斷和更復雜高階的計算指令,難度比第一代有所上升,使得尋找同時滿足效率和長度的解法愈加困難,執行起來的效果也是更加忙碌。

 

 

以上游戲Steam均有銷售,支援Win和Mac,如有興趣,請儘量支援正版。

 

 

 

 

往期精彩回顧
 

相關文章