游戏开发论坛

 找回密码
 立即注册
搜索
查看: 6390|回复: 10

可怜的暂停,可恶的时间,请版主和高手来帮忙

[复制链接]

7

主题

20

帖子

20

积分

注册会员

Rank: 2

积分
20
发表于 2003-10-29 10:14:00 | 显示全部楼层 |阅读模式
     我最近使用HOHO感觉非常不错,于是绝心利用业余时间编制一个网络的ARPG游戏,开始一切顺利,可是现在不得不暂停了。我在编写PK函数需要一个精确的计时函数,比如主角或者NPC的物理攻击要2秒出一招,魔法攻击要三秒等。我编写了好几个计时函数了,可是都不成功,风魂中有一个非常不错的,可是我又不会移值,身边又没有一个人会VC可问,书店的资料又买不起,我接触VC才两个多月,基础又差,希望版主和高手能帮个忙,帮我把这关过去。这个函数的功能简单如下表示:
class myTimer{
public:
int GameStarTime();//返回游戏开始时间,单位秒。同时开始游戏计时。
int GameRunTime();//返回游戏运行的时间,单位秒。
    void  TimeStar(long 计时步长);//开始计时,步长单位为毫秒
    bool TimeStep();//是否达到一个计时步长,如果达到重新开始下一个计时。
   void  TimeEnd();//停止步长计时;清空当前步长计时器。
};
信箱:FLYGOD2002@sohu.com

7

主题

20

帖子

20

积分

注册会员

Rank: 2

积分
20
 楼主| 发表于 2003-10-29 10:22:00 | 显示全部楼层

Re:可怜的暂停,可恶的时间,请版主和高手来帮忙

如果再加入一点功能,就更好了,
class myTimer{
public:
int GameStarTime();//返回游戏开始时间,单位秒。同时开始游戏计时。
int GameRunTime();//返回游戏运行的时间,单位秒。
    void  TimeStar(long 计时步长,int 步长ID);//开始计时,步长单位为毫秒。
    bool TimeStep(int 步长ID);//是否达到一个计时步长,如果达到重新开始下一个计时。
   void  TimeEnd(int 步长ID);//停止此步长ID计时;清空当前步长计时器。
};

1万

主题

1万

帖子

2万

积分

管理员

中级会员

Rank: 9Rank: 9Rank: 9

积分
20356
QQ
发表于 2003-10-29 11:00:00 | 显示全部楼层

Re:可怜的暂停,可恶的时间,请版主和高手来帮忙

先问一下,你用的是什么计时方法?

7

主题

20

帖子

20

积分

注册会员

Rank: 2

积分
20
 楼主| 发表于 2003-10-29 11:19:00 | 显示全部楼层

Re:可怜的暂停,可恶的时间,请版主和高手来帮忙

哈哈版主来了,
我用的计时方法也是抄来的,
__int64 start,freq;
QueryPerformanceCounter((LARGE_INTEGER*)&start);
time = (double)(start) / (double)freq; //将时间转为以秒为单位
可是无法把它加到我的时间类中。

7

主题

20

帖子

20

积分

注册会员

Rank: 2

积分
20
 楼主| 发表于 2003-10-29 11:23:00 | 显示全部楼层

Re:可怜的暂停,可恶的时间,请版主和高手来帮忙

到了吃饭时间了,
真可惜,版主如果在内蒙就好了,
我可以请你吃牛肉干和烤羊肉:)(不知道你是否忌口)
我上面的计时方法老是出错,产生的time值也不准,我又不要利用
windows的时间消息来计间,怕程序紧张时出错,麻烦版主来帮忙了。

1万

主题

1万

帖子

2万

积分

管理员

中级会员

Rank: 9Rank: 9Rank: 9

积分
20356
QQ
发表于 2003-10-29 11:48:00 | 显示全部楼层

Re:可怜的暂停,可恶的时间,请版主和高手来帮忙

有是用过timeGetTime()吗?
这个时间还算可以,精确到毫秒。

呵呵,你太客气了!

7

主题

20

帖子

20

积分

注册会员

Rank: 2

积分
20
 楼主| 发表于 2003-10-29 13:31:00 | 显示全部楼层

Re:可怜的暂停,可恶的时间,请版主和高手来帮忙

class myTimer
{
private:
        int  sTime;
        int  rTime;
        int StepTime[10];
        int ssTime[10];
public:
   int GameStarTime(){
        sTime=timeGetTime();
        return sTime/1000;
}//返回游戏开始时间,单位秒。同时开始游戏计时。
int GameRunTime(){
        rTime=timeGetTime()-sTime;
        return rTime/1000;
}//返回游戏运行的时间,单位秒。
void TimeStar(int iTime,int sID)
{
        if(ssTime[sID]!=-1)return;
        StepTime[sID]=iTime;
        ssTime[sID]=timeGetTime();
}
        //开始计时,步长单位为毫秒。
bool TimeStep(int sID)
{
        if(timeGetTime()-ssTime[sID]>StepTime[sID])
        {
                ssTime[sID]=timeGetTime();               
                return true;
        }
        else return false;
}
                //是否达到一个计时步长,如果达到重新开始下一个计时。
void TimeEnd(int sID)
{
        StepTime[sID]=-1; //停止此步长ID计时;清空当前步长计时器。
        ssTime[sID]=-1;
}
};
计时函数编写成功了,把源码发来让大家提提意见,感谢版主告诉我的timeGetTime(),这个类可以实现10个计时器,使用的时候先把两个数组ssTime,StepTime值清成-1;

1万

主题

1万

帖子

2万

积分

管理员

中级会员

Rank: 9Rank: 9Rank: 9

积分
20356
QQ
发表于 2003-10-29 14:21:00 | 显示全部楼层

Re:可怜的暂停,可恶的时间,请版主和高手来帮忙

呵呵,解决了就好!

90

主题

797

帖子

833

积分

高级会员

论坛版主

Rank: 4

积分
833
QQ
发表于 2003-10-29 17:10:00 | 显示全部楼层

Re:可怜的暂停,可恶的时间,请版主和高手来帮忙

哈哈,我家就在内蒙,哈哈。你是那里的?

23

主题

515

帖子

552

积分

高级会员

Rank: 4

积分
552
发表于 2003-10-30 15:40:00 | 显示全部楼层

Re:可怜的暂停,可恶的时间,请版主和高手来帮忙

绝心 的决写错了!!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-5-21 02:01

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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