package org.roshambo;

/**
 * Player interface
 *
 * example:
 *
 * public class RandomAI implements Competitor {
 *     //@Override
 *     public String name() {
 *         return "Random AI";
 *     }
 *
 *     //@Override
 *     public Weapon engage() {
 *         int pick = new Random().nextInt(Weapon.values().length);
 *
 *         return Letter.values()[pick];
 *     }
 *
 *     //@Override
 *     void feedback(int round, boolean hasWon, Competitor.Throw myThrow, Competitor.Throw opponentThrow) {
 *         // feedback logic here
 *     }
 */
public interface Competitor {
    /**
     * Values that the engage method can return
     */
    enum Throw {ROCK, PAPER, SCISSORS};

    /**
     * This method will be called when battling another competitor.
     *
     * @return Weapon
     */
    Throw engage();

    /**
     * This method will be called after your opponents throws.
     * This is the input for your AI.
     *
     * @param round   Round number
     * @param victory Set to true if you have won this round
     * @param myThrow Your throw
     * @param opponentThrow Opponent's throw
     */
    void feedback(int round, boolean victory, Throw myThrow, Throw opponentThrow);

    /**
     * This method will be used for the result table.
     *
     * @return String Name of the competitor
     */
    String name();
}
@@ -627,11 +627,12 @@
 hod 
-can
+must
  ret
@@ -659,16 +659,17 @@
  Throw %7B
+ 
 ROCK, PA
@@ -685,10 +685,10 @@
 SORS
+ 
 %7D
-;
 %0A%0A  
@@ -761,16 +761,101 @@
 etitor.%0A
+     * It should always return on of the three throws defined inside the enum above.%0A
      *%0A 
@@ -1042,16 +1042,22 @@
 round   
+      
 Round nu
@@ -1083,16 +1083,22 @@
 victory 
+      
 Set to t
@@ -1150,16 +1150,22 @@
 myThrow 
+      
 Your thr

update docs