Android Open Source - LotR_Risk L O T R_ Game






From Project

Back to project page LotR_Risk.

License

The source code is released under:

GNU General Public License

If you think the Android project LotR_Risk listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package utils;
// ww  w.j  av  a2s.co m
import java.io.IOException;
import java.util.ArrayList;

import net.ThreadConnexion;
import net.EnvoiReception;
import objects.Client;
import objects.Joueur;
import objects.Territoire;
import objects.TypeTerritoire;

public class LOTR_Game implements InterfaceLOTR {

  private ArrayList<Joueur> tabJoueur; //Liste des joueurs jouant  la partie
  private LOTR_Data data; //Donnes utilises pour grer les rgles du jeu
  private ThreadConnexion threadServeur; //Thread grant les connexion entrantes
  private Client client; //Application monoclient actuellement
  
  public LOTR_Game() throws IOException {
    this.data = new LOTR_Data(); //Donnes du plateau initiales
    this.threadServeur = new ThreadConnexion(this);
    this.threadServeur.start();
  }

  /**
   * Lance la procdure de cration des joueurs avec un client <b>(monoclient actuellement)</b> et retourne <b>TRUE</b>
   * si l'excution de celle-ci c'est droule correctement. 
   * @throws ClassNotFoundException
   * @throws IOException
   * @throws InterruptedException
   */
  public boolean init_joueurs_territoires() throws ClassNotFoundException, IOException, InterruptedException 
  {
    System.out.println("Lancement de la procdure pour la cration des joueurs");
    this.tabJoueur = getJoueurs_FromRemote();
    if (this.tabJoueur == null)
      return false;
    System.out.println("Fin de la rception de " + this.tabJoueur.size() + " joueurs");
    ArrayList<Territoire> listAllTerritoires = this.data.getAllTerritoires();
    switch (this.tabJoueur.size()) { //Changement de rgles en fonction du nombre de joueur
      case 2 : 
        this.tabJoueur.get(0).setListTerritoire(this.data.getListTerritoireAvecType(TypeTerritoire.BIEN));
        this.tabJoueur.get(1).setListTerritoire(this.data.getListTerritoireAvecType(TypeTerritoire.MAL));
        this.tabJoueur.add(new Joueur("Neutre", "#ff000000")); //Gestion du neutre TODO
        this.tabJoueur.get(2).setListTerritoire(this.data.getListTerritoireAvecType(TypeTerritoire.NEUTRE));
        break;
      case 3 : 
        //Joueur 1
        this.tabJoueur.get(0).add_Territoires_From_List(this.data.generateRandomTerritoiresFromType(TypeTerritoire.MAL, 5, listAllTerritoires));
        this.tabJoueur.get(0).add_Territoires_From_List(this.data.generateRandomTerritoiresFromType(TypeTerritoire.NEUTRE, 4, listAllTerritoires));
        //Joueur 2
        this.tabJoueur.get(1).add_Territoires_From_List(this.data.generateRandomTerritoiresFromType(TypeTerritoire.MAL, 4, listAllTerritoires));
        this.tabJoueur.get(1).add_Territoires_From_List(this.data.generateRandomTerritoiresFromType(TypeTerritoire.NEUTRE, 5, listAllTerritoires));
        //Joueur 3
        this.tabJoueur.get(2).add_Territoires_From_List(this.data.getListTerritoireAvecType(TypeTerritoire.BIEN));
        break;
      case 4 :
        this.tabJoueur.get(0).add_Territoires_From_List(this.data.generateRandomTerritoiresFromType(TypeTerritoire.MAL, 5, listAllTerritoires));
        this.tabJoueur.get(1).add_Territoires_From_List(this.data.generateRandomTerritoiresFromType(TypeTerritoire.BIEN, 4, listAllTerritoires));
        this.tabJoueur.get(2).add_Territoires_From_List(this.data.generateRandomTerritoiresFromType(TypeTerritoire.MAL, 4, listAllTerritoires));
        this.tabJoueur.get(3).add_Territoires_From_List(this.data.generateRandomTerritoiresFromType(TypeTerritoire.BIEN, 5, listAllTerritoires));
        break;
      default : return false;
    }
    return true;
  }

