作业帮 > 综合 > 作业

java版的俄罗斯方块问题.定义方块的形状那个数组和生成新方块的方法没看懂,

来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/04/30 06:39:03
java版的俄罗斯方块问题.定义方块的形状那个数组和生成新方块的方法没看懂,
// 方块的形状 第一组代表方块类型有S、Z、L、J、I、O、T 7种 第二组 代表旋转几次 第三四组为 方块矩阵
private final int shapes[][][] = new int[][][] {
// i
{ { 0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0 },
{ 0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0 },
{ 0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0 },
{ 0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0 } },
// s
{ { 0,1,1,0,1,1,0,0,0,0,0,0,0,0,0,0 },
{ 1,0,0,0,1,1,0,0,0,1,0,0,0,0,0,0 },
{ 0,1,1,0,1,1,0,0,0,0,0,0,0,0,0,0 },
{ 1,0,0,0,1,1,0,0,0,1,0,0,0,0,0,0 } },
// z
{ { 1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0 },
{ 0,1,0,0,1,1,0,0,1,0,0,0,0,0,0,0 },
{ 1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0 },
{ 0,1,0,0,1,1,0,0,1,0,0,0,0,0,0,0 } },
// j
{ { 0,1,0,0,0,1,0,0,1,1,0,0,0,0,0,0 },
{ 1,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0 },
{ 1,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0 },
{ 1,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0 } },
// o
{ { 1,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0 },
{ 1,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0 },
{ 1,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0 },
{ 1,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0 } },
// l
{ { 1,0,0,0,1,0,0,0,1,1,0,0,0,0,0,0 },
{ 1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0 },
{ 1,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0 },
{ 0,0,1,0,1,1,1,0,0,0,0,0,0,0,0,0 } },
// t
{ { 0,1,0,0,1,1,1,0,0,0,0,0,0,0,0,0 },
{ 0,1,0,0,1,1,0,0,0,1,0,0,0,0,0,0 },
{ 1,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0 },
{ 0,1,0,0,0,1,1,0,0,1,0,0,0,0,0,0 } }
};
// 生成新方块的方法
public void newblock() {
blockType = (int) (Math.random() * 1000) % 7;
turnState = (int) (Math.random() * 1000) % 4;
x = 4;
y = 0;
if (gameover(x,y) == 1) {
newmap();
drawwall();
score = 0;
JOptionPane.showMessageDialog(null,"GAME OVER");
}
}
/** 定义方块的形状那个数组和生成新方块的方法没看懂 */
下面这个是(三维数据)shapes中的一个二维元素
//i
{ { 0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0 },
{ 0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0 },
{ 0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0 },
{ 0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0 } },
第一行{ 0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0 } 画出的图形为:(0代表&,1代表O)
& & & &
O O O O
& & & &
& & & &
第二行{0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0}
& O & &
& O & &
& O & &
& O & &
从上面两个你应该就可以看出这个数组存储各种方块的方式了.
blockType = (int) (Math.random() * 1000) % 7;
turnState = (int) (Math.random() * 1000) % 4;
这里取的7和4的原因是这个三维数组的两个维度的大小是7和4,7种类型的图形,和每个图形的4种形态
反映到数组上就是
newShape[] = shapes[blockType][State] ;