📄 tblock.cpp
字号:
#include <e32math.h>
#include "TBlock.h"
const TUint16 bl_types[4][BLOCKNUM]=
// # ## ### ## #### ### ### ## ## ## ### # # # ## # #
// # # # ## ## ## # ## # # ## # #
{ {0x0400, 0x0600, 0x0700, 0x0620, 0x4444, 0x0e20, 0x0740, 0x06c0, 0x0c60, 0x6600, 0xe400, 0x02c0, 0x0550, 0x0c30, 0x05a0},
{0x0400, 0x0440, 0x2220, 0x0260, 0x0f00, 0x0644, 0x4460, 0x08c4, 0x04c8, 0x6600, 0x8c80, 0x0422, 0x0606, 0x2244, 0x4242},
{0x0400, 0x0c00, 0x0700, 0x0460, 0x4444, 0x0470, 0x02e0, 0x06c0, 0x0c60, 0x6600, 0x04e0, 0x0340, 0x0550, 0x0c30, 0x05a0},
{0x0400, 0x4400, 0x2220, 0x0640, 0x0f00, 0x2260, 0x0622, 0x08c4, 0x04c8, 0x6600, 0x2620, 0x4420, 0x0606, 0x2244, 0x4242},
};
TBlock TBlock::Block(TUint8 aType)
{
return TBlock(aType, 0);
}
TBlock TBlock::RandomBlock(TInt64 &seed, const TUint8 aClassify)
{
TUint8 type;
if(aClassify == 0)
// forward 11
type = static_cast<TUint8> (Math::Rand(seed) % (BLOCKNUM-4));
else if(aClassify == 1)
// all type
type = static_cast<TUint8> (Math::Rand(seed) % BLOCKNUM);
else
// last 11
type = static_cast<TUint8> ((Math::Rand(seed) % (BLOCKNUM-4)) + 4);
return Block(type);
}
void TBlock::Rotate(TInt8 aDir)
{
if (aDir > 0) // deasil
iRot++;
if (aDir < 0) // anticlockwise
iRot += 3;
iRot %= 4;
}
// get a row of the block
TUint16 TBlock::RowMask(TInt nr) const
{
return static_cast<TUint16> ((bl_types[iRot][iType] >> (4*nr)) & 0xf);
}
// Type() return the block's type
TUint8 TBlock::Type() const
{
return static_cast<TUint8> (iType + 1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -