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

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

 2010-02-22 23:39:00 来源:WEB开发网   
核心提示:我们用TGrid获得方块类型,用DrawLine和DrawRect来画背板,开发 Symbian 系统上的俄罗斯方块实例(4),用SetPenColor来控制边框和线条的颜色,用SetBrushStyle/SetBrushColor来控制背板小方块的颜色,这样就很无聊,这一步我们将加入游戏引擎,所以CWindowGc的

我们用TGrid获得方块类型,用DrawLine和DrawRect来画背板,用SetPenColor来控制边框和线条的颜色,用SetBrushStyle/SetBrushColor来控制背板小方块的颜色,所以CWindowGc的方法可以查看SDK帮助文件。

我们需要对每个按键起作用,每次按键产生一个事件,该事件首先送给 CS60TestAppView处理,将压到AddStackL栈顶部,缺省执行是返回EKeyWasNoConsumed,接下来此事件将送给 CS60TestAppUi处理,在这个类中将用HandlKeyEventL来处理对应的按键.

KeyResponse CS60TestAppUi::HandleKeyEventL(const TKeyEvent &aKeyEvent,

TEventCode aType)

{

if (aType==EEventKey)

{

if (aKeyEvent.iCode==EKeyUpArrow)

if (iDoc->iBlockPos.iY>0)

iDoc->MoveBlock(iDoc->iBlockPos-TPoint(0, 1));

if (aKeyEvent.iCode==EKeyDownArrow)

iDoc->MoveBlock(iDoc->iBlockPos+TPoint(0, 1));

if (aKeyEvent.iCode==EKeyLeftArrow)

iDoc->MoveBlock(iDoc->iBlockPos-TPoint(1, 0));

if (aKeyEvent.iCode==EKeyRightArrow)

iDoc->MoveBlock(iDoc->iBlockPos+TPoint(1, 0));

if (aKeyEvent.iCode==EKeyDevice3)

{

if (iDoc->FixBlock())

iDoc->NewBlock();

}

if (aKeyEvent.iCode=='1')

iDoc->RotateBlock(-1);

if (aKeyEvent.iCode=='0' || aKeyEvent.iCode=='3')

iDoc->RotateBlock(1);

}

return EKeyWasNotConsumed;

}

但方格有变化时,我们将重画屏幕,CS60TestAppUi::UpdateBroad里的DrawDeferred来刷新整个屏幕。

好的设计是对每个按键都用EKeyWasConsumed来响应,我们会用EKeyWasNotConsumed来处理一些无用的按键。

最后在菜单里假如"new game"选项.

MENU_ITEM {command = ES60TestNewGame; txt = "New Game";}

当前游戏还不是一个有趣的游戏,用户可以移动方块到他想要的地方,这样就很无聊,这一步我们将加入游戏引擎,它将使方块自由下落。

这个引擎类是CTimer类的继承类CS60TestEngine,我将用

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

Tags:开发 Symbian

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