WEB开发网
开发学院手机开发Symbian 开发 开发 Symbian 系统上的俄罗斯方块实例 阅读

开发 Symbian 系统上的俄罗斯方块实例

 2010-02-22 23:39:00 来源:WEB开发网   
核心提示:RESOURCE TBUF32 r_note_game_over{buf = "Game Over";}Build 将其建成s60test..rsg文件,在这个文件中R_NOTE_GAME_OVER定义成ID,通过CEikonEnv::Static()->ReadResource(messag

RESOURCE TBUF32 r_note_game_over

{

buf = "Game Over";

}

Build 将其建成s60test..rsg文件,在这个文件中R_NOTE_GAME_OVER定义成ID,通过

CEikonEnv::Static()->ReadResource(message, R_NOTE_GAME_OVER)

来加载"game over"

第五步

我们已经基本完成游戏,但是在几个方面还要改进。

第一个是用户打开其它程序或打开菜单,游戏仍在继续,当他回来继续玩的时候,游戏可能已经结束了,为避免这样因此我们应加入暂停的功能。

暂停/停止暂停的功能用户将会在暂停的时候用到,这时将要修改选择的菜单,TechPause/TechUnPause将会被用户切换到其他程序或菜单(不改变菜单选项)时调用,

void TechPause() { iTechPauseRef++; DoPause(); }

void TechUnpause() { iTechPauseRef--; DoPause(); }

这两个都参考了计数器,调用两次TechPause,将调用两次TechUnPause来停止暂停游戏,这是以前老版本游戏的用法,本游戏不是这样的

void CS60TestAppView::FocusChanged(TDrawNow aDrawNow)

{

if (IsFocused())

{

if (!iFocus)

{

iFocus=true;

iEngine->TechUnpause();

}

} else

{

if (iFocus)

{

iFocus=false;

iEngine->TechPause();

}

}

}

如果在DoPause里进行暂停和停止暂停,在暂停是我们要计算暂停多长时间,并结束计数器,

void CS60TestEngine::DoPause()

{

__ASSERT_ALWAYS(iPauseRef>=0 && iTechPauseRef>=0, Panic(ES60TestAssert));

if (iPauseRef==0 && iTechPauseRef==0)

{

if (iState==EPaused)

{

int ms=iPauseTime.MicroSecondsFrom(iBeginTime).Int64().GetTInt();

if (ms<0 || ms>iInterval)

ms=0;

iState=ERunning;

After(iInterval-ms);

}

} else

{

if (iState==ERunning)

{

上一页  1 2 3 4 5 6 7  下一页

Tags:开发 Symbian

编辑录入:coldstar [复制链接] [打 印]
赞助商链接