package spiel;

import java.io.Serializable;

/**
 * Repräsentation von Koordinaten in dem 2-dimensionalen
 * Spielbrett. Änderungen zu 1.2:
 * Klasse, nicht Interface. Nicht mehr parametrisiert.
 * equals-Methode (nun auch mit Argument vom Typ Object)
 *
 * Neu in 1.3: hashCode() von Object überschrieben
 *
 * @version 1.3
 * @author ProgPrak-Team
 */
public final class Koordinaten implements Serializable {    

    // für Serialisierung
    private static final long serialVersionUID = 13L;

    private int x,y;

    public Koordinaten(int x, int y) {
	this.x = x;
	this.y = y;
    }

    public int koordinateX() {
	return x;
    }
    public int koordinateY() {
	return y;
    }

    public boolean equals(Object o) {
	Koordinaten koordinaten = (Koordinaten)o;
	return (x == koordinaten.koordinateX()) && (y == koordinaten.koordinateY());
    }
    /**
     * der Hashcode wird mittels einer "magischen" Zahl ermittelt,
     * und zwar erste Komponente mal 94687 plus zweite Komponente
     */
    public int hashCode() {
	return x*94687+y;
    }

    // nun für die XMLisierung zur "Bean" machen:
    public Koordinaten() {
	x = 0; y = 0;
    }

    public void setX(int x) {
	this.x = x;
    }
    public void setY(int y) {
	this.y = y;
    }

    public int getX() {
	return koordinateX();
    }
    public int getY() {
	return koordinateY();
    }
}
