麻烦大家看看下面的程序。它是一个打地鼠游戏的逻辑控制,用随机数选择出地鼠的洞口,然后对有地鼠的洞口地鼠高度自加。地鼠高度从0到180,再变回0。
程序明明只有一条语句if(RolePos[i]<180) RolePos[i]+=5;改变地鼠高度的值,步长是5,但运行结果是第八组的值以2增长......
我已经把程序看很多遍,仍然看不出什么来,Help!!!!#include <stdio.h>
#include <string.h>
#include <windows.h>class Logic
{
private:
int Total; //现在显示状态的地鼠个数
bool RoleState[8]; //各个地鼠的显、隐状态
int RolePos[8]; //各个地鼠的伸出长度
int DelayCount; //延迟产生地鼠的速度public:
bool ReturnRoleState(int ID);
int ReturnRolePos(int ID);
void ChangeState();
Logic();
~Logic();
};void main()
{
Logic *myLogic=new Logic;
int i,j;
for(i=0;i<10;i++)
{
myLogic->ChangeState();
for(j=0;j<9;j++)
{
if(myLogic->ReturnRoleState(j))
printf("The %d hole: !!!  Pos: %d\n",j,myLogic->ReturnRolePos(j));
else
printf("The %d hole:      Pos: %d\n",j,myLogic->ReturnRolePos(j));
}
}
}void Logic::ChangeState()
{
int SelectHole;
DelayCount++;
int i;
if(DelayCount==50)
{
if(Total < 5) //只能同时显示4只地鼠
{
SelectHole = rand()%9; //选择一个地鼠洞
if(!RoleState[ SelectHole ])
{
RoleState[ SelectHole ] = true; //如果当前洞没有显示,则改为显示
Total++; //修改总地鼠数目
}
}
DelayCount=0;
printf("Selected Hole is:%d\n",SelectHole);
}
else DelayCount++; for(i=0;i<9;i++)
if(RoleState[i])
{
if(RolePos[i]<180) RolePos[i]+=5;
else
{
RoleState[i]=false;
Total--;
RolePos[i]=0;
}
}
}Logic::Logic()
{
Total = 0; //初始化显示地鼠数目为0 for(int i=0; i<9; i++)
{
RoleState[i] = false; //初始化各个地鼠的显、隐状态
RolePos[i] = 0; //初始化各个地鼠的伸出长度
}
DelayCount = 0;
}Logic::~Logic()
{
}bool Logic::ReturnRoleState(int ID)
{
return RoleState[ID];
}Logic::ReturnRolePos(int ID)
{
return RolePos[ID];
}