人物移动
我的人物在移动的时候比如我按了up键,他就会一直往up方向走,不停下来,直到我按了其他键,比如我再按了down键,她又往down方向走,同样不停下来,不知道是为什么
我得move函数是这样写的:
void man::move(int where)
{
switch(where)
{
case 0:
if(man1.tx<0)
man1.tx=0;
if(man1.tx>640)
man1.tx=640;
if(man1.ty<0)
man1.ty=0;
if(man1.ty>480)
man1.ty=480;
MakeRect(0,32);
man1.tx-=10;
lpDDSBuffer->BltFast(man1.tx,man1.ty,lpDDSSprite,&r,SrcKey);
break;
case 1:
if(man1.tx<0)
man1.tx=0;
if(man1.tx>640)
man1.tx=640;
if(man1.ty<0)
man1.ty=0;
if(man1.ty>480)
man1.ty=480;
MakeRect(0,0);
man1.ty+=10;
lpDDSBuffer->BltFast(man1.tx,man1.ty,lpDDSSprite,&r,SrcKey);
break;
case 2:
if(man1.tx<0)
man1.tx=0;
if(man1.tx>640)
man1.tx=640;
if(man1.ty<0)
man1.ty=0;
if(man1.ty>480)
man1.ty=480;
MakeRect(0,96);
man1.tx+=10;
lpDDSBuffer->BltFast(man1.tx,man1.ty,lpDDSSprite,&r,SrcKey);
break;
case 3:
if(man1.tx<0)
man1.tx=0;
if(man1.tx>640)
man1.tx=640;
if(man1.ty<0)
man1.ty=0;
if(man1.ty>480)
man1.ty=480;
MakeRect(0,64);
man1.ty-=10;
lpDDSBuffer->BltFast(man1.tx,man1.ty,lpDDSSprite,&r,SrcKey);
break;
}
}
由于上次的教训我没有在鼠标事件里面重画图,只是做了标记,然后在refreshs()函数里面画图
void refresh()
{
MakeRect(0,0,640,480);
lpDDSBuffer->BltFast(0,0,lpDDSMap,&r,NoKey);
if(enable==1)
man1.move(up);
if(enable==2)
man1.move(down);
if(enable==3)
man1.move(left);
if(enable==4)
man1.move(right);
Flip();
}
能帮我看看什么问题吗,我个人认为是move里面哪个自加或自减的问题,但如果不这样,人物就不可能移动啊?晕死