//
// Les milles et une bornes
//
//  
//

import java.io.*;
import java.net.*;


public class gameC {
    String pseudo[]=new String[4]; // les joueurs
    int inPlay=0;
    static final int NEW_GAME=1, PIOCHE=2, JOUE=3, PATIENTE=4;
    Socket s = null;
    DataInputStream sin ;
    PrintStream sout;
    DataInputStream in;
    String joueur="";
      // Create a stream for reading lines of text from the console
      in = new DataInputStream(System.in);
  
    public gameC(){

    }

  public void parseMessage(String msg){
   int len;
   int ind;
   
   String cmd=""; // la commande
   String arg=""; // les arguments

    ind=msg.indexOf(' ');
    cmd=(ind==-1?msg:msg.substring(0, ind)); // la commande
    arg=(ind==-1?"":msg.substring(ind+1)); // les arguments

    if(cmd.equalsIgnoreCase("Joueurs")){
      System.out.println("::"+msg);

    }if(cmd.equalsIgnoreCase("Distribcartes")){
      System.out.println("::"+msg);
      inPlay=PATIENTE; // Next step

    }if(cmd.equalsIgnoreCase("Piocheur")){
       if(arg.equalsIgnoreCase(joueur)){
	 System.out.println("C'est a moi de jouer !!!!");
	 inPlay=PIOCHE; // Next step
       }else
	 System.out.println("Patiente: "+msg);

    }if(cmd.equalsIgnoreCase("Carte")){
     System.out.println("::"+msg);
     inPlay=JOUE; // Next step

    }if(cmd.equalsIgnoreCase("CarteRefusee")){
      System.out.println("::"+msg);
      inPlay=JOUE; // same step

    }if(cmd.equalsIgnoreCase("CarteJetee")){
      System.out.println("::"+msg);
      inPlay=PATIENTE; // Next step

    }if(cmd.equalsIgnoreCase("CarteJouee")){
      System.out.println("::"+msg);
      inPlay=PATIENTE; // Next step

    }
  }

  public void playGame(){
   int len;
   int ind;
   String req=""; // requete
   String cmd=""; // la commande
   String rep=""; // pour la reponse
   int j=0;

   //while(inPlay>0){ 

   switch(inPlay){
   case NEW_GAME:
     System.out.print("your name> "); 
     System.out.flush();
     rep = readLine();
     joueur=rep;
     sout.println("NewGame "+joueur);
     // attente du message "Joueurs J1 j2 ..."
     parseMessage(waitAndGetMessage()); 
     // attente du message "DistribCartes ..."
     parseMessage(waitAndGetMessage()); 
     
     break;
   case PATIENTE:
     // attente du message "Piocheur j#"
     parseMessage(waitAndGetMessage()); 
     break;
   case PIOCHE:
     // print a prompt
     System.out.print("Pioche Nouvelle ou Derniere ?> "); 
     System.out.flush();
     rep = readLine();
     sout.println("Pioche "+rep);
     // recoit la carte
     parseMessage(waitAndGetMessage()); 
     break;
   case JOUE:
     // print a prompt
     System.out.print("Joue C? J?/Jette C?> "); 
     System.out.flush();
     rep = readLine();
     sout.println(rep);
     // recoit la reponse
     parseMessage(waitAndGetMessage());
     break;
   default:
     System.out.println("Joueur:"+j+", etat:"+inPlay+", requete:"+req);
     inPlay=0;
   }
   
   
  }
  
   String waitAndGetMessage(){
    String line =null;

    try {
      while(sin.available()<0); // attente

      line = sin.readLine();
      if (line == null) System.out.println("bye bye ");
      

    }catch (IOException e) { try{s.close();}catch(Exception e2){;} }
    //finally { ; }
    return line;
  }  
  
  String readLine(){
    String line =null;
    try {
      line= in.readLine();
    }catch (IOException e) { ; }
    return line;
  }
  

}
