s60testdocument.cpp

来自「使用symbian的s60实现的小游戏俄罗斯方块(第而步)」· C++ 代码 · 共 91 行

CPP
91
字号
#include "S60TestAppUi.h"
#include "S60TestDocument.h"

// Standard Symbian OS construction sequence
CS60TestDocument *CS60TestDocument::NewL(CEikApplication& aApp)
{
  CS60TestDocument *self=NewLC(aApp);
  CleanupStack::Pop(self);
  return self;
}

CS60TestDocument *CS60TestDocument::NewLC(CEikApplication& aApp)
{
  CS60TestDocument *self=new(ELeave) CS60TestDocument(aApp);
  CleanupStack::PushL(self);
  self->ConstructL();
  return self;
}

void CS60TestDocument::ConstructL()
{
  TTime time;
  time.HomeTime();
  seed=time.Int64();
  Reset();
}

CS60TestDocument::CS60TestDocument(CEikApplication& aApp)
:CAknDocument(aApp),
 iGrid(),
 iCurrBlock(),
 iBlockPos(3, -4)
{
}

CS60TestDocument::~CS60TestDocument()
{
}

void CS60TestDocument::Reset()
{
  iGrid.Clear();
  iBlockPos=TPoint(3, -4);
  iCurrBlock=TBlock::RandomBlock(seed);
}

void CS60TestDocument::NewBlock()
{
  iCurrBlock=TBlock::RandomBlock(seed);
  iBlockPos=TPoint(3, -4);
}

bool CS60TestDocument::FixBlock()
{
  int i;
  // check if it is outside the board
  for (i=0; i<-iBlockPos.iY; i++)
    if (iCurrBlock.RowMask(i))
      return false;

  iGrid.PutBlock(iCurrBlock, iBlockPos);
  return true;
}

bool CS60TestDocument::IsBlock(const TPoint &p) const
{
  if (p.iX>=iBlockPos.iX && p.iX<iBlockPos.iX+4 &&
      p.iY>=iBlockPos.iY && p.iY<iBlockPos.iY+4)
    return (iCurrBlock.RowMask(p.iY-iBlockPos.iY)&(1<<(3-p.iX+iBlockPos.iX)))>0;
  return false;
}

void CS60TestDocument::GetRowContent(int nr, TFixedArray<TInt8, KGridX> &row) const
{
  int i;
  for (i=0; i<KGridX; i++)
  {
    if (IsBlock(TPoint(i, nr))) row[i]=iCurrBlock.Color();
      else row[i]=iGrid.iContent[nr][i];
  }
}

CEikAppUi *CS60TestDocument::CreateAppUiL()
{
  // Create the application user interface, and return a pointer to it,
  // the framework takes ownership of this object
  iAppUi=new(ELeave) CS60TestAppUi(this);
  return iAppUi;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?