102 lines
2.6 KiB
Java
102 lines
2.6 KiB
Java
/**
|
|
* La classe <code>Direction</code> est utilisée pour signifier une orientation possible
|
|
* parmi les quatre points cardinaux.
|
|
*
|
|
* @version 1.1
|
|
* @author Luc Hernandez
|
|
*/
|
|
public class Direction {
|
|
|
|
/**
|
|
* Constante pointant vers le nord (c'est à dire vers le haut de l'écran).
|
|
*/
|
|
public static final Direction NORD = new Direction(+0, -1);
|
|
|
|
/**
|
|
* Constante pointant vers le sud (c'est à dire vers le bas de l'écran).
|
|
*/
|
|
public static final Direction SUD = new Direction(+0, +1);
|
|
|
|
/**
|
|
* Constante pointant vers l'est (c'est à dire vers la droite de l'écran).
|
|
*/
|
|
public static final Direction EST = new Direction(+1, +0);
|
|
|
|
/**
|
|
* Constante pointant vers l'ouest (c'est à dire vers la gauche de l'écran).
|
|
*/
|
|
public static final Direction OUEST = new Direction(-1, +0);
|
|
|
|
/**
|
|
* Composante horizontale de la direction (-1, 0 ou 1).
|
|
*/
|
|
private int decalageX;
|
|
|
|
/**
|
|
* Composante verticale de la direction (-1, 0 ou 1).
|
|
*/
|
|
private int decalageY;
|
|
|
|
/**
|
|
* Constructeur uniquement destiné à la création des constantes publiques.
|
|
*
|
|
* @param x l'abcisse (-1, 0 ou 1)
|
|
* @param y l'ordonnée (-1, 0 ou 1)
|
|
*/
|
|
private Direction(int x, int y) {
|
|
this.decalageX = x;
|
|
this.decalageY = y;
|
|
}
|
|
|
|
/**
|
|
* Renvoie la composante horizontale de la direction.
|
|
*
|
|
* @return la composante horizontale de la direction (-1, 0 ou 1)
|
|
*/
|
|
public int getDecalageX() {
|
|
return this.decalageX;
|
|
}
|
|
|
|
/**
|
|
* Renvoie la composante verticale de la direction.
|
|
*
|
|
* @return la composante verticale de la direction (-1, 0 ou 1)
|
|
*/
|
|
public int getDecalageY() {
|
|
return this.decalageY;
|
|
}
|
|
|
|
/**
|
|
* Renvoie la direction produite par un quart de tour dans le sens horaire.
|
|
*
|
|
* @return la nouvelle direction
|
|
*/
|
|
public Direction quartDeTour() {
|
|
if (this == Direction.NORD)
|
|
return Direction.EST;
|
|
else if (this == Direction.EST)
|
|
return Direction.SUD;
|
|
else if (this == Direction.SUD)
|
|
return Direction.OUEST;
|
|
else // if (this == Direction.OUEST)
|
|
return Direction.NORD;
|
|
}
|
|
|
|
/**
|
|
* Renvoie la direction produite par un quart de tour dans le sens anti-horaire.
|
|
*
|
|
* @return la nouvelle direction
|
|
*/
|
|
public Direction quartDeTourAnti() {
|
|
if (this == Direction.NORD)
|
|
return Direction.OUEST;
|
|
else if (this == Direction.EST)
|
|
return Direction.NORD;
|
|
else if (this == Direction.SUD)
|
|
return Direction.EST;
|
|
else // if (this == Direction.OUEST)
|
|
return Direction.SUD;
|
|
}
|
|
|
|
}
|