俄罗斯方块的翻转和方块类型的java代码和原理
static int[][] pattern = {
{0x0f00,0x4444,0x0f00,0x4444},//用十六进至表示,本行表示长条四种状态
{0x04e0,0x0464,0x00e4,0x04c4},
{0x4620,0x6c00,0x4620,0x6c00},
{0x2640,0xc600,0x2640,0xc600},
{0x6220,0x1700,0x2230,0x0740},
{0x6440,0x0e20,0x44c0,0x8e00},
{0x0660,0x0660,0x0660,0x0660}
};
//实现“块”翻转的方法
public void leftTurn(){
if(assertValid(blockType,(turnState + 1)%4,row,col)){
dispBlock(0);
turnState = (turnState + 1)%4;
dispBlock(1);
}
} 看不懂啊,尤其是长条的四种状态
------解决方案--------------------视觉上看,长条只有两种形态。猜测代码为了保证旋转的一致性,长条定义的和其它形状一样,有四种方向(其中两两相同),这样就可以统一处理了。
------解决方案--------------------每个十六进制数代表方块一种状态。方块是在4x4的网格中的,十六进制数的每一位代表一列(或者行),十六进制一位中的每个二进制位(1,2,4,8)代表行索引(或者列)