Back to project page LotR_Risk.
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.
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; } }