最代码广告位
首页>分享>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;
	}

}
最近下载更多
pllpll LV911月25日
月亮月亮星星
WUJIEYANGYULING LV411月24日
月亮
donkey123 LV211月20日
星星星星
shao9803 LV1111月20日
月亮月亮星星星星星星
jellyjesse LV210月30日
星星星星
fenghuijun LV258月16日
太阳月亮月亮星星
xlhxlh LV198月15日
太阳星星星星星星
jimodeai LV98月6日
月亮月亮星星
moon0203 LV67月23日
月亮星星星星
芳心若 LV47月16日
月亮
最近浏览更多
暂无贡献等级
暂无贡献等级
暂无贡献等级
暂无贡献等级
wan_jiang12月4日
暂无贡献等级
ssh123456789 LV112月3日
星星
Gasonline LV212月3日
星星星星
TXH12312月3日
暂无贡献等级
damuguaye LV111月30日
星星
MWJ11223311月28日
暂无贡献等级
最代码广告位
顶部客服微信二维码底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友