⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tblock.cpp

📁 俄罗斯方块
💻 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 + -