⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 box.java

📁 俄罗斯方块,机器人,华容道破解,文件格式(PE,BMP),邮箱硬盘,日历图片
💻 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 + -