| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 784 人关注过本帖
标题:我一直在考虑红警中造兵的得原理
只看楼主 加入收藏
daoke9999
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2006-5-10
收藏
 问题点数:0 回复次数:2 
我一直在考虑红警中造兵的得原理
还得麻烦大家帮帮忙

我一直在考虑红警中造兵的得原理,我说一说看对不对,根dx8无关,请指教

作一个类CFighter,在程序开始前声明一个该类的指针数组,数组的容量是造兵数的上限。如:
CFighter MyFighter[100];

在响应用户“造兵”动作时,根据用户的选择对CFighter的对象赋值,并累加已造兵数 如:
SumFighter++;
MyFighter[SumFighter].Blood=100;
MyFighter[SumFighter].Speed=10
....................
这样一个新兵就产生了;
在主循环函数中,
for (i=0;i<SumFighter;i++)
{
.......
//显示士兵MyFighter[i]的位置、状态等

}
但是有一个问题就是我的CFighter 如果很大,申请一个100各成员的数组会占很大内存,
在用户制造几个兵的情况下,就导致系统资源的浪费,更何况红警可以造几千个兵。
我看到很多时候用new操作符可以动态申请内存,那么如何在我开始定义数组的时候控制系统不分配内存呢?
在造兵的相应中控制内存的分配,请高手指教
搜索更多相关主题的帖子: 原理 
2006-05-11 22:43
aogun
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:638
专家分:0
注 册:2006-4-5
收藏
得分:0 

你可以使用stl中的list来解决这种问题,比如定义一个链表:
list<CFighter *> g_lFighter;
如果造出一个兵,就用
CFighter * pFighter = new CFighter(初始化值);
g_stFighter.push_back(pFighter);
或者用map
map<unsigned int, CFighter *> g_mFighter;
CFighter * pFighter = new CFighter(初始化值);
g_mFighter.insert(pair<unsigned int, CFighter *>(小兵ID或者其它标识, pFIghter));

又或者你想简单点,就定义一个全是CFighter的指针的数组:CFighter *g_pFighter[最大小兵数量];这样这个数组都是指针,大点也没关系了


世界上总共有 10 种人,一种懂得什么是二进制 ,一种不懂。
2006-05-12 13:38
daoke9999
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2006-5-10
收藏
得分:0 
我现在就用的指针的数组,但是数量毕竟有一个最大值,红警的好象是没有限制的
2006-05-13 12:49
快速回复:我一直在考虑红警中造兵的得原理
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020080 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved