package com.egloos.realmove.dp.strategy; import com.egloos.realmove.dp.strategy.framework.*; public class Main2 { 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 { String[] classNames = { "com.egloos.realmove.dp.strategy.SequenceStrategy", "com.egloos.realmove.dp.strategy.RandomStrategy", "com.egloos.realmove.dp.strategy.WinningStrategy", "com.egloos.realmove.dp.strategy.ProbStrategy" }; for ( int i = 0; i < classNames.length; i++ ) { for ( int j = 0; j < classNames.length; j++ ) { HandGameStrategy leftStrategy = (HandGameStrategy) Class.forName( classNames[i] ).newInstance(); HandGameStrategy rightStrategy = (HandGameStrategy) Class.forName( classNames[j] ).newInstance(); Player leftPlayer = new Player( "Pororo", leftStrategy ); Player rightPlayer = new Player( "Thomas", rightStrategy ); for ( int k = 0; k < 30000; k++ ) { 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 ); System.out.println( "-----------------" ); } } } }