From 8e024db46c0de609cd5df7a0d14e129e1710eecb Mon Sep 17 00:00:00 2001 From: aminecmi Date: Mon, 9 Mar 2015 13:31:04 +0100 Subject: [PATCH] Le fameux ballon. --- .../ComportementActionTirerBalon.java | 2 +- .../Objets/FabriqueObjetAbstraite.java | 11 +++++++++++ .../Objets/FabriqueObjetFootball.java | 1 + src/Objets/ObjetBallon.java | 2 +- src/Observateur/Arbitre.java | 19 ++++++++++++++----- src/Observateur/SujetObserveAbstrait.java | 2 +- src/Person/Personnage.java | 5 +++-- src/Person/PersonnageFootball.java | 4 ++++ src/SimulationJeu.java | 7 ++++--- 9 files changed, 40 insertions(+), 13 deletions(-) diff --git a/src/Comportements/ComportementActionTirerBalon.java b/src/Comportements/ComportementActionTirerBalon.java index d457cad..b0802a9 100644 --- a/src/Comportements/ComportementActionTirerBalon.java +++ b/src/Comportements/ComportementActionTirerBalon.java @@ -38,7 +38,7 @@ public class ComportementActionTirerBalon implements ComportementAction { dest = cases.get(item); } if (j.getCaseCourante().getObjetOccupant() != null) { - j.lancerBallon((ObjetBallon) dest.getObjetOccupant(), cases); + j.lancerBallon((ObjetBallon) j.getCaseCourante().getObjetOccupant(), cases); } joueur.getCaseCourante().setOccupant(null); joueur.setCaseCourante(dest); diff --git a/src/Fabriques/Objets/FabriqueObjetAbstraite.java b/src/Fabriques/Objets/FabriqueObjetAbstraite.java index 713baf5..b72c2dc 100644 --- a/src/Fabriques/Objets/FabriqueObjetAbstraite.java +++ b/src/Fabriques/Objets/FabriqueObjetAbstraite.java @@ -4,7 +4,18 @@ import Cases.CaseAbstraite; import Objets.ObjetAbstrait; import java.util.ArrayList; +import java.util.Random; abstract public class FabriqueObjetAbstraite { public abstract ArrayList creerObjets(CaseAbstraite[][] plateau); + + void placement(ArrayList objets, CaseAbstraite[][] plateau) { + Random rand = new Random(); + for (ObjetAbstrait o : objets) { + int x = rand.nextInt(plateau.length); + int y = rand.nextInt(plateau[x].length); + o.setCaseCourante(plateau[x][y]); + plateau[x][y].setObjetOccupant(o); + } + } } diff --git a/src/Fabriques/Objets/FabriqueObjetFootball.java b/src/Fabriques/Objets/FabriqueObjetFootball.java index 9cd5416..2c0f34d 100644 --- a/src/Fabriques/Objets/FabriqueObjetFootball.java +++ b/src/Fabriques/Objets/FabriqueObjetFootball.java @@ -11,6 +11,7 @@ public class FabriqueObjetFootball extends FabriqueObjetAbstraite { public ArrayList creerObjets(CaseAbstraite[][] plateau) { ArrayList objs = new ArrayList(); objs.add(new ObjetBallon()); + this.placement(objs, plateau); return objs; } } diff --git a/src/Objets/ObjetBallon.java b/src/Objets/ObjetBallon.java index b0d450f..b8ab322 100644 --- a/src/Objets/ObjetBallon.java +++ b/src/Objets/ObjetBallon.java @@ -2,6 +2,6 @@ package Objets; public class ObjetBallon extends ObjetAbstrait { public ObjetBallon() { - super("Ballon", 0, 0, 0.5); + super("*", 0, 0, 0.5); } } diff --git a/src/Observateur/Arbitre.java b/src/Observateur/Arbitre.java index f583288..ae229a2 100644 --- a/src/Observateur/Arbitre.java +++ b/src/Observateur/Arbitre.java @@ -1,18 +1,27 @@ package Observateur; +import java.util.Random; + public class Arbitre extends SujetObserveAbstrait { - private int iter = 10; + private int max = 10; + private int tour = 1; + + public Arbitre() { + max = new Random().nextInt(10) + 10; + } @Override - public void update() { - iter--; - if (iter == 0) { + public boolean update() { + System.out.println("----------------- TOUR NUMERO " + tour + " ------------------"); + tour++; + if (tour == max) { System.out.println("STOP!"); for (ObservateurAbstrait o : liste) { o.update(); } - iter = 10; + return false; } + return true; } } diff --git a/src/Observateur/SujetObserveAbstrait.java b/src/Observateur/SujetObserveAbstrait.java index d7e2b1e..b77776f 100644 --- a/src/Observateur/SujetObserveAbstrait.java +++ b/src/Observateur/SujetObserveAbstrait.java @@ -19,5 +19,5 @@ public abstract class SujetObserveAbstrait { liste.remove(observateurAbstrait); } - public abstract void update(); + public abstract boolean update(); } diff --git a/src/Person/Personnage.java b/src/Person/Personnage.java index 1d417ff..8067244 100644 --- a/src/Person/Personnage.java +++ b/src/Person/Personnage.java @@ -247,7 +247,8 @@ public class Personnage extends PersonnagesAbstraits implements ObservateurAbstr @Override public String toString() { - return "Personnage{" + + return nom + " case " + caseCourante.toString() + " pv " + pointsDeVie; + /*return "Personnage{" + "caseCourante=" + caseCourante + ", objet=" + objet + ", nom='" + nom + '\'' + @@ -261,6 +262,6 @@ public class Personnage extends PersonnagesAbstraits implements ObservateurAbstr ", voisinsActuels=" + voisinsActuels + ", etatCourant=" + etatCourant + ", voisins=" + voisins + - '}'; + '}';*/ } } diff --git a/src/Person/PersonnageFootball.java b/src/Person/PersonnageFootball.java index fa7657b..c967535 100644 --- a/src/Person/PersonnageFootball.java +++ b/src/Person/PersonnageFootball.java @@ -32,7 +32,11 @@ public class PersonnageFootball extends Personnage { int item = new Random().nextInt(size); CaseAbstraite dest = cases.get(item); + CaseAbstraite old = objetOccupant.getCaseCourante(); + objetOccupant.setCaseCourante(dest); dest.setObjetOccupant(objetOccupant); + + old.setObjetOccupant(null); } } diff --git a/src/SimulationJeu.java b/src/SimulationJeu.java index 134d03b..9b49dee 100644 --- a/src/SimulationJeu.java +++ b/src/SimulationJeu.java @@ -1,5 +1,6 @@ import Cases.CaseAbstraite; import Fabriques.Scenario.FabriqueScenarioAbstraite; +import Objets.ObjetAbstrait; import Observateur.Arbitre; import Person.Personnage; import utils.InterfaceConsole; @@ -22,7 +23,7 @@ class SimulationJeu { personnages = f.CreerPersonnages(plateau); - f.creerObjets(plateau); + ArrayList objs = f.creerObjets(plateau); intefaceC = new InterfaceConsole(plateau); @@ -48,10 +49,10 @@ class SimulationJeu { boolean continuer = true; afficheTous(); while (continuer) { - a.update(); + continuer = a.update(); + recupererInformations(); for (Personnage p : personnages) { p.Execution(p.AnalyseSituation()); - recupererInformations(); } f.tourParTour(plateau); afficheTous();