正經人學編程誰還苦苦敲程式碼啊?原來學編程還可以用打遊戲的方式【乾貨分享】

不知道你們學編程的時候有沒有過這些感受:

  • 想玩遊戲,但不學習又過意不去
  • 背了很多語法,很快就忘得差不多了
  • 看影片、書籍都看得懂,但一動手就不知所措
  • 堅持了很久,但還是學得很飄,自己寫項目總是很難完成
  • 別人看來寫程式碼很高級,但自己寫的時候其實很枯燥
  • 越學到後面,越感覺編程好難,幾度想放棄
  • 想找點項目來練手,又不知道什麼項目適合
  • ……

 

我以前手底下有個小夥子,他也是這樣的,但他還是一路走過來了,技術而且還不錯,最讓人大開眼界的點就是,他跟別人學編程的方式不太一樣,他邊玩遊戲邊學編程。據他所說,這種學習方式的好處就在於有趣+實戰+挑戰性,他這些年也一直保持著這種玩遊戲學編程的方式,既能溫故知新,又能鍛煉寫程式碼的實操能力,且興趣滿滿。

現在的他已經是小公司的技術部門負責人了,於是我前幾天特意跟他請教了一下這種學習方式,然後整理成文章。

今天我就把這些年他收藏的10個邊玩遊戲邊編程的網站分享給大家,當你有了基礎之後,你也可以結合這種方法去提升自己。


一、CodinGame | 遊戲化編程教學平台

CodinGame雖然和遊戲有關但是並不是遊戲開發,只是簡單的遊戲模式,每一個練習背後的邏輯,都與一個實際的遊戲相連,讓你能夠獲得實時視覺回饋,你完成練習之後也能獲得實際的獎勵。該平台的目標用戶是具備一定編程基礎的人,當然同時也為資深程式設計師提供了相應級別的進階練習。

CodinGame遊戲之CODE VS ZOMBIES

 

對於每一個練習,你都可以從超過20種程式語言中選擇自己喜歡的語言,例如Python、Ruby、Java、Scala等。公司的目標用戶是已經知道一些編程基礎的人,但也為資深程式設計師提供了相匹配的挑戰。

尤其是,程式設計師之間近期開始流行多人遊戲模式。在多人遊戲模式下,你可以學習人工智慧的基礎知識,與其他人進行對決,看看到底是誰的程式碼效率更高。

CodinGame遊戲之CODERS STRIKE BACK

CoinGame支援23種不同的程式語言,其中的每一個遊戲練習都可以選擇自己熟悉的語言。在CodinGame平台,每一個練習都是基於瀏覽器的,會提供一個網路集成開發環境,讓你不刷新網頁就可以實時編譯程式碼,並實時看到遊戲的變化。目前,CodinGame已經吸引到了23萬用戶註冊。

 

傳送門:www.codingame.com


二、CodeCombat | 由易到難的遊戲,由淺入深的學習

CodeCombat 是一個免費的程式碼學習遊戲網站 (一個公益開源的項目),目前已經支援 Python、Javascript、CoffeeScript、Clojure、Lua、Io 等程式語言的學習,並且網站介面也已被翻譯了包括簡繁體中文在內的幾十種語言。

 

遊戲的每一關設計的都很巧妙,初期是一些基礎知識的學習,讓你對函數結構有個初步的認識,後面的關卡越來越難,判斷、循環語句也會逐漸加入,需要自己更多的創造性,通過語法、介面編寫出複雜的函數才能過關,玩家在不知不覺也就具備了編程的思維。根據 XIao 的試玩後表示:「連英文苦手程式碼小白的我也能愉快地玩耍一晚上」,因此,估計大家即便無基礎也都可以輕鬆上手的。

 

當然,由於 CodeCombat 是開源的,如果你本身已是開發高手,那麼除了挑戰一些高難度的多人遊戲關卡之外,也可以完全參與到項目本身的開發中去,譬如程式碼編寫、關卡設計、Bug測試、文字翻譯等等,給 CodeCombat 這個公益項目做貢獻。

 

傳送門://koudashijie.com/china-bridge?redirect=/


三、Check iO | Python學習者推薦

CheckiO 是面向初學者和高級程式設計師的編碼遊戲,使用 Python 和 JavaScript 解決棘手的挑戰和有趣的任務,從而提高你的編碼技能,尤其是Python學習者尤為推薦。

有網友說:「語法看了一大堆,教程也學了一大堆,就想著做項目,但是發現根本動不了手,反覆總結自己發現雖然看懂了語法,記住了方法,但是自己腦子裡還是沒有編程思維,也對敲程式碼不熟悉……但在Check io 上學了一段時間之後受益匪淺,不僅自己動手解決了問題,而且還能學習到別人的編程思維,尤其是同樣的問題,自己寫了很長的程式碼,而大神卻只用了幾行就解決了。」

傳送門://checkio.org/


四、Codewars | 編程打怪升級平台

CodeWars 是一個通過編程挑戰平台,提供了:C、C++、C#、Java、JavaScript、PHP、Clojure、CoffeeScript、Elixir、Haskell、Python、Ruby、TypeScript等程式語言的挑戰。

