游戏开发论坛

 找回密码
 立即注册
搜索
查看: 5542|回复: 12

请教--关于计时器

[复制链接]

2

主题

14

帖子

14

积分

新手上路

Rank: 1

积分
14
发表于 2003-10-3 13:20:00 | 显示全部楼层 |阅读模式
小弟初学编程,刚做了一个贪吃蛇游戏,虽然雏形已经完成,但无奈在编程方面了解甚浅,不懂应用计时器,所以游戏存在一个大问题,就是无法控制“蛇”的速度。
恳求众位高手,传授一下关于计时器方面的知识,或者稍加指点。谢谢~~

sf_2003103132054.rar

148.75 KB, 下载次数:

90

主题

797

帖子

833

积分

高级会员

论坛版主

Rank: 4

积分
833
QQ
发表于 2003-10-3 13:48:00 | 显示全部楼层

Re:请教--关于计时器

new = old = timegetTime();
if( new - old > xxx )
{
      codes......
}

2

主题

14

帖子

14

积分

新手上路

Rank: 1

积分
14
 楼主| 发表于 2003-10-3 19:46:00 | 显示全部楼层

Re:请教--关于计时器

timeGetTime() 好像是以秒为单位喔

2

主题

14

帖子

14

积分

新手上路

Rank: 1

积分
14
 楼主| 发表于 2003-10-3 19:58:00 | 显示全部楼层

Re:请教--关于计时器

我现在就是不知道哪里出错了,虽然我也是用那个方法去计时,但刷新速度并不均匀,那“蛇”时动时不动的,如果鼠标在其它窗口和游戏窗口之间来回移动,“蛇”就会匀速地移动,而且速度快了很多。能否帮忙看一下代码里边哪里出错。

5

主题

21

帖子

21

积分

注册会员

Rank: 2

积分
21
发表于 2003-10-3 20:55:00 | 显示全部楼层

Re:请教--关于计时器

  如果是用的MFC,要重载WinApp类的的Run()函数就正常了。详细说明见Sea_Bug的教程。

5

主题

21

帖子

21

积分

注册会员

Rank: 2

积分
21
发表于 2003-10-3 20:59:00 | 显示全部楼层

Re:请教--关于计时器

  另外计时最好使用 GetTickCount() 函数。可以得到毫秒级的时间精度。不过缺点是有人使用变速齿轮一类软件时会被改变速度。

2

主题

14

帖子

14

积分

新手上路

Rank: 1

积分
14
 楼主| 发表于 2003-10-3 22:52:00 | 显示全部楼层

Re:请教--关于计时器

好的,谢谢。
我是用SDK里边一个DirectDraw的样板为基础改出来的
里边有一行
srand(GetTickCount());
我不懂是什么意思

90

主题

797

帖子

833

积分

高级会员

论坛版主

Rank: 4

积分
833
QQ
发表于 2003-10-3 23:06:00 | 显示全部楼层

Re:请教--关于计时器

用时间,随机播撒种子

2

主题

14

帖子

14

积分

新手上路

Rank: 1

积分
14
 楼主| 发表于 2003-10-3 23:23:00 | 显示全部楼层

Re:请教--关于计时器

何为“种子”?
能详细解释一下吗?

3

主题

77

帖子

77

积分

注册会员

Rank: 2

积分
77
发表于 2003-10-3 23:32:00 | 显示全部楼层

Re:请教--关于计时器

这样解决,见俺的代码
//进入消息循环
    while (TRUE)
    {
                if(PeekMessage(&msg,NULL,0,0,PM_REMOVE))
                {
                        if(msg.message==WM_QUIT)
                                break;
                       
            TranslateMessage(&msg);
            DispatchMessage(&msg);
                }
                else if(bActive)
                {
                        static int NewTime,OldTime=0;
                        NewTime=GetTickCount();
                        if(NewTime>OldTime+speed)
                        {
                                OldTime=NewTime;
                MainLoop();
                        }
                }
                else
                        WaitMessage();
        }
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-2-22 11:56

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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