第九课:SDL计时器

  这一课主要讲SDL的一个Ticket的应用,基本的例子就是计时器的应用,没有什么很复杂的东西,在上一课基础上就是加入了SDL_GetTicks的应用而已。

这个是一个计时器的一个类

timer.h

#ifndef TIMER_H
#define TIMER_H

/**
    计时器
**/
class Timer {
public:
    Timer();
    ///计时器开始
    void Start();
    ///计时器停止
    void Stop();
    //计时器暂停
    void Pause();
    ///更新计时器
    void Unpause();
    /**
        重新开始计时
    */
    int Restart();
    /**
        获取计时器的值
    */
    int Ticks() const;
    //是否已经启动
    bool Started() const;
    //是否暂停
    bool Paused() const;

private:
    int mStartTicks, mPausedTicks;
    bool mStarted, mPaused;
};

#endif

timer.cpp

#include "timer.h"


#ifdef __cplusplus
extern "C" {
#endif
#include <SDL2/SDL.h>
#include <SDL2/SDL_image.h>
#include <SDL2/SDL_ttf.h>
#ifdef __cplusplus
}
#endif

Timer::Timer()
    : mStartTicks(0), mPausedTicks(0), mStarted(false), mPaused(false)
{
}
void Timer::Start(){
    mStarted = true;
    mPaused  = false;
    mStartTicks = SDL_GetTicks();
}
void Timer::Stop(){
    mStarted = false;
    mPaused  = false;
}
void Timer::Pause(){
    if (mStarted && !mPaused){
        mPaused = true;
        mPausedTicks = SDL_GetTicks() - mStartTicks;
    }
}
void Timer::Unpause(){
    if (mPaused){
        mPaused = false;
        mStartTicks = SDL_GetTicks() - mPausedTicks;
        mPausedTicks = 0;
    }
}
int Timer::Restart(){
    int elapsedTicks = Ticks();
    Start();
    return elapsedTicks;
}
int Timer::Ticks() const {
    if (mStarted){
        if (mPaused)
            return mPausedTicks;
        else
            return SDL_GetTicks() - mStartTicks;
    }
    return 0;
}
bool Timer::Started() const {
    return mStarted;
}
bool Timer::Paused() const {
    return mPaused;
}

SDL关于Window的一个封装

window08.h

#ifndef WINDOW_H
#define WINDOW_H

#in
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值