开发 Symbian 系统上的俄罗斯方块实例
2010-02-22 23:39:00 来源:WEB开发网我们用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,我将用
- ››开发Android 日历教程
- ››开发学院总结 Win 8实用技巧大全
- ››开发学院原创教程:把win8的IE10放桌面上方法(非...
- ››开发者眼中的Windows Phone和Android
- ››Symbian S60 SocketConnection参数
- ››开发学院教你用SQL 语句最快速清空MySQL 数据表的...
- ››Symbian乏力:2010年诺基亚悲情大事记
- ››Symbian三大升级开启2011年新战略
- ››Symbian/Android/iOS/WM安装包对比
- ››Symbian一个活动对象的测试例子
- ››Symbian ListBox控件
- ››Symbian下自动切换SDK的批处理代码
更多精彩
赞助商链接