I've added the next move abstraction so I can reuse the steps as a template
for my other players (I just substitute with my implementations of search
algorithm). I have examples in my minimax branch.

On Monday, November 11, 2013, Sam Schreiber wrote:

> In
> src/org/ggp/base/player/gamer/statemachine/sample/SampleMonteCarloGamer.java:
>
> > -		notifyObservers(new GamerSelectedMoveEvent(moves, selection, stop - start));
> > -		return selection;
> > -	}
> > -	
> > -	private int[] depth = new int[1];
> > -	int performDepthChargeFromMove(MachineState theState, Move myMove) {	
> > -	    StateMachine theMachine = getStateMachine();
> > -	    try {
> > -            MachineState finalState = theMachine.performDepthCharge(theMachine.getRandomNextState(theState, getRole(), myMove), depth);
> > -            return theMachine.getGoal(finalState, getRole());
> > -        } catch (Exception e) {
> > -            e.printStackTrace();
> > -            return 0;
> > -        }
> > +	public SampleMonteCarloGamer() {
> > +		super.setSearchAlgorithm(new MonteCarloTreeSearchAlgorithm(this));
>
> "Gamer" already represents an algorithm for playing games. Why add another
> layer of abstraction?
>
> —
> Reply to this email directly or view it on GitHub<https://github.com/ggp-org/ggp-base/pull/31/files#r7573167>
> .
>