在線DEMO地址:打開;
游戲截圖:
就不貼代碼了, 因為代碼太多了, 大概寫一下這個游戲實現思路和一些實現;
游戲一共有三關, 每一關都有一個大Boss, Boss比較好殺,主要各種外星飛船殺傷力太強, 要注意;
游戲中打死敵機有10%的幾率會掉神符, 包括生命神符, 加血神符, 無敵神符, 炸彈升級神符:
每一個敵機的死亡都有100%的幾率掉鉆石, 如果飛船吃了鉆石就可以增加左上角的積分score:
目前有兩臺戰斗機,戰斗機只是機型不同, 戰斗力是相同的:
使用requireJS實現模塊化, 因為JS的靈活性太高, 代碼太多的話很難維護, 使用requireJS進行模塊化;
使用P.js 實現類的繼承: P.js , JS的游戲開發比日常的JS應用更需要類和類的繼承, 所以用了這個庫;
彈窗使用了Tiny-Alert, 因為系統默認的alert提示太難看了;
游戲的聲音用了GT.sound, 大城小胖的作品, 打開GT.sound;
游戲的圖片素材和聲音素材都是從網上扒的, 找了好久, 好素材要花錢撒, 沒錢, 不解釋;
項目的結構如下:
因為requireJS提供了一個自動打包工具r.js, 可以把使用模塊的代碼打包到一起, 我就用了, 項目下的main-build.js就是打包后的JS文件, 合并后的代碼有47kb,(代碼很少,圖片很多);
使用了Grunt的watch插件,實現了代碼變更時候的實時查看;
以下是package.json的信息, 可以看看我用了哪些插件:

{ "name": "game_air", "version": "0.0.0", "description": "for watch", "main": "Gruntfile.js", "dependencies": { "grunt": "~0.4.5", "express": "~3.15.2", "grunt-contrib-connect": "~0.6.0", "grunt-contrib-watch": "~0.5.3" }, "devDependencies": { "grunt-contrib-less": "~1.0.0", "requirejs": "~2.1.19" }, "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "repository": { "type": "git", "url": "http:\\" }, "keywords": [ "nono" ], "author": "nono", "license": "__MIT__" }
因為游戲要考慮PC和移動端,所以操作方面, 用了自己寫的CommonControl.js;
因為游戲中需要涉及圖片加載的問題, 所以用了自己寫的LoadImg.js;
這個游戲是用canvas畫圖實現的,所以要有一個主要的畫圖線程 ,我又寫了一個TaskList.js;
游戲中的界面跳轉用了自己寫的一個Pages, 用來作為路由控制, Pages.js;
這個游戲在電腦上的FPS為50左右, 很流暢,低端機上還是有點卡, 因為會涉及到各種的碰撞檢測, 子彈多的話,要跑很多的檢測代碼, 有優化的空間 , 游戲在中高端的移動設備上有最好的體驗, 持續更新;
園友想要源碼, 僅供參考:https://github.com/sqqihao/sqqihao.github.io/tree/master/games/air
在線DEMO地址:打開, ^_^, 給個推薦如何?
作者: NONO
出處:http://www.cnblogs.com/diligenceday/
QQ:287101329
文章列表