一个俄罗斯方块,描述方块图形的类,看了半天没有看懂,望大家指教
这是一段俄罗斯方块,描述方块图形的类,我看了很久一致不理解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];
}
}
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];
}
}
...全文
相关推荐
舒尔特方块自动生成(c++源码)
本想弄点舒尔特方块然后打出来纸质版,在网上搜了半天,没有找到合适的,于是自己写了一个 前后总共耗时约一个小时 调试代码未删除,都写在函数里了,可以自行更改 以文件读写形式输出,可以根据自己的需要粘到word文档再进行改动 本人竞赛退役许久,如今水平有限,不过写出来的代码恰好可以满足预期。里面全是基础算法 对于某些奇怪的bug,是进行特判来处理的 若有bug还请海涵
削弱GNSS多路径效应的半天球格网点建模方法.docx
削弱GNSS多路径效应的半天球格网点建模方法.docx
半天搭建你的Jenkins持续集成与自动化部署系统
由于之前亦没有相关知识的积累,因此也是对如何实现也是一头雾水。于是只能找度娘,关键字"自动化发布"。搜索到很多工具和方法,但都是以Java平台居多,.net平台相关资料不多。其中以Jenkins介绍较多,微软也提供一套自动化部署的方式,也有一些其他持续集成工具可以实现自动化的发布,但最终还是选择了Jenkins。主要有以下几个原因:代码开源、插件丰富完善、系统稳定 社区活跃,成功实践和网上资源较为丰富 安装配置简单
烦恼的半天作文.doc
烦恼的半天作文.doc
数据库SQL基本语句(半天即可学会,轻松简单)
只要你花半天时间,就能轻松掌握SQL基本语句的使用方式,很好的参考资料,主要看文章中的例子,因为例子具有可读连续性,因此,文档描述非常简单,容易掌握,也较通俗易懂!与大家分享!与大家共享!


移动开发其他问题
