代码分块一
属性不够可以自行补充
首先需要一个类来描述机甲单元
class MeshWarriorCell
{
int kind; //种类
int weight; //重量
int attack; //攻击
int recovery; //防御
int energy; //激活时消耗能量
int capability ; //性能
int width,height; //宽,高设为固定数值
double x; //坐标
double y; //坐标
double direction; //方向 机甲单元可以有不同的方向
int state; //状态
MeshWarriorCell[] neighbours=new MeshWarriorCell[4]; 最多四个邻居单元
public virtual void Show(Graphics graphics){} //显示在 graphics上
public virtual bool Collide(MeshWarriorCell cell) {} // 判断是否和指定单元相撞,若相撞,执行相应损伤函数
}
代码分块二
属性不够可以自行补充
class Gear //转动轴承
{
MeshWarriorCell[] neighbours=new MeshWarriorCell[4]; //限制其只能连接两个单元,用[0],[1] 表示
int linkCellCount; //连接在此gear后的所有机甲单元数目(即与neighbours[1]连着的cells)
int angle; //角度,设置为0,90,180,270,四个角度
int turns; //计算转动一次需要几个回合 (linkCellCount数目越多,转动越慢),可自行设计计算公式
public void UpdatePositions(){};//转动完毕后,连接在此gear后的所有机甲单元坐标(实际上只用更新到下一个gear即可),利用相对坐标来更新
}
代码分块三
属性不够可以自行补充
需要一个类来描述机甲
class MeshWarrior
{
double y; //坐标
double direction; //方向 机甲可以有不同的方向
int state; //状态
list<MeshWarriorCell> list_cells;//所有机甲单元
list<string> list_names;//所有机甲单元名称,不同位置的单元名称不一样
public void Show(Graphics graphics){} //调用MeshWarriorCell.Show显示所有机甲单元在 graphics上
public bool Collide(MeshWarriorCell cell) {} // 调用MeshWarriorCell.Collide判断是否和指定机甲相撞,若相撞,执行相应损伤函数
public void Go(int direction){} //利用相对坐标更新所有cells的坐标
public void Behave()
{
如果某个动作没执行完,则接着执行,返回
否则根据键盘输入,执行新动作
}
}
代码分块四
属性不够可以自行补充
class Action//动作
{
list<MeshWarriorCell> list_cells;//动作涉及的所有轴承机甲单元
list<string> list_names;//动作涉及的所有轴承机甲单元名称,不同位置的单元名称不一样
int turns; //动作完成需要的回合数
list<int> condition_angle;//动作涉及的所有轴承机甲单元的初始角度条件
list<int> destination_angle;//动作涉及的所有轴承机甲单元的目标角度
public bool SatisfyCondition() //是否满足执行条件
public int DoAction() //执行并返回需要回合数
}
代码分块五
属性不够可以自行补充
class Command//指令
{
一个指令可以调用多个 Action完成,
例如一个action1 为 : 轴承一的初始角度为0,则转动90
另一个action2 为 : 轴承一的初始角度为90,则转动0
我们可以把这个指令写成
if(action1.SatisfyCondition()) Do action1.DoAction();
if(action2.SatisfyCondition()) Do action2.DoAction();
这些指令是并列的,用list<Action> stage[0] 保存
执行完这个动作又可以执行下一套动作 用list<Action> stage[1]保存,故需要一个
list<list<Action>> stage 型数据结构,当然你也可以用其他结构,能完成功能即可
}