ZEngine Demo 5 - ZTimer 初级使用



easycker
2010-11-10 13:07:37

[i=s] 本帖最后由 easycker 于 2010-11-11 16:42 编辑 [/i]

ZTimer:定时器

一、基本使用(1)文字动态变化
Game.h:[code]
#ifndef _GAME_H
#define _GAME_H

#include "ZGame.h"

class Game : public ZGame
{
public:
Game(){}
~Game(){}

void GameInitial();
void GameCircle();
void GameDrawScene();
void GameButtonDown(int nKeyNumber);
void GameButtonUp(int nKeyNumber);
void GameEnd();

private:
//(1)
ZTimer *m_timer; //定时器
ZFont *m_font; //字体,用于显示时间,来观察定时器的运作
char *m_str; //m_font显示的文字
};

#endif
[/code]Game.cpp:[code]
//游戏入口类

#include "Game.h"

//游戏初始化
void Game::GameInitial()
{
ZImage::SetScreenColors(255,255,255,255); //设定白色背景
//(2)初始化与加载
m_font = new ZFont();
m_timer = new ZTimer(); //如果写m_timer = new ZTimer(false); 则需要用户调用start函数来启动,这里不填默认为已经开始
m_str = new char[64]; //建立一个最大字符数为64的空字符串

m_font->Load("fonts/simfang.ttf",50);

}


//游戏循环
void Game::GameCircle()
{
//(2)更新
static int count = 0; //用做计数

if(m_timer->Timer(100)) //0.1秒执行一次里面的内容 里面填整数单位用毫秒,填小数单位用秒
{
m_font->CleanAllText(); //清空字体的屏幕,刷新用(需要放到开头),不然会留下残影

sprintf(m_str,"计数: %d",count); //显示 "计数:数量..."
m_font->SetText(m_str); //将字符串放到m_font里

count ++; //计数值间隔0.1秒 +1
}

}

//游戏绘图
void Game::GameDrawScene()
{
//(3)显示
m_font->Show();
}

//按下按键
void Game::GameButtonDown(int nKeyNumber)
{

}

//弹起按键
void Game::GameButtonUp(int nKeyNumber)
{

}

//游戏结束
void Game::GameEnd()
{
Quit();
}
[/code][attach]16720[/attach]
二、基本使用 图片变换
Game.h:[code]
#ifndef _GAME_H
#define _GAME_H

#include "ZGame.h"

class Game : public ZGame
{
public:
Game(){}
~Game(){}

void GameInitial();
void GameCircle();
void GameDrawScene();
void GameButtonDown(int nKeyNumber);
void GameButtonUp(int nKeyNumber);
void GameEnd();

private:
//(1)
ZTimer *m_timer1; //定时器
ZTimer *m_timer2;

ZImage *m_img; //图片
float m_img_x1,m_img_y1; //第一个图片的坐标
float m_img_x2,m_img_y2;
};

#endif
[/code]Game.cpp:[code]
//游戏入口类

#include "Game.h"

//游戏初始化
void Game::GameInitial()
{
//(2)初始化与加载
m_timer1 = new ZTimer();
m_timer2 = new ZTimer();
m_img = new ZImage();

m_img_x1 = 0,m_img_y1 = 0;
m_img_x2 = 0,m_img_y2 = 0;

m_img->Load("image/block.png");

}


//游戏循环
void Game::GameCircle()
{
//(2)更新
if(m_timer1->Timer(20)) //间隔20毫秒也就是0.02秒
{
//坐标更新
m_img_x1 += 10;
m_img_y1 += 5;

//范围限制
if(m_img_x1 >= 480)
m_img_x1 = 0;
if(m_img_y1 >= 272)
m_img_y1 = 0;
}

if(m_timer2->Timer(0.1)) //0.1秒
{
//坐标更新
m_img_x2 += 5;
m_img_y2 += 5;

//范围限制
if(m_img_x2 >= 480)
m_img_x2 = 0;
if(m_img_y2 >= 272)
m_img_y2 = 0;
}

}

//游戏绘图
void Game::GameDrawScene()
{
//(3)显示
m_img->Show(m_img_x1,m_img_y1); //显示第一个
m_img->Show(m_img_x2,m_img_y2); //显示第二个
}

//按下按键
void Game::GameButtonDown(int nKeyNumber)
{

}

//弹起按键
void Game::GameButtonUp(int nKeyNumber)
{

}

//游戏结束
void Game::GameEnd()
{
Quit();
}

[/code][attach]16723[/attach]


boy545003571
2010-11-10 13:14:21

好详细的教程的说~~


love_xiaolu
2010-11-10 19:26:28

我是来给零花钱的!


easycker
2010-11-10 21:11:17

[b]回复 [url=http://www.yayabo.cn/redirect.php?goto=findpost&pid=150891&ptid=13408]3#[/url] [i]love_xiaolu[/i] [/b]
辛苦你拉。