package Core;
/**
 * Represents a field on the playboard
 */
public class Field {
	/**
	 * Instance variables
	 */
	private int x;
	private int y;
	private boolean passable = true;
	private boolean explodable = true;
	/********* Constructor *********/
	
	/**
	 * Constructor
	 * @param x   x-coordiante 
	 * @param y   y-coordiante 
	 */
	public Field(int x, int y) {
		this.x = x;
		this.y = y;
	}
	
	/**
	 * Constructor
	 * @param x				x-coordiante 
	 * @param y				y-coordiante 
	 * @param passable		is the field passable?
	 * @param explodable	is the field explodable?
	 */
	public Field(int x, int y, boolean passable, boolean explodable) {
		this.x = x;
		this.y = y;
		this.passable = passable;
		this.explodable = explodable;
	}
	/**
	 * Constructor for clone
	 * @param field
	 */
	private Field(Field field) {
		this.x = field.x;
		this.y = field.y;
		this.passable = field.passable;
		this.explodable = field.explodable;
	}
	
	/**
	 * Returns a exact copy of the object
	 */
	public Field clone() {
		return new Field(this);
	}
	
	/********* Getters *********/
	
	/**
	 * Returns the x-coordinate of the field
	 * @return x
	 */	
	public int getX() {
		return x;
	}	
	/**
	 * Returns the y-coordinate of the field
	 * @return y
	 */	
	public int getY() {
		return y;
	}
	/**
	 * Is the field passable?
	 * @return passable?
	 */
	public boolean isPassable() {
		return passable;
	}
	
	/**
	 * Is the field explodable?
	 * @return explodable?
	 */
	public boolean isExplodable() {
		return explodable;
	}	
	/**
	 * Is the field not explodable and not passable?
	 * @return wall?
	 */
	public boolean isWall(){
		return !passable && !explodable;
	}
	
	/********* Setters *********/
	
	/**
	 * Sets the x-coordiante
	 * @param x
	 */
	public void setX(int x) {
		this.x = x;
	}
	/**
	 * Sets the y-coordiante
	 * @param y
	 */
	public void setY(int y) {
		this.y = y;
	}
	
	/**
	 * Sets whether the field is passable or not
	 * @param passable
	 */
	public void setPassable(boolean passable) {
		this.passable = passable;
	}
	
	/**
	 * Sets whether the field is explodable or not
	 * @param explodable
	 */	
	public void setExplodable(boolean explodable) {
		this.explodable = explodable;
	}
	
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + x;
		result = prime * result + y;
		return result;
	}
	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Field other = (Field) obj;
		if (x != other.x)
			return false;
		if (y != other.y)
			return false;
		return true;
	}
}
最近下载更多
                
                adap12345     LV5
                2023年6月8日
            
            
        
                hkxyyz     LV6
                2023年3月2日
            
            
        
                总有人间一两风      LV8
                2022年12月12日
            
            
        
                liangge2115     LV27
                2022年11月7日
            
            
        
                微信网友_6004879537377280     LV3
                2022年6月22日
            
            
        
                jytjyt     LV1
                2021年12月16日
            
            
        
                ssssqweq     LV1
                2021年11月1日
            
            
        
                此次东方     LV1
                2021年10月20日
            
            
        
                qliu0130     LV1
                2021年10月10日
            
            
        
                zpy123     LV1
                2021年7月18日
            
            
        
最近浏览更多
                
                chengjingjingjing    
                6月19日
            
            
                    暂无贡献等级
            
        
                微信网友_7556291372584960    
                6月16日
            
            
                    暂无贡献等级
            
        
                qqqww11     LV2
                2024年6月26日
            
            
        
                鬼屋报道     LV3
                2024年6月4日
            
            
        
                ClydeSon     LV5
                2023年12月27日
            
            
        
                bangyiyang     LV2
                2023年12月21日
            
            
        
                1112WHQ     LV7
                2023年11月3日
            
            
        
                微信网友_6672184532766720     LV3
                2023年10月6日
            
            
        
                srrrrrr    
                2023年9月19日
            
            
                    暂无贡献等级
            
        
                adap12345     LV5
                2023年6月8日
            
            
        
                
    
                