Added Java sample AI
[progcomp2012.git] / agents / basic_java / piece.java
diff --git a/agents/basic_java/piece.java b/agents/basic_java/piece.java
new file mode 100644 (file)
index 0000000..90db2ac
--- /dev/null
@@ -0,0 +1,81 @@
+/**
+ * Class to represent a Piece
+ * @author Sam Moore
+ * @website http://progcomp.ucc.asn.au
+ */
+
+import java.lang.Exception;
+import java.util.Vector;
+
+class Piece
+{
+       //Normally in the Java Way (TM) you would have to make these private, and add "Getters" and "Setters" and all sorts of crap.
+       // Disclaimer: The author is not responsible for the repercussions of not following the Java Way (TM)
+       public int x; //x coord
+       public int y; //y coord
+       public char rank; //Rank of the piece
+       public String colour; //The colour of the Piece
+       public Vector<int[]> positions; //All positions the piece has been at
+       public boolean beenRevealed; //True if the piece has been revealed in combat
+
+       public static char ranks[] = {'B','1','2','3','4','5','6','7','8','9','s','F', '?', '+'}; //List of all the possible ranks
+       //'?' is an unknown piece, '+' is an obstacle
+
+       /**
+        * Constructor
+        * @param c The new colour
+        * @param r The new rank
+        * @param xx The new x coord
+        * @param yy The new y coord
+        */
+       public Piece(String c, char r, int xx, int yy)
+       {
+               
+               this.colour = c;
+               this.rank = r;
+               this.x = xx;
+               this.y = yy;
+               this.positions = new Vector<int[]>();
+               this.beenRevealed = false;
+               
+               positions.add(new int[2]);
+               positions.elementAt(0)[0] = x;
+               positions.elementAt(0)[1] = y;
+       }
+
+       /**
+        * @returns True if the piece can move, based on its rank
+        */
+       public boolean Mobile()
+       {
+               return (rank != 'F' && rank != 'B' && rank != '+' && rank != '?');
+       }
+
+       /**
+        * @returns The value of the piece's rank
+        */
+       public int ValuedRank()
+       {
+               for (int ii=0; ii < ranks.length; ++ii)
+               {
+                       if (ranks[ii] == rank)
+                               return (ranks.length - 2 - ii);
+               }
+               return 0;
+       }
+
+       /**
+        * @returns the index in ranks of a rank
+        * @throws Exception if the rank doesn't exist
+        */
+       public static int Index(char rank) throws Exception
+       {
+               for (int ii=0; ii < ranks.length; ++ii)
+               {
+                       if (ranks[ii] == rank)
+                               return ii;
+               }
+               throw new Exception("Piece.Index - No such rank as " + rank);
+               
+       }
+}

UCC git Repository :: git.ucc.asn.au