package com.egloos.realmove.dp.strategy; import com.egloos.realmove.dp.strategy.framework.*; public class Main { public static void printPlayer( Player player ) { System.out.print( player.getName() ); System.out.print( " using " ); System.out.println( player.getStrategy().getClass().getName() ); System.out.print( "win: "+player.getWinCount() ); System.out.print( " loose: "+player.getLooseCount() ); System.out.print( " draw: "+player.getDrawCount() ); System.out.println(); } public static void main( String args[] ) throws Exception { HandGameStrategy leftStrategy = (HandGameStrategy) Class.forName( "com.egloos.realmove.dp.strategy.ProbStrategy" ).newInstance(); HandGameStrategy rightStrategy = (HandGameStrategy) Class.forName( "com.egloos.realmove.dp.strategy.ProbStrategy" ).newInstance(); Player leftPlayer = new Player( "Pororo", leftStrategy ); Player rightPlayer = new Player( "Thomas", rightStrategy ); for ( int i = 0; i < 30000; i++ ) { Hand left = leftPlayer.next(); Hand right = rightPlayer.next(); int result = left.fightTo( right ); //System.out.println( left + ":" + right + " ==> " + result ); if ( result > 0 ) { /* leftPlayer is winner */ leftPlayer.study( HandGameStrategy.WIN ); rightPlayer.study( HandGameStrategy.LOOSE ); } else if ( result < 0 ) { /* rightPlayer is winner */ leftPlayer.study( HandGameStrategy.LOOSE ); rightPlayer.study( HandGameStrategy.WIN ); } else { /* this means this game was drawn */ leftPlayer.study( HandGameStrategy.DRAW ); rightPlayer.study( HandGameStrategy.DRAW ); } } printPlayer( leftPlayer ); printPlayer( rightPlayer ); } }