coding
首页>分享>java swing开发的俄罗斯方块游戏,包含完整代码+详细注释>/ItcastTetris1.02_final/src/cn/itcast/tetris/entities/UnitType.java
package cn.itcast.tetris.entities;

import java.awt.Color;


/**
 * 可以表示地面里面的障碍物, 不可消除的障碍物, 空白<BR>
 * <BR>
 * 外部不可以直接new 一个实例, 而应该用 clone() 方法产生实例(防止产生不能识别的类型)<BR>
 * 例如产生一个障碍物:<BR>
 * <code><BR>
 UnitType aObstacle = UnitType.OBSTACLE.clone();<BR>
 * </code><BR>
 * 
 */
public class UnitType implements Cloneable {

	/* 定义一些要用到的常量 */

	/**
	 * 空白类型的值
	 */
	private static final int BLANK_VALUE = 0;

	/**
	 * 边框类型的值
	 */
	private static final int STUBBORN_OBSTACLE_VALUE = 1;

	/**
	 * 障碍物类型的值
	 */
	private static final int OBSTACLE_VALUE = 2;

	/**
	 * 空白类型
	 */
	public static final UnitType BLANK = new UnitType(BLANK_VALUE, Color.WHITE);

	/**
	 * 边框类类型
	 */
	public static final UnitType STUBBORN_OBSTACLE = new UnitType(
			STUBBORN_OBSTACLE_VALUE, new Color(0x808000));

	/**
	 * 障碍物类型
	 */
	public static final UnitType OBSTACLE = new UnitType(OBSTACLE_VALUE,
			Color.DARK_GRAY);

	/**
	 * 类型值
	 */
	private int value;

	/**
	 * 颜色
	 */
	private Color color;

	/**
	 * 得到类型值
	 * 
	 * @return
	 */
	public int getValue() {
		return value;
	}

	/**
	 * 设置类型值
	 * 
	 * @param value
	 */
	public void setValue(int value) {
		this.value = value;
	}

	/**
	 * 得到颜色
	 * 
	 * @return
	 */
	public Color getColor() {
		return color;
	}

	/**
	 * 设置颜色
	 * 
	 * @param color
	 */
	public void setColor(Color color) {
		this.color = color;
	}

	/**
	 * 接受类型的私有的构造方法<BR>
	 * 
	 * @param value
	 */
	private UnitType(int value) {
		super();
		this.value = value;
	}

	/**
	 * 接受类型和颜色的私有的构造方法
	 * 
	 * @param value
	 * @param color
	 */
	private UnitType(int value, Color color) {
		super();
		this.value = value;
		this.color = color;
	}

	/**
	 * 返回一个新的,和自己有一样的颜色并且类型相同的UnitType
	 */
	@Override
	public UnitType clone() {
		// TODO Auto-generated method stub
		return new UnitType(this.value, this.color);
	}

	/**
	 * 把自己克隆成和指定的UnitType 相同的 UnitType, value 和 Color 都会被克隆
	 * 
	 * @param ut
	 */
	public void cloneProperties(UnitType ut) {
		this.color = ut.color;
		this.value = ut.value;
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + value;
		return result;
	}

	/**
	 * 相同的类型就是相等, 不比较颜色
	 */
	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		final UnitType other = (UnitType) obj;
		if (value != other.value)
			return false;
		return true;
	}

}
最近下载更多
fenghuijun LV248月16日
太阳月亮月亮
xlhxlh LV198月15日
太阳星星星星星星
jimodeai LV88月6日
月亮月亮
moon0203 LV67月23日
月亮星星星星
芳心若 LV47月16日
月亮
sun丶孙 LV57月3日
月亮星星
1065908163 LV46月9日
月亮
本人虐帅 LV15月31日
星星
x56261 LV15月28日
星星
552121651 LV15月27日
星星
最近浏览更多
清清凉 LV3昨天
星星星星星星
tangzhi LV1昨天
星星
lisnut LV1昨天
星星
FFFFFly LV38月20日
星星星星星星
沙漠鱼 LV128月20日
月亮月亮月亮
暂无贡献等级
11306649928月18日
暂无贡献等级
7345145008月18日
暂无贡献等级
xlhxlh LV198月15日
太阳星星星星星星
魔剑徐 LV18月14日
星星
顶部客服微信二维码底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友