package spiel;

/** Modelliert Würmer.
 *  Änderung gegenüber Version 1.0: Koordinaten<Integer,Integer>
 *  anstatt nur Koordinaten, welches zu Warnungen führen sollte.
 *
 *  @date 16.11.2004
 *  @version 1.1
 *  @author ProgPrakt-Team
 */

import java.io.Serializable;
import java.util.Vector;

public interface Wurm extends Serializable {

    /** Liefert die Koordinaten des Kopfs. */
    public Koordinaten<Integer,Integer> kopf();

    /** Liefert die Koordinaten des letzen Segments. */
    public Koordinaten<Integer,Integer> ende();

    /** Liefert die Koordinaten eines beliebigen Segments. 
     *  @param i das Segment, beginnend mit dem Kopf (i=0)
     *  @throws KeinGueltigesSegmentException selbsterklärend
     */
    public Koordinaten<Integer,Integer> segment(int i) throws KeinGueltigesSegmentException;

    /** Liefert den gesamten Wurm beginnend mit dem Kopf. */
    public Vector<Koordinaten<Integer,Integer>> wurm();

    /** Liefert die Länge des Wurms. */
    public int laenge();

    /** Bewegt einen Wurm um ein Feld in die angegebene {@link Richtung}.
     *  @throws WurmAutokarambolageException falls der Wurm dadurch auf ein
     *          Feld ziehen würde, welches er selbst zur Zeit schon belegt
     */
    public void bewege(Richtung r) throws WurmAutokarambolageException;
}