相比於其他平台,Codewars 給出的問題更加貼合實際工作與生活,很多題都會給出題目背景,更有代入感。一些 kyu(Codewars中用來標記題目難度的指標) 較小的題目,還是有一些挑戰的,很多題目可能要寫一兩天提交十多次才能過,不過寫三四百行然後 AC 的感覺真的很棒。很多題目來自遊戲,經常打遊戲碰到這些題目會會心一笑。

 

傳送門 ://www.codewars.com/


五、SCREEPS|面向程式設計師的MMO沙盒遊戲

 

Screeps 是一款面向編程愛好者的 MMO(大型多人在線)RTS(即時戰略)遊戲,其中的核心機制是對你的單位AI 進行編程。該遊戲擁有一個成熟的策略遊戲的所有屬性,在其中你通過編寫 Java 程式碼來控制你的殖民地,與其他玩家一起在一個持久的世界中全天運行。

你的殖民地可以收穫資源,建立單位,征服領土,與其他殖民地進行貿易。當你征服了更多的領土,你在遊戲世界中的影響力就會增加,你的能力也會隨之擴大。但是要注意,多個玩家瞄準同一個區域可能會導致衝突!

Screeps看起來還是很有意思的,但是依然美中不足。Screeps雖然是開源的,可以隨便下載,但是遊戲的服務端卻是收費的,所以只能玩免費的部分,僅限於初始教程及訓練場(沙盒模式),並且遊戲內容無法保存,如果你想遊玩遊戲內容的話,那你只能去購買本體。

所以要不要入坑,你可以試玩一下免費部分之後再決定。

傳送門://screeps.com/


六、Vim-Adventures

Vim作為一款神級編輯器,卻有非常陡峭的學習曲線。網上大部分的教程很多仍然以背指令為基礎,很容易讓人望而卻步。理解Vim的指令並不難,難點在於掌握Vim需要大量的重複練習。初學Vim的人很難有大量使用Vim操作的環境,或沒有安全的可以進行編輯的文本,或無法忍受初學Vim時相對下降的編輯效率,從而很快就放棄了Vim。

Vim-Adventures是一款基於Vim操作的網頁版遊戲,通過一些遊戲行為能潛移默化地熟練Vim的基本操作,最終形成肌肉記憶。同時Vim-Adventure給予了玩家一個安全的、可大量重複練習的環境,從而在短時間內獲得使用Vim的快感,最終能夠體會到Vim的強大。

Vim-Adventures的難度梯度還是比較平緩的,前幾關都能夠很簡單的完成。但是隨著遊戲的進行,挑戰難度會逐漸增大。


七、Playcodemonkey | 在線少兒編程

CodeMonkey是一個在線的交到孩子任何編程的遊戲類產品,針對的是9歲以上的兒童教育。

在遊戲中,有一隻想要吃到香蕉的小猴子,孩子通過編寫程式碼,幫助虛擬中的猴子小夥伴獲得它心愛的香蕉。剛開始,遊戲會為孩子提供簡單的程式語言,例如「step 15」,引導孩子操作猴子前進或者後退15步吃到香蕉。而之後關卡難度會越來越大,例如一次性獲得多個香蕉,轉彎操作,與烏龜小朋友一起合作跨過湍流的小溪,打敗老鼠爭奪香蕉。不同難度的關卡,對應編程學習中不同的難點,例如邏輯循環等等。

如果你有瓜娃子且想讓他學學編程的話,可以試試這個。

 

傳送門://app.playcodemonkey.cn/


八、Elevator saga

Elevator Saga是一個益智遊戲,用Java來控制建築里的電梯。很多人一直的上上下下,你需要儘可能快的讓他們到達他們的目的地。這個遊戲測試你的演算法書寫能力,同時也測試JS的函數,數組和事件處理。

傳送門://play.elevatorsaga.com/


九、Git-game

現在講解 Git 的文章很多,有 Git 的基本用法、設計原理、流程管理等諸多教程。在學過了這些知識之後,有沒有興趣,通過一個專門設計的 Git 命令行的遊戲,來看看你對 Git 的理解和運用到了什麼程度呢?

那麼Git-game就是一個很不錯的遊戲,裡面關卡很多,通過Git命令找到線索、解開謎題,能走到哪就看你的本事了。

 

傳送門 ://github.com/git-game/git-game


十、Hacker | 測試你的黑客能力

hacker.org 挑戰賽是一系列的拼圖、敲磚塊、測試和智力題,用來測試你的黑客能力。要通過這一系列的考驗,你需要破解加密、寫出精巧的程式碼,揭開重重迷霧。

聽說有某些道友在上面連續4天廢寢忘食,就為了用Python解救出一個傻傻的機器人……

不說了,我也要去玩學習(遊戲)了。

傳送門://www.hacker.org/



文章到這裡就結束了,感謝你的觀看,只是有些話想對讀者們說說。

我退休後一直在學習如何寫文章,說實在的,每次在後台看到一些讀者的回應都覺得很欣慰,對於自媒體我是個剛入門的人,還是個傻大叔…為了感謝讀者們,只要是我的粉絲,遇到什麼技術問題我都會幫忙解決,歡迎關注我!

在這裡插入圖片描述