当前位置: 首页 > 工具软件 > DarkGDK > 使用案例 >

DarkGDK库学习笔记(陆)

邵凯定
2023-12-01
   阴天了一个上午,期待一场可以让我无比顺畅的雨~~~


    Dark GDK程序在显示输出时,输出的内容实际是再窗口内容刷新后才发送到屏幕的。默认情况下,Dark GDK程序会尽快刷新黑框框。但是,执行任务繁重的代码可能干扰刷新速度。比如,执行一个死循环的时候,CPU就没有时间来刷新屏幕了~~~

    下面介绍一组函数,用来接手系统的控制权控制刷新黑框框~~~

    56.dbSyncOn()

    void型,空参,作用:执行该函数后,由程序控制刷新黑框框,系统不会在自动刷新~~~

    57.dbSyncRate(int)

    void型,一个整形参数,表示黑框框一秒最大的刷新次数,作用:程序接管黑框框刷新后,由该函数指定刷新频率,频率越大,刷新越快,0是种特殊情况,参数为0表示尽快刷新,而不是每秒刷新0次~~~

    58.LookGDK()

    int型,空参,作用:控制循环每秒的执行次数,通过返回值告诉程序用户是否要终止程序,如果用户按Esc键或者关闭程序窗口,返回值为0,表示终止程序,否则返回非0值~~~一般用在while循环~~~

    tips:LookGDK函数和dbSyncRate函数有连带关系,刷新频率和循环执行频率同步,具体情况下面会取一个例子解释~~~

    59.dbSync()

    void型,空参,作用:刷新黑框框~~~

    60.dbSyncOff()

    void型,空参,作用:重新开始自动刷新黑框框,也就是把主动权交还给系统~~~


    学习了上面这一组函数以后,我们就可以写一些简单的游戏循环~~~

    所谓游戏循环,就是在游戏和动画中使用的一种特殊循环,作用是同步屏幕刷新和程序的其他操作~~~

    循环这玩样儿大家应该很熟悉,for,while,do…while大家也应该都用的炉火纯青,就不多做解释了~~~

    先贴一段书上的代码:(注释我加的,有点2)

    /*在黑框框上随机画点*/

    #include"DarkGDK.h"
    void DarkGDK()
    {
        const int MAX_X=dbScreenWidth();  /*用const关键字定义一个静态变量,其实就相当于一个宏了,只是两者的工作性质不   一样,dbScreenWidth函数用来获得黑框框的宽度*/
        const int MAX_Y=dbScreenHeight();
        int x,y; //定义两个整形变量,用作后面dbDot函数的参数
        dbRandomize(dbTimer()); //为dbRND函数提供种子
        dbSyncOn();  //从这步开始到while循环结束,就是一个游戏循环,dbSyncOn函数接管刷新
        dbSyncRate(60); //设置刷新频率
        while(LoopGDK())  /*当不按Esc或者不关闭窗口的时候,LoopGDK返回值为非0,非0的逻辑值即为真,循环会一直执行,相当于一个死循环,但是执行频率和dbScreenRate定的刷新频率一样*/
        {
            x=dbRND(MAX_X); //随机产生点的x坐标
            y=dbRND(MAX_Y);//随机产生点得y坐标
            dbDot(x,y); //画一个点
            dbSync();//刷新屏幕,刷新之后画的点才 显示
        }
    }


    游戏循环的框架:

    dbSyncOn();

    dbSyncON(x);//x表示自己设定的刷新频率,书上说范围在0~1000之间,0表示尽快刷新,但我试了2000,还是可以的

    while(LoopGDK())

    {

        代码;

        代码;

        ……

        dbSync();

    }

    dbSyncOff函数没介绍,很少用到~~~


    游戏循环就介绍完了~~~

    靠,还是没下雨~~~


 类似资料: