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

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

 2010-02-22 23:39:00 来源:WEB开发网   
核心提示:在这一步中我将加入游戏需要的数据结构,这里我们又加入了两个类TBlock和TGrid,这两个类没有特定的数据类型,开发 Symbian 系统上的俄罗斯方块实例(3),它们是T型类,TBlock指向一个单个的俄罗斯方块(由四个小方块组成),才能看到方块),玩家可以旋转方块,TGrid指向已由(20*10)小方块填充的格子

在这一步中我将加入游戏需要的数据结构。

这里我们又加入了两个类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 arr;

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));

}

}

}

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

Tags:开发 Symbian

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