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

孤獨鍵客發表於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,如有興趣,請儘量支援正版。





往期精彩回顧


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69902700/viewspace-2636231/,如需轉載,請註明出處,否則將追究法律責任。

相關文章