摘要:別踩白塊兒使用白鷺引擎編寫(xiě)的游戲游戲地址準(zhǔn)備工作了解白鷺引擎并安裝編寫(xiě)工具安裝游戲引擎安裝創(chuàng)建項(xiàng)目創(chuàng)建項(xiàng)目可以選擇不同版本的引擎,創(chuàng)建成功之后還可以查看,對(duì)發(fā)布進(jìn)行設(shè)置。
別踩白塊兒 使用(白鷺引擎)Egret編寫(xiě)的游戲
游戲地址準(zhǔn)備工作
了解白鷺引擎 并安裝編寫(xiě)工具
安裝游戲引擎
安裝Egret Wing3
創(chuàng)建項(xiàng)目
創(chuàng)建項(xiàng)目可以選擇不同版本的引擎,創(chuàng)建成功之后還可以查看API,對(duì)發(fā)布進(jìn)行設(shè)置。
目錄結(jié)構(gòu)如下
代碼主要存放在src文件下(白鷺引擎支持代碼為typescript)
先說(shuō)一下整體的思路: 就是將整個(gè)游戲細(xì)分一下,一個(gè)小格子為一個(gè)模塊,然后每一列為一個(gè)大的模塊,游戲整體作為一個(gè)大的模塊,定時(shí)器作為一個(gè)模塊,開(kāi)始游戲和結(jié)束游戲分別作為一個(gè)模塊。如圖:
廢話少說(shuō) 開(kāi)擼開(kāi)擼
egret提供server服務(wù)egret startserver -a -a 表示對(duì)文件進(jìn)行監(jiān)控自動(dòng)更新
BoxGraphics// 負(fù)責(zé)初始化小格子 private init() { this.touchEnabled = true; this.width = GameData.getBoxWidth(); this.height = GameData.getBoxHeight(); this.addEventListener(egret.TouchEvent.TOUCH_BEGIN, this.click, this); } /** * drawBox * 繪制內(nèi)容 */ public drawBox(canTouch:boolean=false) { this._canTouch = canTouch; this.graphics.clear(); if(canTouch) { this.graphics.beginFill(0); } else { this.graphics.beginFill(0xffffff); } this.graphics.lineStyle(1, 0); this.graphics.drawRect(0,0,GameData.getBoxWidth(),GameData.getBoxHeight()); this.graphics.endFill(); } /** * click * 當(dāng)前方塊被點(diǎn)擊后的響應(yīng)事件 */ private click(evt:egret.TouchEvent):void { this.graphics.clear(); if(this._canTouch) { this.graphics.beginFill(0xcccccc); } else { this.graphics.beginFill(0xff0000); } this.graphics.lineStyle(1, 0); this.graphics.drawRect(0,0,GameData.getBoxWidth(),GameData.getBoxHeight()); this.graphics.endFill(); var event:GameEvent; //不能點(diǎn)擊,拋出錯(cuò)誤事件 if(!this._canTouch) { event = new GameEvent(GameEvent.GAME_OVER); } else { event = new GameEvent(GameEvent.GAME_HIT); } this.dispatchEvent(event); }GroupRect
一行格子
private init():void { this._boxs = []; // 生成一行中的每一個(gè)格子 并給每個(gè)格子添加對(duì)應(yīng)事件 for(var i:number=0;iGameView 游戲主界面
private init():void { this._boxGroups = []; var len:number = GameData.row+1; // 循環(huán)生成每一列格子 for(var i:number=0;i點(diǎn)擊游戲移動(dòng)函數(shù)
public move() { var len:number = GameData.row+1; for(var i:number=0;iMain=GameData.getStageHeight()){ // 如果格子沒(méi)有被點(diǎn)擊 游戲結(jié)束 if(!this._boxGroups[i].isHit) { this.gameOver(); return; } // 設(shè)置對(duì)應(yīng)格子的位置 if(i==0) { this._boxGroups[i].y = this._boxGroups[4].y - GameData.getBoxHeight(); } else { this._boxGroups[i].y = this._boxGroups[i-1].y - GameData.getBoxHeight(); } this._boxGroups[i].create(); } } } 入口文件
/** * 初始化游戲函數(shù) * 初始化gameview * 初始化定時(shí)器 * 初始化開(kāi)始|結(jié)束 畫(huà)布 * 添加事件監(jiān)聽(tīng) */ private init():void { this.gameview = new GameView(); this.addChild(this.gameview); this.gameview.addEventListener(GameEvent.GAME_OVER, this.gameover,this); this.timer = new egret.Timer(20,0); this.timer.addEventListener(egret.TimerEvent.TIMER, this.timers, this); this.gameoverPanel = new GameOverPanel(); this.gameoverPanel.addEventListener(GameEvent.GAME_START,this.startgame,this); this.startgamePanel = new StartGamePanel(); this.startgamePanel.addEventListener(GameEvent.GAME_START, this.startgame, this); this.addChild(this.startgamePanel); } //定義事件 /** * 游戲結(jié)束 */ private gameover(evt:GameEvent):void { this.timer.stop(); this.gameoverPanel.update(); this.addChild(this.gameoverPanel); } /** * 開(kāi)始游戲 * 重新設(shè)置游戲速度 分?jǐn)?shù) * 去除游戲開(kāi)始|結(jié)束畫(huà)布 */ private startgame(evt:GameEvent):void { GameData.speed = 10; GameData.setScore(0); this.gameview.startgame(); if(this.startgamePanel.parent) { this.removeChild(this.startgamePanel); } if(this.gameoverPanel.parent) { this.removeChild(this.gameoverPanel); } this.timer.start(); }發(fā)布egret publish
官方文檔
overgit地址
到這里,關(guān)于游戲的相關(guān)介紹就基本上已經(jīng)結(jié)束了,如果有錯(cuò)誤或者不嚴(yán)謹(jǐn)?shù)牡胤剑?qǐng)務(wù)必給予指正,十分感謝。如果喜歡或者有所啟發(fā),歡迎 star,對(duì)作者也是一種鼓勵(lì)。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/53157.html
摘要:別踩白塊白塊黑塊游戲初始化根據(jù)前面的部分我們可以知道,每個(gè)就代表一個(gè)白塊,就代表一個(gè)黑塊,每點(diǎn)擊一個(gè)黑塊消失其實(shí)是刪除了一個(gè),然后從上面添加一個(gè)新的。所以我們首先要通過(guò)來(lái)控制的創(chuàng)造和生成記得刪除在編寫(xiě)靜態(tài)頁(yè)面時(shí)候指定生成的個(gè)。 自己最近一直想做個(gè)小項(xiàng)目,但是自己代碼水平太爛了,做不了大系統(tǒng),索性利用畢生所學(xué)寫(xiě)個(gè)小游戲,哈哈哈別踩白塊這個(gè)游戲相信很多人都在手機(jī)上玩過(guò),今天我們就來(lái)做一個(gè)網(wǎng)...
摘要:別踩白塊白塊黑塊游戲初始化根據(jù)前面的部分我們可以知道,每個(gè)就代表一個(gè)白塊,就代表一個(gè)黑塊,每點(diǎn)擊一個(gè)黑塊消失其實(shí)是刪除了一個(gè),然后從上面添加一個(gè)新的。所以我們首先要通過(guò)來(lái)控制的創(chuàng)造和生成記得刪除在編寫(xiě)靜態(tài)頁(yè)面時(shí)候指定生成的個(gè)。 自己最近一直想做個(gè)小項(xiàng)目,但是自己代碼水平太爛了,做不了大系統(tǒng),索性利用畢生所學(xué)寫(xiě)個(gè)小游戲,哈哈哈別踩白塊這個(gè)游戲相信很多人都在手機(jī)上玩過(guò),今天我們就來(lái)做一個(gè)網(wǎng)...
摘要:別踩白塊白塊黑塊游戲初始化根據(jù)前面的部分我們可以知道,每個(gè)就代表一個(gè)白塊,就代表一個(gè)黑塊,每點(diǎn)擊一個(gè)黑塊消失其實(shí)是刪除了一個(gè),然后從上面添加一個(gè)新的。所以我們首先要通過(guò)來(lái)控制的創(chuàng)造和生成記得刪除在編寫(xiě)靜態(tài)頁(yè)面時(shí)候指定生成的個(gè)。 自己最近一直想做個(gè)小項(xiàng)目,但是自己代碼水平太爛了,做不了大系統(tǒng),索性利用畢生所學(xué)寫(xiě)個(gè)小游戲,哈哈哈別踩白塊這個(gè)游戲相信很多人都在手機(jī)上玩過(guò),今天我們就來(lái)做一個(gè)網(wǎng)...
摘要:靈活性和針對(duì)性。所以我覺(jué)得大部分組件還是自己封裝來(lái)的更為方便和靈活一些。動(dòng)手開(kāi)干接下來(lái)我們一起手摸手教改造包裝一個(gè)插件,只要幾分鐘就可以封裝一個(gè)專屬于你的。 項(xiàng)目地址:vue-countTo配套完整后臺(tái)demo地址:vue-element-admin系類文章一:手摸手,帶你用vue擼后臺(tái) 系列一(基礎(chǔ)篇)系類文章二:手摸手,帶你用vue擼后臺(tái) 系列二(登錄權(quán)限篇)系類文章三:手摸手,帶...
摘要:我們將登錄按鈕上綁上事件,點(diǎn)擊登錄之后向服務(wù)端提交賬號(hào)和密碼進(jìn)行驗(yàn)證。所以前端和后端權(quán)限的劃分是不太一致。側(cè)邊欄最后一個(gè)涉及到權(quán)限的地方就是側(cè)邊欄,不過(guò)在前 完整項(xiàng)目地址:vue-element-admin 系列文章: 手摸手,帶你用vue擼后臺(tái) 系列一(基礎(chǔ)篇) 手摸手,帶你用vue擼后臺(tái) 系列二(登錄權(quán)限篇) 手摸手,帶你用vue擼后臺(tái) 系列三 (實(shí)戰(zhàn)篇) 手摸手,帶你用vu...
閱讀 2772·2021-11-02 14:42
閱讀 3163·2021-10-08 10:04
閱讀 1184·2019-08-30 15:55
閱讀 1025·2019-08-30 15:54
閱讀 2311·2019-08-30 15:43
閱讀 1680·2019-08-29 15:18
閱讀 863·2019-08-29 11:11
閱讀 2362·2019-08-26 13:52