本游戏初始阶段准备采用2D的方式,主要是机甲的设计与对战,然后可引入相关的产业,领域 机甲设计简单点来说 就是说用机甲单元设计机甲机甲若想能够移动,则得有移动引擎,若想移动的快,则整体重量要小,移动引擎要多但这样的话,又没什么攻击力,防御力, 所以要加上尖刀,护甲但是这样尖刀不会转动,不灵活,因而要加上转动轴承,使其可以根据不同的指令进行转动从而增加攻击的灵活性(当然你也可以不要转动轴承或者尖刀,护甲等)轴承越多,灵活度越大,也就意味着操作越复杂,手速就要快每个人可以使用各自特色的机甲,例如笨重的但是防护好的, 灵活的攻击小的等等  设机甲设计单元为 能源中心,移动引擎,转动引擎,护甲,机械手臂,转动轴承,刺刀.每个机甲单元都有 重量, 四个方向防御,攻击指数,消耗能量移动,转动引擎(针对整体), 转动轴承(针对局部)有一个性能指数例如最大移动速度=移动引擎性能/总重量假设机甲最大是10*10,我们可以在每个单元格内至多设置一个机甲单元(也可不设)
图不好发 给个链接http://www.cnblogs.com/feathersky/archive/2008/12/12/1353627.html
下面是机甲的对战每个机甲相撞,根据撞击的部分的防御,攻击指数计算损害 若转动轴承被撞坏,则不能转动若某个单元被转坏,连在其后的单元没有能量供应,不再具备攻击力若中心能源被撞坏,机甲就不能动了
 代码分块一 属性不够可以自行补充 首先需要一个类来描述机甲单元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 x;                 //坐标      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 型数据结构,当然你也可以用其他结构,能完成功能即可    }   

解决方案 »

  1.   

    这么多List<T>...Game不是MIS,资源分配是个大问题...学学数据结构吧...
      

  2.   

    回楼上: 这么多List <T>...Game不是MIS,资源分配是个大问题...学学数据结构吧...这个不存在问题   建议你先学学数据结构和编程  然后再来说
    在C++编程中,其开发者还专门鼓励人们用泛型和STL编程,你可以学习一段时间后,再考虑考虑为什么. 别什么都还不会的时候,就开始会了乱评论
      

  3.   

    我想到了<黑客传说> 这小说上面 XYZ 男主角 写的那个小游戏了...