一个俄罗斯方块,描述方块图形的类,看了半天没有看懂,望大家指教
这是一段俄罗斯方块,描述方块图形的类,我看了很久一致不理解0,1,-1,2,-2的意思,以前用0,1,习惯了,现在看不懂了,到底这段算法是怎么实现的,看看,各位看客能不能给我个提示。看来我是真的笨了。
class BrickShape {
short[] groupx = new short[4];
short[] groupy = new short[4];
static BrickShape[] _shapes;
public static final int SHAPE_COUNT = 6;
static {
// 都以左下角为坐标点
short[] shapes = {
//
// ##
// ##
0, 0, 0, -1, 1, 0, 1, -1,
//
0, 0, 0, -1, 1, 0, 1, -1,
//
0, 0, 0, -1, 1, 0, 1, -1,
//
0, 0, 0, -1, 1, 0, 1, -1,
// _#__#_______#
// ###_##_###_##
// ____#___#___#
0, 0, -1, 0, 1, 0, 0, -1,
//
0, 0, 0, 1, 0, -1, 1, 0,
//
0, 0, -1, 0, 1, 0, 0, 1,
//
0, 0, 0, -1, 0, 1, -1, 0,
// ## # #
// _# ### # ###
// _# ## #
//
0, 0, 0, -1, 0, -2, 1, 0,
//
0, 0, 1, 0, 2, 0, 0, 1,
//
0, 0, 0, 1, 0, 2, -1, 0,
//
0, 0, -1, 0, -2, 0, 0, -1,
// # ##
// # # # ###
// ## ### # #
//
0, 0, 0, -1, 0, -2, -1, 0,
//
0, 0, 1, 0, 2, 0, 0, -1,
//
0, 0, 0, 1, 0, 2, 1, 0,
//
0, 0, -1, 0, -2, 0, 0, 1,
// ####
0, 0, -1, 0, 1, 0, 2, 0,
//
0, 0, 0, -1, 0, 1, 0, 2,
//
0, 0, -1, 0, -2, 0, 1, 0,
//
0, 0, 0, -1, 0, -2, 0, 1,
// ## #
// ## ##
// #
0, 0, 0, -1, -1, -1, 1, 0,
//
0, 0, 1, 0, 1, -1, 0, 1,
//
0, 0, 0, -1, -1, -1, 1, 0,
//
0, 0, 1, 0, 1, -1, 0, 1,
//
};
_shapes = new BrickShape[4 * SHAPE_COUNT];
for (int i = 0; i < SHAPE_COUNT; ++i) {
for (int j = 0; j < 4; ++j) {
BrickShape bs = new BrickShape();
_shapes[i * 4 + j] = bs;
for (int k = 0; k < 4; ++k) {
int l = (i * 4 + j) * 8 + 2 * k;
bs.groupx[k] = shapes[l];
bs.groupy[k] = shapes[l + 1];
}
}
}
}
static BrickShape getShape(int shapeID, int angleID) {
return _shapes[shapeID * 4 + angleID];
}
}