游戏开发论坛

 找回密码
 立即注册
搜索
查看: 4424|回复: 15

简单的关于人物移动问题

[复制链接]

5

主题

16

帖子

22

积分

注册会员

Rank: 2

积分
22
发表于 2004-9-27 20:11:00 | 显示全部楼层 |阅读模式
这次是人物的移动问题
我的人物在移动的时候比如我按了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);
man1.show();
Flip();
}
能帮我看看什么问题吗,我个人认为是move里面哪个自加或自减的问题,但如果不这样,人物就不可能移动啊?晕死
[em14] [em14] [em5]

139

主题

2005

帖子

2057

积分

金牌会员

Rank: 6Rank: 6

积分
2057
QQ
发表于 2004-9-27 20:16:00 | 显示全部楼层

Re:简单的关于人物移动问题

估计是delta太大了。我没看代码,非常长,完了慢慢看完再给详细意见。刚才哪个估计是我猜的

5

主题

16

帖子

22

积分

注册会员

Rank: 2

积分
22
 楼主| 发表于 2004-9-27 20:41:00 | 显示全部楼层

Re:简单的关于人物移动问题

代码并不是很长
很多都是重复代码
我个人估计是哪个自加或者自减出来问题,你给看看哪个部分就好了

36

主题

1047

帖子

1147

积分

金牌会员

Rank: 6Rank: 6

积分
1147
发表于 2004-9-27 22:40:00 | 显示全部楼层

Re:简单的关于人物移动问题

走完一次就将步长设为零,或者不要移动。

33

主题

669

帖子

669

积分

高级会员

Rank: 4

积分
669
QQ
发表于 2004-9-28 09:31:00 | 显示全部楼层

Re:简单的关于人物移动问题

可能是switch语句的毛病吧,走完一步以后状态没有改回来,还是那个方向的状态,所以还是走那个方向,按键结束以后应将状态变为静止状态

24

主题

104

帖子

104

积分

注册会员

Rank: 2

积分
104
发表于 2004-9-28 21:56:00 | 显示全部楼层

Re:简单的关于人物移动问题

搞不清就理清思绪,在重写。

9

主题

378

帖子

378

积分

中级会员

Rank: 3Rank: 3

积分
378
QQ
发表于 2004-9-29 11:33:00 | 显示全部楼层

Re:简单的关于人物移动问题

再按下的按钮抬起来时停止移动.

63

主题

871

帖子

891

积分

高级会员

Rank: 4

积分
891
QQ
发表于 2004-9-29 12:52:00 | 显示全部楼层

Re:简单的关于人物移动问题

好乱
这样的方式不是很好
还是按一下键触发一个步长的移动为好

5

主题

71

帖子

73

积分

注册会员

Rank: 2

积分
73
发表于 2004-9-30 03:45:00 | 显示全部楼层

Re:简单的关于人物移动问题

拜托!!!
你闲着没事儿干了???
别忘了把你的方向回置为初值。
另外,你是做网页或JAVA的转行改写C/C++吗?

0

主题

2

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2004-10-5 11:50:00 | 显示全部楼层

Re: 简单的关于人物移动问题

楼上的怎么这样说话????

楼主,你的人物状态就只有4个,当然人物就要么向上动要么向下,要么左,要么右了.你如果想让他停下来,加一个好就好了啊....
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-12-22 17:45

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表