grid.cpp

来自「《基于symbian手机开发与应用》一书的源代码」· C++ 代码 · 共 56 行

CPP
56
字号
#include "grid.h"
#include "s60test.pan"

TGrid::TGrid()
{
  Clear();
}

void TGrid::Clear()
{
  for (int i=0; i<KGridY; i++)
  {
    iMask[i]=0x003f;
    for (int j=0; j<KGridX; j++)
      iContent[i][j]=0;
  }
}

bool TGrid::DoesCollide(const TBlock &b, const TPoint &p) const
{
  int i;
  for (i=p.iY; i<p.iY+4; i++)
  {
    if (i<0)
    {
      if ((static_cast<TUint32>(b.RowMask(i-p.iY))<<(12-p.iX))&0xf003f)
        return true;
    } else
    if (i>=KGridY)
    {
      if (b.RowMask(i-p.iY)) return true;
    } else
    {
      if (iMask[i]&(b.RowMask(i-p.iY)<<(12-p.iX))) return true;
      if (p.iX<0 && ((b.RowMask(i-p.iY)>>(4+p.iX)))) return true;
    }
  }
  return false;
}

void TGrid::PutBlock(const TBlock &b, const TPoint &p)
{
  int i, j;
  int c=b.Color();
  for (i=p.iY; i<p.iY+4; i++)
  {
    if (i<0) continue;
    if (i>=KGridY) break;
    TUint16 mask=b.RowMask(i-p.iY);
    iMask[i]|=mask<<(12-p.iX);
    for (j=p.iX; j<p.iX+4; j++)
      if (mask&(1<<(3-j+p.iX)))
        iContent[i][j]=c;
  }
}

⌨️ 快捷键说明

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