// Player.java // // Initial client side of 20-questions for guessing a random // integer from 0 to 100. //////////////////// // Colin Joye // // ECE 2420-001 // // Due 12/6/99 // //////////////////// import java.rmi.*; import java.awt.*; import java.net.*; public class Player extends java.applet.Applet implements Runnable { public static void init(String args[]) throws Exception { // RMI setup // String rmi = "rmi://acadia.ee.vill.edu:8181/Dealer"; String msg1; String msgD; String msgS; String msgR; if (args.length == 1) rmi = args[0]; msg1 = "Player: contacting " + rmi; System.out.println( "Player: contacting " + rmi); Q20 Q = (Q20) Naming.lookup( rmi); // Main part of the program: int low=0; // low end of the guessing range int high=100; // high end of the guessing range int guess=0; // new guess int old_guess=101; // old guess int r=1; // fake initial server response while( r != 0) { guess = (low+high)/2; if( old_guess== guess){ msgD = "Dealer changed answer! Restarting."; System.out.println( "Dealer changed answer! Restarting."); if( r < 0){ high= guess; low= 0; } if( r > 0){ low= guess; high= 100; } guess = (low+high)/2; } old_guess= guess; msgS = "low = " + low + ", high = " + high+ ", guess = " + guess; System.out.print("low = " + low + ", high = " + high+ ", guess = " + guess); r = Q.check(guess); if( r < 0 ){ high=guess; msgR = " -->> Lower "; System.out.print(" -->> Lower "); } else if( r > 0 ){ low=guess; msgR = " -->> Higher "; System.out.print(" -->> Higher "); } if( r == 0 ){ msgR = " -->> Correct!!"; System.out.print( " -->> Correct!!" ); } public void paint(Graphics g){ g.setColor(Color.blue); g.drawString (msg1, 12, 15); g.drawString (msgD, 12, 35); g.drawString (msgS, 12, 55); g.drawString (msgR, 12, 75); } public void run() { resize(preferredSize()); repaint(); } } } }