64Dos环境编小游戏,内存不足了,求助~~~
最近学了些C下的图形函数,于是跃跃欲试想做一个DOS下的移豆的小游戏,就是一堆豆,
两个人拿,规定好每次拿的最大个数,谁拿走最后一粒算谁输,
游戏挺好写的,我想好了一个必胜的AI,而且,这个游戏是我第一个用C++写的程序。
不过,我把重点放在这个DOS下的程序的界面实现上,可以有人机对抗,人人对抗,还能设定游戏参数。
发现所有的东东都要自己来搞,好痛苦,也感觉实践了不少东西。
然而,当我这个程序搞了500多行,即主页面基本的框架已搭好,准备写游戏的交互部分时,出现问题了。
在进入INTRODUCTION或游戏的某个完法后,按ESC是可以回到开始的主画面的。再三次这样的进入和跳出后,BUG出现,即文字的字体模式全无,再试一两次后,强行从游戏中跳出。后来加了段捉ERROR的函数,发现问题了:
not enough memory to load font.
所以呢,我就开始想,到底是画面占用内存过多还是没有用类没有及时处理所造成。
如果是图形的问题,我还想先尝试尝试,因为知道方向了,GETIMAGE和SETIMAGE虽然还不太会用,但我相信还是能搞好的,等这方面有问题了再问。(用CLEARDEVICE发现无效,问题依旧。)
而我再注释掉大段图形操作的代码后,发现情况依旧,所以,怀疑是没有很好的处理无效类造成的。
所以我很想知道,问题到底是不是出在类上,如果是,还请高人指点我改如何做。
以下就是我写到了50%的代码,整体框架完全OK,但如果这个问题不解决,下面写下去的游戏是没法子玩的(只要把这个内存问题解决就好)。
千万别告诉我不要用DOS写游戏,这并不是我问这个问题的初衷。
主框架:(由于我是初学C++,我这里的几个类只不过是帮我更好的管理函数而已,分工明确。并不复杂。)
//编译环境TC++3。0。
//游戏中的消息
enum GameStatus{Win,Failure,Select,Gaming,Exit,GSFree};//游戏游程
enum GameModes{PvsC,PvsP,CvsC,OP,Intro,GMFree};//游戏模式,PERSON VS COMPUTER。。。,玩法简介及属性设定也在其中。
GameModes GModes=GMFree;
GameStatus GStatur=Select;
void main(void){
ScreenLayOut SC;//负责画静态图形的类
GameKeyControl KC;//游戏中的键盘响应类
GameMode GM;//主游戏中的游戏模式类
while(GStatur!=Exit){
SC.ErrorDetect();//错误捕捉类
switch(GStatur){
case Select:
SC.GraphicStart();
SC.Selectgame();
KC.Selectgame();//ZhongDuan Choose
if(GModes==Intro){ SC.Introduction();
KC.Introduction();//ZhongDuan Return
GModes=GMFree;
break;
}
if(GModes==OP){ SC.Option();
KC.Option();//ZhongDuan Return
GModes=GMFree;
break;
}
else if(GStatur!=Exit)GStatur=Gaming;
break;
case Gaming: GM.GameCommand();
break;
}
}
getch();
SC.GraphicEnd();
}