📄 box.java
字号:
package com.bokee.nicend.boxgame.game;
import java.awt.Point;
/**
* 方块组合
* @author Butnet
*/
public class Box {
public String toString(){
return "("+x+","+y+") index="+index+" next="+next;
}
/**
* 当前的坐标
*/
private int x, y;
/**
* 方块所有索引
*/
private int index = -1;
/**
* 随机生成器
*/
private static final java.util.Random rand = new java.util.Random(System
.currentTimeMillis());
/**
* 下一个方块索引
*/
private int next = -1;
/**
* 所有方块的高度
*/
private final static int[] allH = new int[] { 4, 1, 2, 3, 2, 3, 3, 2, 3, 2,
2, 3, 2, 3, 2, 3, 2, 3, 2 };
/**
* 所有方块的宽度
*/
private final static int[] allW = new int[] { 1, 4, 3, 2, 3, 2, 2, 3, 2, 3,
3, 2, 3, 2, 3, 2, 3, 2, 2 };
// {x,y}
/**
* 所有方块图形数据
*/
public final static int[][][] all = new int[][][] {
{ { 0, 0 }, { 0, 1 }, { 0, 2 }, { 0, 3 } },
{ { 0, 0 }, { 1, 0 }, { 2, 0 }, { 3, 0 } },
{ { 1, 0 }, { 0, 1 }, { 1, 1 }, { 2, 1 } },
{ { 0, 0 }, { 0, 1 }, { 0, 2 }, { 1, 1 } },
{ { 0, 0 }, { 1, 0 }, { 2, 0 }, { 1, 1 } },
{ { 1, 0 }, { 1, 1 }, { 1, 2 }, { 0, 1 } },
{ { 0, 0 }, { 0, 1 }, { 1, 1 }, { 1, 2 } },
{ { 1, 0 }, { 2, 0 }, { 0, 1 }, { 1, 1 } },
{ { 1, 0 }, { 1, 1 }, { 0, 1 }, { 0, 2 } },
{ { 0, 0 }, { 1, 0 }, { 1, 1 }, { 2, 1 } },
{ { 0, 0 }, { 1, 0 }, { 2, 0 }, { 2, 1 } },
{ { 0, 0 }, { 1, 0 }, { 0, 1 }, { 0, 2 } },
{ { 0, 0 }, { 0, 1 }, { 1, 1 }, { 2, 1 } },
{ { 1, 0 }, { 1, 1 }, { 1, 2 }, { 0, 2 } },
{ { 0, 0 }, { 1, 0 }, { 2, 0 }, { 0, 1 } },
{ { 0, 0 }, { 1, 0 }, { 1, 1 }, { 1, 2 } },
{ { 0, 1 }, { 1, 1 }, { 2, 1 }, { 2, 0 } },
{ { 0, 0 }, { 0, 1 }, { 0, 2 }, { 1, 2 } },
{ { 0, 0 }, { 1, 1 }, { 0, 1 }, { 1, 0 } } };
private Box() {
};
/**
* 此方块下一次变形得到的方块
* @return 返回下一次变形得到的方块
*/
public Box getWillChang() {
Box box = new Box();
int index;
switch (this.index) {
case -1:
return null;
case 0:
index = 1;
break;
case 1:
index = 0;
break;
case 2:
index = 3;
break;
case 3:
index = 4;
break;
case 4:
index = 5;
break;
case 5:
index = 2;
break;
case 6:
index = 7;
break;
case 7:
index = 6;
break;
case 8:
index = 9;
break;
case 9:
index = 8;
break;
case 10:
index = 13;
break;
case 11:
index = 10;
break;
case 12:
index = 11;
break;
case 13:
index = 12;
break;
case 14:
index = 15;
break;
case 15:
index = 16;
break;
case 16:
index = 17;
break;
case 17:
index = 14;
break;
case 18:
index = 18;
break;
default:
index = -1;
return null;
}
box.index = index;
box.x=x;
box.y=y;
return box;
}
/**
* 复制一个新的方块(新对象)
* @return 新对象
*/
public Box copy(){
Box b=new Box();
b.index=index;
b.next=next;
b.y=y;
b.x=x;
return b;
}
/**
* 设置方块的位置
* @param point 点
*/
public void setPoint(Point point){
x=point.x;
y=point.y;
}
/**
* 将此方块变形一次
* @return 此方块变化的数据(原对象)
*/
public Box chang() {
switch (index) {
case -1:
return null;
case 0:
index = 1;
break;
case 1:
index = 0;
break;
case 2:
index = 3;
break;
case 3:
index = 4;
break;
case 4:
index = 5;
break;
case 5:
index = 2;
break;
case 6:
index = 7;
break;
case 7:
index = 6;
break;
case 8:
index = 9;
break;
case 9:
index = 8;
break;
case 10:
index = 13;
break;
case 11:
index = 10;
break;
case 12:
index = 11;
break;
case 13:
index = 12;
break;
case 14:
index = 15;
break;
case 15:
index = 16;
break;
case 16:
index = 17;
break;
case 17:
index = 14;
break;
case 18:
index = 18;
break;
default:
index = -1;
return null;
}
return this;
}
/**
* 初始化画方块
* @return 返回第一个方块
*/
public static Box getBox() {
Box b = new Box();
if (b.next == -1) {
b.index = rand.nextInt(all.length);
b.next = rand.nextInt(all.length);
} else {
b.index = b.next;
b.next = rand.nextInt(all.length);
}
return b;
}
/**
* 取得下一个方块
* @return 返回一个新对象
*/
public Box willNext() {
Box re = new Box();
re.index = next;
return re;
}
/**
* 用下一个方块代替此方块
* @return 此方块的新数据(原对象)
*/
public Box next() {
index = next;
next = rand.nextInt(all.length);
return this;
}
/**
* 取得此方块的宽度
* @return 宽度
*/
public int getBoxWidth() {
if (index == -1)
return 0;
return allW[index];
}
/**
* 取得此方块的高度
* @return 高度
*/
public int getBoxHeight() {
if (index == -1)
return 0;
return allH[index];
}
/**
* 设置此方块的位置
* @param x X坐标
* @param y Y坐标
*/
public void setPoint(int x, int y) {
this.x = x;
this.y = y;
}
/**
* 设置此方块的X坐标
* @param x
*/
public void setX(int x) {
this.x = x;
}
/**
* 设置此方块的Y坐标
* @param y
*/
public void setY(int y) {
this.y = y;
}
/**
* 取得此方块的X坐标
* @return X坐标
*/
public int getX() {
return x;
}
/**
* 取得此方块的Y坐标
* @return Y坐标
*/
public int getY() {
return y;
}
/**
* 取得此方块的成员点位置
* @return (x,y)
*/
public int[][] getPoints() {
return all[index];
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -