SDL多个定时器是否可行

问题描述

SDL多个定时器是否可行

SDL可以设置多个定时器吗?可以的话是只是通过TimeID来区分吗?

    if (Screen_src.x == 0)
    {
        Trap_Rain Rain;//陷阱
        try
        {
            myRTime = SDL_AddTimer(RINTERVALS, Raining, NULL);
            if (myRTime == NULL)
                throw SDL_GetError();
        }
        catch (const char *s)
        {
            cerr << "myRTime inited failed" << endl << s << endl;
        }
    }

 Uint32 Raining(Uint32 interval, void* A1)
{
    Trap_Rain* A = (Trap_Rain*)A1;
    A->rRain.y += 5;
    if (A->rRain.y > 330){
        A->rRain.y = A->RainY;
    }
    if (A->rRain.x >= HeroX&&A->rRain.x <= HeroX + Hero_Width&&A->rRain.y == HeroY){
        if (A->invinsible == 0){
            --Health;
            cout << Health << endl;
            if (Health > 0)
            A->invinsible = SDL_GetTicks() + 5000;  //若健康值不为0则无敌
            else{
                cout << "Dead" << endl;
                SDL_RemoveTimer(myRTime);
                SDL_Quit();
            }
        }
        else if (A->invinsible == SDL_GetTicks())
            A->invinsible = 0;
    }
    else{
        SDL_BlitSurface(A->pBack2, &A->rBack2, pBack, &A->rBack2);//局部刷新pBack2
        SDL_BlitSurface(A->pRain, NULL, pBack, &A->rCloud);//把雨滴图片放在背景上
        SDL_BlitSurface(pBack, NULL, pScreen, &Screen_src);
        SDL_Flip(pScreen);
    }
    return RINTERVALS;
}

上面是我在函数里声明的第二个定时器,但程序一到这一步就停止运行了。
我的目的是想写一个小游戏,有一个陷阱是下雨的。想通过定时器让雨滴下落。同时在这个定时器里判断主角是否触碰雨滴。

雨滴陷阱类是主角类的友元。

时间: 2024-09-19 09:46:54

SDL多个定时器是否可行的相关文章

JavaScript定时器详解及实例

这篇文章详细介绍了JavaScript定时器及实例,有需要要的朋友可以参考一下   JS里设定延时: 使用SetInterval和设定延时函数setTimeout 很类似.setTimeout 运用在延迟一段时间,再进行某项操作. setTimeout("function",time) 设置一个超时对象 setInterval("function",time) 设置一个超时对象 SetInterval为自动重复,setTimeout不会重复. clearTimeou

SDL历程:课程设计之精灵图

终于算是忙过去了一段时间,可以好好地写写总结了,这一周写了不少SDL方面的小项目: 下面就一一粘出来: 1.精灵图问题 /* preDefine.h*/ #ifndef __PRE_DEFINE_H #define __PRE_DEFINE_H #include <stdio.h> #ifndef false #define false 0 #endif #ifndef true #define true 1 #endif #ifndef error #define error -1 #end

SDL介绍

SDL(Simple DirectMedia Layer)是一套开放源代码的跨平台多媒体开发库,使用C语言写成.SDL提供了数种控制图像.声音.输出入的函数,让开发者只要用相同或是相似的代码就可以开发出跨多个平台(Linux.Windows.Mac OS X等)的应用软件.目前SDL多用于 简介   title SDL(Simple DirectMedia Layer)被广泛的用于许多著名的游戏.最著名的游戏是赢得Linux组游戏开发大奖的 文明:权利的召唤(Civilization: Call

JavaScript定时器详解及实例_javascript技巧

JS里设定延时: 使用SetInterval和设定延时函数setTimeout 很类似.setTimeout 运用在延迟一段时间,再进行某项操作. setTimeout("function",time) 设置一个超时对象 setInterval("function",time) 设置一个超时对象 SetInterval为自动重复,setTimeout不会重复. clearTimeout(对象) 清除已设置的setTimeout对象 clearInterval(对象)

javascript中SetInterval与setTimeout的定时器用法_javascript技巧

示例一: 查看演示 下载源码 setTimeout() 方法用于在指定的毫秒数后调用函数或计算表达式,而setInterval()则是在每隔指定的毫秒数循环调用函数或表达式,直到clearInterval把它清除.也就是说setTimeout()只执行一次,setInterval()可以执行多次.两个函数的参数也相同,第一个参数是要执行的code或句柄,第二个是延迟的毫秒数. setTimeOut用法 setTimeout函数的用法如下: var timeoutID = window.setTi

link环境下制作一款《订餐软件》,定时配送的功能怎么实现?使用定时器还是什么?

问题描述 link环境下制作一款<订餐软件>,定时配送的功能怎么实现?使用定时器还是什么? link环境下制作一款<订餐软件>,定时配送的功能怎么实现?使用定时器还是什么? 解决方案 这个可以使用quartz.net http://blog.csdn.net/gavin_luo/article/details/12758973

link环境下制作一款《订餐软件》,请问延迟发货的定时器和定时发货的定时器的区隔怎么实现?

问题描述 link环境下制作一款<订餐软件>,请问延迟发货的定时器和定时发货的定时器的区隔怎么实现? link环境下制作一款<订餐软件>,请问延迟发货的定时器和定时发货的定时器的区隔怎么实现? 解决方案 这个可以使用quartz.net http://blog.csdn.net/gavin_luo/article/details/12758973

link环境下制作一款《订餐软件》,请问定时发货的实现,如何多个定时器编程?

问题描述 link环境下制作一款<订餐软件>,请问定时发货的实现,如何多个定时器编程? link环境下制作一款<订餐软件>,请问定时发货的实现,如何多个定时器编程? 解决方案 这个可以使用quartz.net http://blog.csdn.net/gavin_luo/article/details/12758973

link环境下制作一款《订餐软件》,请问如何对定时发货做定时器归零?

问题描述 link环境下制作一款<订餐软件>,请问如何对定时发货做定时器归零? link环境下制作一款<订餐软件>,请问如何对定时发货做定时器归零? 解决方案 在你的数据库中记录下发货时间,使用触发器,到了时间就对数据清零处理.