日期:2014-05-20  浏览次数:20833 次

俄罗斯方块的翻转和方块类型的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); 

} 看不懂啊,尤其是长条的四种状态
java 俄罗斯方块

------解决方案--------------------
视觉上看,长条只有两种形态。猜测代码为了保证旋转的一致性,长条定义的和其它形状一样,有四种方向(其中两两相同),这样就可以统一处理了。
------解决方案--------------------
每个十六进制数代表方块一种状态。方块是在4x4的网格中的,十六进制数的每一位代表一列(或者行),十六进制一位中的每个二进制位(1,2,4,8)代表行索引(或者列)