import java.util.*;

public class Joueur{
  public String nom;
  public int position ;
  public int argent ;
  public CaseMonopoly[] possessions;
  public int[] numerosPossessions;
  
  public Joueur(String nom, int position, int argent, CaseMonopoly[] possessions, int[] numerosPossessions){
    this.nom = nom;
    this.position = position ;
    this.argent = argent ;
    this.possessions = possessions ;
    this.numerosPossessions = 
    numerosPossessions ;
  }

  public String toString(){
    return nom + "(" + argent + ")";
  }

  public boolean aPerdu(){
    return (argent <= 0);
  }

  public int[] lanceDes(){
    int[] des = new int[2];
    des[0] = nombreAleatoire(1,6);
    des[1] = nombreAleatoire(1,6);
    System.out.println("Lancer 1 : " + des[0] + " - Lancer 2 : " + des[1]);
    return des;
  }

  public void acheteMaison(){
    boolean pasFini = true;
    while (pasFini){
      //Affichage terrains
      int t = 0;
      System.out.println("Liste de vos terrains constructibles");
      // Affiche la liste des possessions "constructibles" du joueur ou de la joueuse :
      while(t<numerosPossessions.length){
        if((possessions[numerosPossessions[t]].type.compareTo("terrain") == 0) && (possessions[numerosPossessions[t]].nbMaisons < 5)){
          System.out.println((t+1)+ "" + possessions[numerosPossessions[t]].nom + "(maisons" + possessions[numerosPossessions[t]].nbMaisons + ", cout d’une maison" + possessions[numerosPossessions[t]].coutMaison() + ")");
        }
        t = t+1;
      }
      //Demande d’achat de maison
      System.out.println("Sur quel terrain voulez-vous construire une maison ?");
      Scanner lectureClavier = new Scanner(System.in);
      int choix = lectureClavier.nextInt();
      if( (possessions[choix] != null)
       && (possessions[choix].type.compareTo("terrain") == 0)
       && (possessions[choix].nbMaisons < 5)){
          argent = argent - possessions[choix].coutMaison();
          possessions[choix].nbMaisons ++;
      } else {
          pasFini = false;
      }
    }
  }

  public static int nombreAleatoire(int lower,int higher){
    return (int)(Math.random() * (higher+1-lower)) + lower;
  }

  /* Acquisition d'une case du plateau (terrain, gare ou compagnie). Prend en entrée : 
  * numéro de case
  * plateau : tableau de 40 cases contenant toutes les cases du Monopoly
  */
  public void acquiertCase(CaseMonopoly caseAchetee){
     // Met à jour l'argent du joueur
     argent = argent - caseAchetee.prix;
     
     // Met à jour le tableau possessions
     possessions[caseAchetee.numero] = caseAchetee;
     
     // Crée un tableau nouveauxNumerosPossessions contenant une case de plus que le tableau
     // numerosPossessions
     int[] nouveauxNumerosPossessions = new int[1+numerosPossessions.length];
          
     // Remplit le tableau nouveauxNumerosPossessions en insérant au bon endroit le numéro
     // de la case achetée : caseAchetee.numero
     boolean caseTrouvee = false;
     int compteur = 0;
     
     while(compteur < numerosPossessions.length){
        if(caseTrouvee == false){
           if(numerosPossessions[compteur] < caseAchetee.numero){
              // on recopie le numéro dans la même case du nouveau tableau :
              nouveauxNumerosPossessions[compteur] = numerosPossessions[compteur];
           } else {
              // on a trouvé où insérer le numéro de caseAchetee
              nouveauxNumerosPossessions[compteur] = caseAchetee.numero;
              caseTrouvee = true; 
           }
        } else {	 
           // on recopie le numéro en le décalant dans le nouveau tableau :
           nouveauxNumerosPossessions[compteur + 1] = numerosPossessions[compteur];
        }
        compteur = compteur + 1  ;
     }
     // Remplace numerosPossessions par nouveauxNumerosPossessions
     numerosPossessions = nouveauxNumerosPossessions ;    
  }


}