摘要:别踩白块儿使用白鹭引擎编写的游戏游戏地址准备工作了解白鹭引擎并安装编写工具安装游戏引擎安装创建项目创建项目可以选择不同版本的引擎,创建成功之后还可以查看,对发布进行设置。
别踩白块儿 使用(白鹭引擎)Egret编写的游戏
游戏地址准备工作
了解白鹭引擎 并安装编写工具
安装游戏引擎
安装Egret Wing3
创建项目
创建项目可以选择不同版本的引擎,创建成功之后还可以查看API,对发布进行设置。
目录结构如下
代码主要存放在src文件下(白鹭引擎支持代码为typescript)
先说一下整体的思路: 就是将整个游戏细分一下,一个小格子为一个模块,然后每一列为一个大的模块,游戏整体作为一个大的模块,定时器作为一个模块,开始游戏和结束游戏分别作为一个模块。如图:
废话少说 开撸开撸
egret提供server服务egret startserver -a -a 表示对文件进行监控自动更新
BoxGraphics// 负责初始化小格子 private init() { this.touchEnabled = true; this.width = GameData.getBoxWidth(); this.height = GameData.getBoxHeight(); this.addEventListener(egret.TouchEvent.TOUCH_BEGIN, this.click, this); } /** * drawBox * 绘制内容 */ 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 * 当前方块被点击后的响应事件 */ 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; //不能点击,抛出错误事件 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 = []; // 生成一行中的每一个格子 并给每个格子添加对应事件 for(var i:number=0;iGameView 游戏主界面
private init():void { this._boxGroups = []; var len:number = GameData.row+1; // 循环生成每一列格子 for(var i:number=0;i点击游戏移动函数
public move() { var len:number = GameData.row+1; for(var i:number=0;iMain=GameData.getStageHeight()){ // 如果格子没有被点击 游戏结束 if(!this._boxGroups[i].isHit) { this.gameOver(); return; } // 设置对应格子的位置 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(); } } } 入口文件
/** * 初始化游戏函数 * 初始化gameview * 初始化定时器 * 初始化开始|结束 画布 * 添加事件监听 */ 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); } //定义事件 /** * 游戏结束 */ private gameover(evt:GameEvent):void { this.timer.stop(); this.gameoverPanel.update(); this.addChild(this.gameoverPanel); } /** * 开始游戏 * 重新设置游戏速度 分数 * 去除游戏开始|结束画布 */ 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(); }发布egret publish
官方文档
overgit地址
到这里,关于游戏的相关介绍就基本上已经结束了,如果有错误或者不严谨的地方,请务必给予指正,十分感谢。如果喜欢或者有所启发,欢迎 star,对作者也是一种鼓励。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/53157.html
摘要:灵活性和针对性。所以我觉得大部分组件还是自己封装来的更为方便和灵活一些。动手开干接下来我们一起手摸手教改造包装一个插件,只要几分钟就可以封装一个专属于你的。 项目地址:vue-countTo配套完整后台demo地址:vue-element-admin系类文章一:手摸手,带你用vue撸后台 系列一(基础篇)系类文章二:手摸手,带你用vue撸后台 系列二(登录权限篇)系类文章三:手摸手,带...
摘要:我们将登录按钮上绑上事件,点击登录之后向服务端提交账号和密码进行验证。所以前端和后端权限的划分是不太一致。侧边栏最后一个涉及到权限的地方就是侧边栏,不过在前 完整项目地址:vue-element-admin 系列文章: 手摸手,带你用vue撸后台 系列一(基础篇) 手摸手,带你用vue撸后台 系列二(登录权限篇) 手摸手,带你用vue撸后台 系列三 (实战篇) 手摸手,带你用vu...
阅读 2751·2021-11-02 14:42
阅读 3146·2021-10-08 10:04
阅读 1169·2019-08-30 15:55
阅读 1003·2019-08-30 15:54
阅读 2292·2019-08-30 15:43
阅读 1662·2019-08-29 15:18
阅读 845·2019-08-29 11:11
阅读 2331·2019-08-26 13:52