class GameEngine { private State s; private int[] history = new int[25]; //arbitrary max size, game only has 24 cards // private int[] cards = new int[6]; public GameEngine() { } public void playWatchedGame( Player[] p ) { int currentPlayer = (int)(Math.random()*2); s = new State(); p[0].onStart(s); p[1].onStart(s); int hPos = 0; while (!s.gameFinished()) { history[hPos++] = p[currentPlayer].makeMove(s)+1; s.playCard( history[hPos-1]-1 ); p[currentPlayer].onYourMove(s); p[(currentPlayer+1)%p.length].onOpponentMove(s); if (s.gameFinished()) s.loser = p[currentPlayer]; currentPlayer = (currentPlayer+1)%p.length; System.out.print("Cards played so far:"); for (int i = 0; i < hPos; i++) System.out.print(" "+history[i]); System.out.println(" :"+s.currentNum); } p[0].onEnd(s); p[1].onEnd(s); } public void playGame( Player[] p ) { int currentPlayer = (int)(Math.random()*2); s = new State(); p[0].onStart(s); p[1].onStart(s); while (!s.gameFinished()) { s.playCard( p[currentPlayer].makeMove(s) ); p[(currentPlayer+1)%p.length].onOpponentMove(s); p[currentPlayer].onYourMove(s); if (s.gameFinished()) s.loser = p[currentPlayer]; currentPlayer =(currentPlayer+1)%p.length; } p[0].onEnd(s); p[1].onEnd(s); } }