最開始學習電腦編程的原動力之一就是想自己編寫游戲,一方面很好奇這些游戲是怎么做出來的,另一方面覺得有些地方設計的不合理,希望電腦游戲既能讓人玩的有趣,又不浪費時間。
學校五年,畢業十年,學用了十多種編程語言。期間有過幾次做游戲的嘗試,但由於很難駕馭游戲程序的復雜度,都半途而廢了。今年1月份看了一本書之后,重新激發了我做游戲的欲望。
這本書的名字叫《Building JavaScript Games》,書里面講了如何利用HTML5技術在網頁上繪制圖片,播放聲音,處理鍵盤和鼠標輸入,讓圖像動起來等,直到建立一個基本的游戲引擎。而且是用了四個實際的游戲例子,循序漸進地給游戲引擎增加功能,很容易看會。
但是正如作者在書中提到的,並不是每一個人都會完全認同書上對代碼的組織方式,讀者完全可以按照自己的思路組織代碼,從而編寫出一個新的游戲引擎來。再加上現在有了TypeScript這個工具,可以直觀地使用“類定義”語法,並提供編譯時的類型檢查和代碼重構等,有利於編寫簡潔的代碼和提高開發效率。
於是我用TypeScript重新組織和編寫了書里的樣例代碼,並加入自己的一些設計,然后從書里的四個游戲中挑了三個我喜歡的用新寫的游戲引擎重新實現一遍,逐漸地驗證和完善游戲引擎的功能。
一些核心的類的結構關系如下:
源代碼在GitHub上,分享源代碼的目的是降低開發游戲的難度,使更多的人能夠設計和制作自己想要的游戲。