  /**
   * Execute la procdure de rcupration des joueurs, attend la fin de la procdure et retourne la liste associe.
   * @throws ClassNotFoundException
   * @throws IOException
   * @throws InterruptedException
   */
  public ArrayList<Joueur> getJoueurs_FromRemote() throws ClassNotFoundException, IOException, InterruptedException {
    EnvoiReception threadTraitement = this.client.definirTraitementEtExecuter(CREATION_JOUEURS, tabJoueur);
    threadTraitement.join(); //Attend la fin du traitement xcut
    this.tabJoueur = threadTraitement.getListJoueur(); //Rcupre la liste des joueurs mise  jour
    return this.tabJoueur;
  }  
  
  /**
   * Envoi la liste des joueurs  l'application distante.
   * @throws InterruptedException
   */
  public void sendJoueurs_ToRemote() throws InterruptedException {
    Thread threadTraitement = this.client.definirTraitementEtExecuter(SERVEUR_ENVOI_JOUEURS, tabJoueur);
    threadTraitement.join();
  }  
  
  /**
   * Reoit la liste des joueurs depuis l'application distante.
   * @throws InterruptedException
   */
  public void receiveJoueurs_FromRemote() throws InterruptedException {
    EnvoiReception threadTraitement = this.client.definirTraitementEtExecuter(SERVEUR_RECEPTION_JOUEURS, tabJoueur);
    threadTraitement.join();
    this.tabJoueur = threadTraitement.getListJoueur(); 
  }  
  
  /**
   * Retourne la liste des joueurs jouant  la partie.
   */
  public ArrayList<Joueur> getJoueurs() {
    return this.tabJoueur;
  }
  
  /**
   * Ajoute un nouveau client  la partie.
   */
  public void ajouterNouveauClient(Client toAdd) {
    this.client = toAdd;
  }
  
  /**
   * Retourne la <b>constante</b> de type entier reu depuis l'application distante du client <b>c</b>, <b>-1</b> si la connexion n'existe pas.
   * @throws IOException 
   * @throws ClassNotFoundException 
   */
  Integer recupererTraitementClient(Client c) throws ClassNotFoundException, IOException {
    return (c.get_ConstanteJeu_FromClient());
  }
  
  ThreadConnexion getThreadConnexion() {
    return threadServeur;
  }
  
  //Attend une connexion client
  void attenteConnexionClient() throws InterruptedException {
    while (this.client == null) { //Attente de la connexion client
      Thread.sleep(1000); 
    }
  }
  
  //TODO Fermeture de la seule connexion cliente, multiclient non gr
  void fermerClient() throws Throwable {
    this.client.fermerConnexion();
    this.tabJoueur = null;
    this.client = null;
  }
  
  public Client getClient() {
    return this.client;
  }
}




Java Source Code List

com.activities.InitGameActivity.java
com.activities.StartUpActivity.java
com.custom.Compteur.java
com.custom.HelperCouleur.java
com.custom.Liste_Couleur.java
com.custom.ServiceReseau.java
com.game.InterfaceLOTR.java
com.game.LOTR_Data.java
com.net.DonneesConnexion.java
com.net.Emission.java
com.net.Reception.java
com.net.TacheConnexion.java
com.net.TacheTransmission.java
net.Emission.java
net.EnvoiReception.java
net.Reception.java
net.TestClient.java
net.ThreadConnexion.java
objects.Client.java
objects.Joueur.java
objects.Joueur.java
objects.Region.java
objects.Region.java
objects.Territoire.java
objects.Territoire.java
objects.TypeTerritoire.java
objects.TypeTerritoire.java
swingGUI.InfoJoueur.java
swingGUI.InfoTerritoire.java
swingGUI.Logger.java
swingGUI.MainWindow.java
swingGUI.Main.java
swingGUI.Map.java
utils.InterfaceLOTR.java
utils.LOTR_Data.java
utils.LOTR_Game.java
utils.Main.java