动作类游戏设计思想

特点:
游戏动画
用户可控制动画

设计的原则
1、游戏逻辑和显示分开
2、游戏循环
3、所有的动画中的物体(贴图)通过坐标控制位置


Swing

贴图可分层
第一层 地表(草地、河流等)
第二层 物品
第四层 敌人
第三层 玩家
第四层 前景
第五层 文字

每一层就是一个对象数组
人物对象数组
class 人物对象{
当前x坐标
当前y坐标
目标x坐标
目标y坐标
名称
图片来源
行走
跑动
攻击
}

class 灰熊 extends 敌人对象{
血量
override
攻击(){ .... }
}

刷新怪物
对象数组中新增一个对象

显示逻辑:
通过一个游戏循环,游戏循环每进行一次
就对每层的对象数组进行遍历,并增加、删除图片控件,或修改图片控件的位置

游戏控制
修改对象数组中的内容
人物行走,修改人物对象的坐标
选择敌人,swing事件的机制
攻击,修改人物对象的图片来源

行走动画:
鼠标点击怪物后,修改玩家人物对象的目标坐标值。
在游戏循环中,根据当前坐标显示图片位置,显示完了之后,再修改当前坐标,使其与目标坐标更接近
原理是:游戏循环每进行一次,修改图片坐标


攻击动画(爆炸、死亡倒地……):
原理是:游戏循环每进行n次,修改图片的来源(一系列运动相关的套图)



俄罗斯方块:
Class Gird{
x坐标
y坐标
bool 是否有图
}

程序初始化的时候,通过一个二重循环生成一个二维的Grid数组,以及每个元素的坐标

游戏控制:

生成一个方块
将特定组合的Grid数组元素 是否有图属性 修改为true

方块往下掉
将true下面的……


二维的Grid数组有两个
一个是Fall,负责往下掉的动画,掉到下面有阻挡时,将Fall里面的“是否有图”为 true的Grid放到pool里面去,同时再上面随机生成一个新的图形

另一个是Pool,负责消除,如果有新的图形被赋值进来,就判断是否有某行的Grid“是否有图”属性全为true,如果是,则将其赋值为false,并上上面的所有行的“是否有图”属性全为true的属性,全往下移动一格

图形换方向:
响应键盘事件,修改Fall中的图形的方向

游戏动画:
通过一个游戏循环,不停的去按照坐标绘制fall和pool这两个数组。
每显示一次,fall中的图形就往下掉一格

提升难度,加快游戏循环,游戏循环越来,下落速度就越快



游戏循环一定要使用多线程实现,也可以用模拟多线程(Java中的计时器)。
如果使用一个线程,循环没结束时,程序会处于假死状态。



相关文档
最新文档