2006-04-18炸弹人开发日志

2006-04-17

由于之前碰到一个问题一直没有静下心来思考如何解决,这次赶在冲凉之前决定好了。

 

问题就是如何解决对象删除的问题。

1>     我有一个存放对象的地方,其ID与对象进行了关联

2>     我把游戏操作方法作了几个分类.有专门处理显视次序的数组(有序)、有专门存放炸弹的数组(有序)、有专门存放背景的数组(有序)、有专门存放玩家的数组(有序)

 

而当一个对象被删除的时候要同时把上面相关的联系都给切断。

1.       最直观的解决方案就是在对象的析构函数中触发一次事件(类似于函数指针啦)

2.       还有一种就是由管理器进行对象删除的方式,当决定某个对象死亡的时候,标记它为死亡。在排序的时候,死亡列为最高指标,其它则以XY做为排序关键字。最终标记为死亡的对象就会自动走到排序队列的最前面。删除的时候只需要做线性删除即可。

 

现决定使用第二种方式删除游戏对象,使得WORLD中的定义就好象这样:

Map<int, CGameObject *> m_gameObjs;          //游戏对象

Vector<CGameObject *>  m_showObjs;          //游戏显视队列

Vector<CGameObject *>  m_bgObjs;            //背景

Vector<CGameObject *>  m_collisionObjs;       //碰撞物体

Vector<CGameObject *>  m_playerObjs;         //玩家

List  <int>             m_deleteObjID;        // 本次删除对象的 ID 列表
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值