package org.ggp.base.player.gamer.statemachine.sample; import org.ggp.base.apps.player.detail.DetailPanel; import org.ggp.base.apps.player.detail.SimpleDetailPanel; import org.ggp.base.player.gamer.exception.GamePreviewException; import org.ggp.base.player.gamer.statemachine.StateMachineGamer; import org.ggp.base.util.game.Game; import org.ggp.base.util.statemachine.StateMachine; import org.ggp.base.util.statemachine.cache.CachedStateMachine; import org.ggp.base.util.statemachine.exceptions.GoalDefinitionException; import org.ggp.base.util.statemachine.exceptions.MoveDefinitionException; import org.ggp.base.util.statemachine.exceptions.TransitionDefinitionException; import org.ggp.base.util.statemachine.implementation.prover.ProverStateMachine; /** * SampleGamer is a simplified version of the StateMachineGamer, dropping some * advanced functionality so the example gamers can be presented concisely. * This class implements 7 of the 8 core functions that need to be implemented * for any gamer. * * If you want to quickly create a gamer of your own, extend this class and * add the last core function : public Move stateMachineSelectMove(long timeout) */ public abstract class SampleGamer extends StateMachineGamer { @Override public void stateMachineMetaGame(long timeout) throws TransitionDefinitionException, MoveDefinitionException, GoalDefinitionException { // Sample gamers do no metagaming at the beginning of the match. } /** This will currently return "SampleGamer" * If you are working on : public abstract class MyGamer extends SampleGamer * Then this function would return "MyGamer" */ @Override public String getName() { return getClass().getSimpleName(); } // This is the default State Machine @Override public StateMachine getInitialStateMachine() { return new CachedStateMachine(new ProverStateMachine()); } // This is the defaul Sample Panel @Override public DetailPanel getDetailPanel() { return new SimpleDetailPanel(); } @Override public void stateMachineStop() { // Sample gamers do no special cleanup when the match ends normally. } @Override public void stateMachineAbort() { // Sample gamers do no special cleanup when the match ends abruptly. } @Override public void preview(Game g, long timeout) throws GamePreviewException { // Sample gamers do no game previewing. } }