BenjaminYoung29 2015-05-02 11:56
浏览 880

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;
}

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

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

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
    • ¥15 有了解d3和topogram.js库的吗?有偿请教
    • ¥100 任意维数的K均值聚类
    • ¥15 stamps做sbas-insar,时序沉降图怎么画
    • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
    • ¥15 关于#Java#的问题,如何解决?
    • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
    • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
    • ¥15 cmd cl 0x000007b
    • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line