文档详情

Android应用开发入门(基于Android Studio开发环境、任务驱动式) 第2版 课件 6-2 任务六 贪吃蛇游戏的设计与实现-子任务2.pptx

发布:2025-03-24约4.81千字共30页下载文档
文本预览下载声明

子任务2:贪吃蛇的游动和控制任务六

项目流程任务简介任务分析支撑知识任务实施任务小结扩展训练

自定义组件的方法和监听器了解什么是组件的方法和监听器1任务简介任务分析支撑知识任务实施任务小结扩展训练

1.1简介方法:组件外部调用方法改变组件内部监听器:组件发生了某个事件,从而驱动外部行为组件内部组件的监听器触发外部Activity调用组件的方法

1.1定义监听器在自定义组件内部定义一个public的接口,在该接口内定义抽象方法;在自定义组件内部申明该接口的对象,在发生事件时(比如检测到按钮被单击、CheckBox被勾选),调用该对象的抽象方法;在自定义组件内部定义public的方法,该方法含有一个接口类型的参数,外部Activity可以调用这个方法将创建的监听器传入到组件内部。

项目流程任务简介任务分析支撑知识任务实施任务小结扩展训练

子任务分析了解游戏的数据结构和绘制要点1任务简介任务分析支撑知识任务实施任务小结扩展训练

首先我们需要分析一下游戏的几种状态:运行状态:蛇开始移动,并且可以接受玩家的控制;暂停状态:蛇暂停移动;死亡状态:游戏结束状态。1.1游戏状态蛇撞墙游戏第一次运行,进行初始化单击【暂停】运行状态死亡状态暂停状态单击【开始】单击【开始】,游戏初始化

1.2方法和监听器监听器说明publicinterfaceOnSnakeEatFoodListener{voidOnSnakeEatFood(intfoodcnt);}该监听器会在蛇吃到食物时触发,接口中抽象方法的参数为当前蛇吃到食物的个数。publicinterfaceOnSnakeDeadListener{voidOnSnakeDead();}该监听器会在蛇撞墙时触发,接口中抽象方法无需参数。首先分析贪吃蛇需要在什么时候触发外部的Activity进行处理,我们归纳出以下几点:贪吃蛇吃到食物时需要通知外部Activity进行分数TextView的更新;贪吃蛇撞墙时,需要通知外部Activity进行游戏结束的处理,如弹出Dialog输入玩家信息等。

1.2方法和监听器方法说明publicvoidstartGame()开始游戏:如果游戏处于运行状态,调用该方法无效如果游戏处于死亡状态,将重新初始化运行游戏如果游戏处于暂停状态,将恢复游戏运行publicvoidpauseGame()暂停游戏:游戏处于运行状态时,会暂停游戏其他状态时,调用该方法无效publicvoidcontrolGame(intdir)游戏处于运行状态时,调用该方法可以控制蛇游动的方法,参数为上下左右四个方向其他状态时,调用该方法无效voidsetOnSnakeEatFoodListener(OnSnakeEatFoodListenerlistener)该方法设定蛇吃到食物的监听器voidsetOnSnakeDeadListener(OnSnakeDeadListenerlistener)该方法设定蛇死亡的监听器

组件功能实现实现贪吃蛇的定时移动、组件重要方法、监听器2任务简介任务分析支撑知识任务实施任务小结扩展训练

在SnakeView类中,声明游戏元素相关的成员变量:privateThreadthread=null; //周期性任务的子线程privateHandlerhandler=null; //子线程与UI线程交互的HandlerprivatefinalintMSG_MOVE=1; //蛇周期性移动的消息IDprivateintgameStatus; //游戏状态privatefinalintSTATUS_RUN=1; //运行状态privatefinalintSTATUS_DEAD=2; //死亡状态privatefinalintSTATUS_PAUSE=3;//暂停状态2.1蛇定时移动-成员变量

我们将initGame中初始化蛇和食物的处理独立放在initSnake新的方法中privatevoidinitSnake(){snakeLen=4; //蛇初始包括四段身体snakeX[0]=3;snakeY[0]=0;snakeX[1]=2;

显示全部
相似文档