这一课主要讲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