通过左右键控制大球与小球的距离(二者接近时上升,分离时下降),巧妙地躲避岩石、陨石与黑洞,点亮所有星座,取得最后的胜利。
- 假设背景总高度为1m,划分为100份,每份1cm,每次到达一个新的高度奖励1分(此前到达过的不算,故最多奖励100分)。
- 若球撞到岩石和陨石,分别惩罚不同数值的分数。
- 若球撞到黑洞,则游戏直接结束。
- 若球点亮星座,可以得到奖励分。
- 当到达背景最高处且点亮所有星座时,游戏胜利,进入下一关;当总分小于等于0或者撞到黑洞时,游戏失败。
1、上述分数可根据实际的游戏体验进行调整。
2、在单人模式下,小球不会撞到黑洞和障碍物,只需要引导大球躲开障碍物与黑洞。
- 支持单人和双人模式。
- 大球支持亮暗两种状态(放弃实现)。
- 支持好友的排名(单人(必做)和双人(可选))(放弃实现)。
- 有四种界面的切换。
- 有游戏设置按钮(结束按钮、静音按钮、暂停按钮)。
- 不同的难度选择。
分配:江俊广
文件夹:base
包括大球和小球。
球的运动建模。主要受力包括:重力、由于双子互相靠近产生的升力、与障碍物相撞时的冲力、垂直方向上双子互相的引力(防止双子离得太远)、随机的干扰力等。
能够根据外部受力和时间变化进行状态的改变(加速度、速度、位置、(旋转角度)、亮暗)。
分配:程嘉梁
文件夹:base
公有属性:位置、大小、碰撞检测。
均需要随机生成位置,碰撞后的回调函数不同。
包括子类岩石类Stone、黑洞类BlackHole、星座类Zodiac(俊广实现)。
分配:江俊广,程嘉梁
文件夹:base,items
Arrow:实现操作箭头(江俊广)MusicManager:音乐管理(江俊广)ScoreIndiator:得分显示(江俊广)Timer:游戏时间管理(江俊广)BarriersManagement:障碍物管理(程嘉梁)
分配:江俊广,程嘉梁
文件夹:view
游戏入口函数类GameMain。
1、游戏开始界面类StartView:开始界面背景、游戏模式选择、排行榜查看。
2、游戏正式界面类GameView:管理全局的数据对象(帧动画、黑洞、障碍物、小球)。新的黑洞与障碍物的生成、全局各种力与碰撞的检测、根据得分判断游戏状态、游戏设置。
3、游戏结束界面类EndView:展示结束界面(分数)、可选择进入排行榜以及回到开始界面。
4、游戏帮助界面类HelpView:显示游戏内容说明。
这些都是通过Layabox的UI界面自动生成的类上进行扩展。
分配:动态调整
文件夹:未定
排行榜类Rank
rank.js(排行榜类):存储服务器排行榜信息(存储为一个排行榜对象,其中成员为ID:score)、显示排行榜界面、可返回开始界面。
注:游戏策略类似于跳一跳,因此不再对游戏进度进行存档。
图片:旋转体(同一张图片不同比例的缩放得到大球和小球,绘制发光滤镜得到亮暗两种状态)、背景、岩石、陨石、黑洞、星座各种item。
音乐:类似于游戏中的音乐(舒缓音乐+游戏过关时较为激动的音乐+撞击时的音效)。
- 一般变量名称:变量名一律小写,单词下划线连接(私有类成员变量前加_,最好不使用全局变量)。
- 类名称:每个单词首字母大写,不含下划线,以名词形式。
- 接口名称:每个单词首字母大写,不含下划线,以名词形式。
- 常量名称:加前缀k,每个单词首字母大写,无下划线。
- 文件名称:TypeScript文件与类名相同。
- 函数名称:驼峰命名。
- 所有在UI视图中定义的变量名以View作为后缀,从而与自定义的变量名相区别。
public property
item:该物体对应的动画或图像。
public method
constructor(backgroundImage:Laya.Image,width:number,height:number,name:string):构造函数。randomGenerate(backgroundImage:Laya.Image):障碍物随机生成在背景某处。drawItem():将障碍物的动画或图像绘制到背景上。(abstract)detectCollisions(ball:Ball):检测item与球类的碰撞。(abstract)update():更新item位置。getInnerBounds(itemRec:Laya.Rectangle, xScale:number, yScale:number):获取图片区域有效区域。
public property
x,y:获取球的位置vx,vy:获取球的速度radius:获取球的半径animation:获取球的动画
public method
setForce(Fx: number, Fy: number, name: string):对小球增加受力,Fx/Fy分别为水平和数值方向的分量,name为该力的种类removeForce(name:string):移除小球名字为name的力collide(xRatio:number, yRatio:number):碰撞会改变小球的速度分量,使原先的<Vx,Vy>变成<Vx * xRatio, Vy * yRatio>update():对小球的位置和速度进行更新pause():使小球静止restart():使小球重新开始运动drawNormalBall():绘制小球普通状态的动画
public property
data:获取当前的分数 public methodupdateHeight(height:number):根据高度的变化�记录奖励clearHeight():清空此前记录的高度gerReward(reward: number):接受奖励getPenalty(penalty: number):接受惩罚
public property
data:获取当前的分数
public method
onPlaySound(url:string):播放特殊音效,url可取值见包括Game.BlackHoleCollisionSound(和黑洞撞击),Game.StoneCollisionSound(和岩石撞击的声音)turnOff():void:关闭声音turnOn():void:重新打开声音
public property
blackHoles:存黑洞的数组stones:存陨石的数组zodiacs:存星座的数组
public method
regenerateBarrier(backgroundImage:Laya.Image):重新生成屏幕上所有障碍物drawBarriers():绘制各障碍物的动画或图像updateBarriers():刷新各障碍物的动画或图像
public method
gamePause:暂停游戏gameRestart:恢复此前暂停的游戏
public method
init():结束界面还原初始化设置showEnd():显示结束的缓动动画
public method
init():帮助界面还原初始化设置,开始接受鼠标事件。
public method
createEvents():创建各种响应时间toOnePlayerGameView():到单人游戏界面toTwoPlayersGameView():到双人游戏界面toEndView():到结束界面toStartView:到开始界面toHelpView:到帮助界面outHelpView:退出帮助界面
- 在结束界面按了开始后,游戏就自动开始了。
- 玩几局以后,当我选择按钮时,出来的显示播放按钮(而不是暂停按钮),点一下播放以后,才会出现暂停按钮。