开发 Symbian 系统上的俄罗斯方块实例
2010-02-22 23:39:00 来源:WEB开发网在这一步中我将加入游戏需要的数据结构。
这里我们又加入了两个类TBlock和TGrid,这两个类没有特定的数据类型,它们是T型类,TBlock指向一个单个的俄罗斯方块(由四个小方块组成),TGrid指向已由(20*10)小方块填充的格子。在document类中,iGrid包含当前面板,iCurrBlock包含正在下落的方块,iBlockPos是正在下落方块的位置。
本例加的主要是比特的位操作,symbian OS特殊之处是用了TFixedArray类,它象普通的类被利用,但是内部会有下标检查,当在TFixedArray中下标是20时不会有内存溢出而是抛出错误。
第三步:加入用户接口
这一步我们将加入用户接口来测试第二步中加入的数据结构,我们可以用方向键移动方块到想要的位置然后用OK来固定方块(因为刚开始方块在顶部,先按向下的方向键,才能看到方块),玩家可以旋转方块。
首先用CS60TestAppView::Draw函数画背板,
void CS60TestAppView::Draw(const TRect& /*aRect*/) const
{
CWindowGc &gc=SystemGc();
TRect rect=Rect();
gc.Clear(rect);
int i, j;
TFixedArray
gc.SetPenColor(TRgb(0));
gc.SetBrushStyle(CWindowGc::ESolidBrush);
for (i=0; i<=KGridY; i++)
gc.DrawLine(TPoint(KBoardOffset, KBoardOffset+KCellSize*i),
TPoint(KBoardOffset+KGridX*KCellSize, KBoardOffset+KCellSize*i));
for (i=0; i<=KGridX; i++)
gc.DrawLine(TPoint(KBoardOffset+KCellSize*i, KBoardOffset),
TPoint(KBoardOffset+KCellSize*i, KBoardOffset+KGridY*KCellSize));
for (i=0; i
{
iDoc->GetRowContent(i, arr);
for (j=0; j
{
gc.SetBrushColor(KColors[arr[j]]);
if (arr[j])
gc.DrawRect(TRect(KBoardOffset+KCellSize*j, KBoardOffset+KCellSize*i,
KBoardOffset+KCellSize*(j+1)+1, KBoardOffset+KCellSize*(i+1)+1));
}
}
}
- ››开发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的批处理代码
更多精彩
赞助商链接