import java.awt.*;
import java.applet.Applet;

public class guess extends Applet {

  Label label1,label2,label3,label4,label5,label0,label00;
  TextField number1, number2,number3,number4,number5;
  int num1, num2,original=1;
  Panel p1,p2;
  int numbers[];
  String s;
  StringBuffer s1;
  TextArea Help,Available;

  public void init() {
    
    numbers = new int[102];
    


    Help = new TextArea(6,50);
    s = new String ("The first player chooses a number less than 50. \n"+
		    "Afterwards, the player has to choose a number \n"+
		    "that is either a divisor or a multiple of the \n"+
                     "number choosen by the previous player. The number \n"+
                    "must be from the list. If you cannot choose a,\n"+
                     "number choose 101 and admit to being a loser. \n"+
		     "The chosen numbers are deleted from the list.");

    s1 = new StringBuffer(200);
   Help.setText(s);

    for(int i=1;i<=100;i++)
        numbers[i] = 0;
       for (int i=1; i<=100;i++) {
      if (numbers[i]==0) { s1.append(i);  if (i!=100) s1.append(", ");}
      if (i%10==0) { s1.append(" \n"); }}
    Available = new TextArea(10,40);
   Available.setText(s1.toString());
   Available.setEditable(false);
   Help.setEditable(false);
   /*   setLayout(new FlowLayout(FlowLayout.LEFT,1,1)); */

      add(Help);
     add(Available);

    label1 = new Label("Type Your Number:");
    number1 = new TextField("0",50);

    label2 = new Label("My Response:");
    number2 = new TextField("0",50); 
    number2.setEditable(false);
    

    label3 = new Label("The Referee Response:");
    label4 = new Label("The Result of Last Game:");
    number3 = new TextField("0",50);
     number3.setEditable(false);
    number4 = new TextField("No Result yet",50);
     number3.setEditable(false);
     number4.setEditable(false);
    label5 = new Label("Your Last Number:");
    number5 = new TextField("",50);
     number5.setEditable(false);

    add(label1);add(number1);
    add(label2);add(number2);
    add(label5);add(number5); 
    add(label3);add(number3); 
    add(label4);add(number4);
  }


  public int g(int x, int y) {
         if (numbers[x]==1) return -1;
	 else if ((x != x/y*y) && (y != y/x*x))
	   return 0;
           else return 1;
  }
  public  void init1() {
 
     
    s = new String ("The first player chooses a number less than 50 \n"+
        "Afterwards, the player has to choose a number \n"+
        "that is either divisor or a multiple of the number\n"+
        "chosen by the previous player. Of course the number should \n"+
        "be chosen from the list. If you cannot choose a number, choose 101\n"+
      "and admit to being a loser");
    s1 = new StringBuffer(200);
   original = 1;
   Help.setText(s);
    for(int i=1;i<=100;i++)
        numbers[i] = 0;
       for (int i=1; i<=100;i++) {
      if (numbers[i]==0) { s1.append(i); if (i!=100) s1.append(", ");}
      if (i%10==0) { s1.append(" \n"); }}
      Available.setText(s1.toString());
      number3.setText("Next Game Partner");
     }

  public int myguess(int x) {
            if (x==1) return 97;
           for(int i=1;i<=100/x;i++)
             if ((x*i <100)&&(numbers[x*i]==0)) return x*i;
           for(int i=x;i>=1;i--)
             if ((x%i==0)&&(numbers[i]==0)) return i;
		 return 101;
  }

  public boolean action(Event e, Object o) {
   
    int ans,mynum;


    num1 = Integer.parseInt(number1.getText());
    if ((original==1)&&(num1 >50)) { number3.setText("Follow the Rules."); return true;}
    if (original ==1) { original++; 
       numbers[num1]=1; number3.setText("I chose mine. ok ! Here  is your turn."); 
       mynum = myguess(num1);
        if (mynum == 101)  {number4.setText("I Lost"); init1();return(true);}
	else { numbers[mynum]=1; number2.setText(Integer.toString(mynum));
	      number5.setText(number1.getText());
	      number1.setText("");}

       s1 = new StringBuffer(" ");
       for (int i=1; i<=100;i++) {
       if (numbers[i]==0) { s1.append(i);  if (i!=100) s1.append(", ");}
       if (i%10==0) { s1.append(" \n"); }}
        Available.setText(s1.toString());
        
      return true;}

     num2 = Integer.parseInt(number2.getText());

    if (num1 ==101)     {number4.setText("You Lost"); init1();return(true);}
     ans = g(num1,num2);
 
     if (ans ==-1) 
    number3.setText("You did not choose a number in the List");
    else if (ans ==0)
    number3.setText(" number not a multiple or a divisor of my number");    
     else     {
       numbers[num1]=1; number3.setText("I chose mine.ok ! Here  is your turn."); 
       mynum = myguess(num1);
        if (mynum == 101)  {number4.setText("I Lost"); number1.setText("");
         init1();return(true);}
	else { numbers[mynum]=1; number2.setText(Integer.toString(mynum));}
     }

       s1 = new StringBuffer(" ");
       for (int i=1; i<=100;i++) {
      if (numbers[i]==0) { s1.append(i);  if (i!=100) s1.append(", ");}
      if (i%10==0) { s1.append(" \n");}}
     Available.setText(s1.toString());
     number5.setText(number1.getText());
     number1.setText("");

    return true;
  }
   
}
