|
@@ -3,19 +3,35 @@ package SnakePkg; |
|
|
import java.lang.Math;
|
|
|
import java.lang.Math;
|
|
|
|
|
|
|
|
|
/**
|
|
|
/**
|
|
|
* A class to represent an Apple in the Board
|
|
|
|
|
|
|
|
|
* @class Apple
|
|
|
|
|
|
* @brief Represent an Apple in the Board.
|
|
|
|
|
|
*
|
|
|
|
|
|
* Apples are part of the elements we place on the board.
|
|
|
|
|
|
* Each apple have a point contribution to the user and can be eaten once
|
|
|
|
|
|
* The point system is algebraic in order to simplify calculation.
|
|
|
|
|
|
*
|
|
|
* @author Christos Choutouridis 8997
|
|
|
* @author Christos Choutouridis 8997
|
|
|
|
|
|
* @email cchoutou@ece.auth.gr
|
|
|
*/
|
|
|
*/
|
|
|
public class Apple {
|
|
|
public class Apple {
|
|
|
/** @name Constructors */
|
|
|
/** @name Constructors */
|
|
|
/** @{ */
|
|
|
/** @{ */
|
|
|
/** Default ctor */
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* A Default, doing nothing constructor
|
|
|
|
|
|
* @note We don't use this constructor
|
|
|
|
|
|
*/
|
|
|
Apple () {
|
|
|
Apple () {
|
|
|
appleId = appleTileId= 0;
|
|
|
appleId = appleTileId= 0;
|
|
|
color = "";
|
|
|
color = "";
|
|
|
points = 0;
|
|
|
points = 0;
|
|
|
}
|
|
|
}
|
|
|
/** Main ctor */
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* The main constructor
|
|
|
|
|
|
* @param appleId The id of the apple
|
|
|
|
|
|
* @param appleTileId The tile where the apples is placed
|
|
|
|
|
|
* @param color The color of the apple
|
|
|
|
|
|
* @param points The points the apple is adding or subtracking from user
|
|
|
|
|
|
*/
|
|
|
Apple (int appleId, int appleTileId, String color, int points) {
|
|
|
Apple (int appleId, int appleTileId, String color, int points) {
|
|
|
this.appleId = appleId;
|
|
|
this.appleId = appleId;
|
|
|
this.appleTileId = appleTileId;
|
|
|
this.appleTileId = appleTileId;
|
|
@@ -23,7 +39,7 @@ public class Apple { |
|
|
this.points = points;
|
|
|
this.points = points;
|
|
|
}
|
|
|
}
|
|
|
/** Copy constructor
|
|
|
/** Copy constructor
|
|
|
* @note We don't use clone as long as we don't inherit Cloneable iface
|
|
|
|
|
|
|
|
|
* @param a The apple we want to copy
|
|
|
*/
|
|
|
*/
|
|
|
Apple (Apple a) {
|
|
|
Apple (Apple a) {
|
|
|
appleId = a.getAppleId ();
|
|
|
appleId = a.getAppleId ();
|
|
@@ -49,7 +65,7 @@ public class Apple { |
|
|
* @arg Otherwise zero
|
|
|
* @arg Otherwise zero
|
|
|
*/
|
|
|
*/
|
|
|
void setColor (String color) {
|
|
|
void setColor (String color) {
|
|
|
this.color = color;
|
|
|
|
|
|
|
|
|
this.color = color.toLowerCase();
|
|
|
if (color == "red") points = Math.abs(points);
|
|
|
if (color == "red") points = Math.abs(points);
|
|
|
else if (color == "black") points = -Math.abs(points);
|
|
|
else if (color == "black") points = -Math.abs(points);
|
|
|
else points = 0;
|
|
|
else points = 0;
|
|
@@ -62,27 +78,25 @@ public class Apple { |
|
|
}
|
|
|
}
|
|
|
/** @} */
|
|
|
/** @} */
|
|
|
|
|
|
|
|
|
/** @name Data members (private) */
|
|
|
|
|
|
|
|
|
/** @name Data members */
|
|
|
/** @{ */
|
|
|
/** @{ */
|
|
|
private int appleId; //!< Apples's ID
|
|
|
|
|
|
private int appleTileId; //!< Apple's tile location
|
|
|
|
|
|
private String color; //!< Apple's color
|
|
|
|
|
|
/**^
|
|
|
|
|
|
* @note
|
|
|
|
|
|
* This way of representing color is not preferable by the author.
|
|
|
|
|
|
* An enum Color { red, black } would be better and far less error prone
|
|
|
|
|
|
* In order to support this style we have to strict the color names to
|
|
|
|
|
|
* lower case letters. We also update the points sign to make thinks easier.
|
|
|
|
|
|
* @see setColor
|
|
|
|
|
|
*/
|
|
|
|
|
|
private int points; //!< The points added (algebraically) to the user
|
|
|
|
|
|
|
|
|
private int appleId; /**< Apples's ID */
|
|
|
|
|
|
private int appleTileId; /**< Apple's tile location */
|
|
|
|
|
|
private String color;
|
|
|
|
|
|
/**< Apple's color
|
|
|
|
|
|
* @note
|
|
|
|
|
|
* This way of representing color is not preferable by the @ref author
|
|
|
|
|
|
* An <pre>
|
|
|
|
|
|
* enum Color {
|
|
|
|
|
|
* red, black
|
|
|
|
|
|
* }</pre>
|
|
|
|
|
|
* would be better and far less error prone.
|
|
|
|
|
|
* In order to support this style of color encoding we have to strict the
|
|
|
|
|
|
* color names to lower case letters and also convert user input.
|
|
|
|
|
|
* We also update the points sign to make calculations easier.
|
|
|
|
|
|
* @see setColor
|
|
|
|
|
|
*/
|
|
|
|
|
|
private int points; /**< The points added (algebraically) to the user */
|
|
|
/** @} */
|
|
|
/** @} */
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//class BadColor extends Exception {
|
|
|
|
|
|
// // default constructor
|
|
|
|
|
|
// BadColor() { }
|
|
|
|
|
|
// // parametrized constructor
|
|
|
|
|
|
// BadColor (String str) { super(str); }
|
|
|
|
|
|
//}
|
|
|
|