From 2394181d99563572501c56bcad36cc53911922f2 Mon Sep 17 00:00:00 2001 From: amine Date: Sun, 1 Feb 2015 14:37:33 +0100 Subject: [PATCH] Fabrique d'objets. --- .../Objets/FabriqueObjetAbstraite.java | 10 +++++ .../Objets/FabriqueObjetBattleSnow.java | 13 ++++++ .../Objets/FabriqueObjetBattleZone.java | 28 ++++++++++++ .../Objets/FabriqueObjetFootball.java | 13 ++++++ .../FabriquePersonnagesAbstraite.java | 14 +++++- .../FabriquePersonnagesBattleSnow.java | 5 +-- .../FabriquePersonnagesBattleZone.java | 6 ++- .../FabriquePersonnagesFootball.java | 7 +-- .../Scenario/FabriqueScenarioAbstraite.java | 14 +++++- .../Scenario/FabriqueScenarioBattleZone.java | 26 ++++++++++- src/Main.java | 3 +- src/SimulationJeu.java | 44 +------------------ 12 files changed, 128 insertions(+), 55 deletions(-) create mode 100644 src/Fabriques/Objets/FabriqueObjetAbstraite.java create mode 100644 src/Fabriques/Objets/FabriqueObjetBattleSnow.java create mode 100644 src/Fabriques/Objets/FabriqueObjetBattleZone.java create mode 100644 src/Fabriques/Objets/FabriqueObjetFootball.java diff --git a/src/Fabriques/Objets/FabriqueObjetAbstraite.java b/src/Fabriques/Objets/FabriqueObjetAbstraite.java new file mode 100644 index 0000000..713baf5 --- /dev/null +++ b/src/Fabriques/Objets/FabriqueObjetAbstraite.java @@ -0,0 +1,10 @@ +package Fabriques.Objets; + +import Cases.CaseAbstraite; +import Objets.ObjetAbstrait; + +import java.util.ArrayList; + +abstract public class FabriqueObjetAbstraite { + public abstract ArrayList creerObjets(CaseAbstraite[][] plateau); +} diff --git a/src/Fabriques/Objets/FabriqueObjetBattleSnow.java b/src/Fabriques/Objets/FabriqueObjetBattleSnow.java new file mode 100644 index 0000000..924aeea --- /dev/null +++ b/src/Fabriques/Objets/FabriqueObjetBattleSnow.java @@ -0,0 +1,13 @@ +package Fabriques.Objets; + +import Cases.CaseAbstraite; +import Objets.ObjetAbstrait; + +import java.util.ArrayList; + +public class FabriqueObjetBattleSnow extends FabriqueObjetAbstraite { + @Override + public ArrayList creerObjets(CaseAbstraite[][] plateau) { + return null; + } +} diff --git a/src/Fabriques/Objets/FabriqueObjetBattleZone.java b/src/Fabriques/Objets/FabriqueObjetBattleZone.java new file mode 100644 index 0000000..0cd7c93 --- /dev/null +++ b/src/Fabriques/Objets/FabriqueObjetBattleZone.java @@ -0,0 +1,28 @@ +package Fabriques.Objets; + +import Cases.CaseAbstraite; +import Objets.ObjetAbstrait; +import Objets.ObjetAvecBonusForce; +import Objets.ObjetAvecBonusPV; +import Objets.ObjetAvecBonusVitesse; + +import java.util.ArrayList; +import java.util.Random; + +public class FabriqueObjetBattleZone extends FabriqueObjetAbstraite { + @Override + public ArrayList creerObjets(CaseAbstraite[][] plateau) { + ArrayList objs = new ArrayList(); + if (new Random().nextInt(3) == 1) { + objs.add(new ObjetAvecBonusPV("Potion", 10, 10, 10)); + } + if (new Random().nextInt(3) == 2) { + objs.add(new ObjetAvecBonusVitesse("Etoile", 10, 10, 10)); + + } + if (new Random().nextInt(3) == 3) { + objs.add(new ObjetAvecBonusForce("Marteau", 10, 10, 10)); + } + return objs; + } +} diff --git a/src/Fabriques/Objets/FabriqueObjetFootball.java b/src/Fabriques/Objets/FabriqueObjetFootball.java new file mode 100644 index 0000000..4467452 --- /dev/null +++ b/src/Fabriques/Objets/FabriqueObjetFootball.java @@ -0,0 +1,13 @@ +package Fabriques.Objets; + +import Cases.CaseAbstraite; +import Objets.ObjetAbstrait; + +import java.util.ArrayList; + +public class FabriqueObjetFootball extends FabriqueObjetAbstraite { + @Override + public ArrayList creerObjets(CaseAbstraite[][] plateau) { + return null; + } +} diff --git a/src/Fabriques/Personnages/FabriquePersonnagesAbstraite.java b/src/Fabriques/Personnages/FabriquePersonnagesAbstraite.java index 4920bc2..ad126a3 100644 --- a/src/Fabriques/Personnages/FabriquePersonnagesAbstraite.java +++ b/src/Fabriques/Personnages/FabriquePersonnagesAbstraite.java @@ -1,10 +1,22 @@ package Fabriques.Personnages; +import Cases.CaseAbstraite; import Observateur.Organisation; import Person.Personnage; import java.util.ArrayList; +import java.util.Random; abstract public class FabriquePersonnagesAbstraite { - public abstract ArrayList CreerPersonages(Organisation o); + public abstract ArrayList CreerPersonages(Organisation o, CaseAbstraite[][] plateau); + + protected void placement(ArrayList personnages, CaseAbstraite[][] plateau) { + Random rand = new Random(); + for (Personnage p : personnages) { + int x = rand.nextInt(plateau.length); + int y = rand.nextInt(plateau[x].length); + p.setCaseCourante(plateau[x][y]); + plateau[x][y].ajouterOccupant(p); + } + } } diff --git a/src/Fabriques/Personnages/FabriquePersonnagesBattleSnow.java b/src/Fabriques/Personnages/FabriquePersonnagesBattleSnow.java index 88b0d25..0719921 100644 --- a/src/Fabriques/Personnages/FabriquePersonnagesBattleSnow.java +++ b/src/Fabriques/Personnages/FabriquePersonnagesBattleSnow.java @@ -1,5 +1,6 @@ package Fabriques.Personnages; +import Cases.CaseAbstraite; import Observateur.Organisation; import Person.Personnage; @@ -8,9 +9,7 @@ import java.util.ArrayList; public class FabriquePersonnagesBattleSnow extends FabriquePersonnagesAbstraite { @Override - public ArrayList CreerPersonages(Organisation o) { - // TODO Auto-generated method stub + public ArrayList CreerPersonages(Organisation o, CaseAbstraite[][] plateau) { return null; } - } diff --git a/src/Fabriques/Personnages/FabriquePersonnagesBattleZone.java b/src/Fabriques/Personnages/FabriquePersonnagesBattleZone.java index af22e32..d3d5e08 100644 --- a/src/Fabriques/Personnages/FabriquePersonnagesBattleZone.java +++ b/src/Fabriques/Personnages/FabriquePersonnagesBattleZone.java @@ -1,5 +1,6 @@ package Fabriques.Personnages; +import Cases.CaseAbstraite; import Comportements.ComportementAction; import Comportements.ComportementActionChangerCouleurCase; import Observateur.Organisation; @@ -10,8 +11,9 @@ import java.util.ArrayList; public class FabriquePersonnagesBattleZone extends FabriquePersonnagesAbstraite { protected ComportementAction parDefaut = new ComportementActionChangerCouleurCase(); + @Override - public ArrayList CreerPersonages(Organisation o) { + public ArrayList CreerPersonages(Organisation o, CaseAbstraite[][] plateau) { ArrayList list = new ArrayList(); PersonnageBattleZone p1 = new PersonnageBattleZone("Bob", 100.0, 1.0, 1.0, 2, parDefaut); @@ -22,6 +24,8 @@ public class FabriquePersonnagesBattleZone extends FabriquePersonnagesAbstraite //list.add(p3); //PersonnageBattleZone p4 = new PersonnageBattleZone("Zac", 100.0, 1.0, 1.0, 2, parDefaut); //list.add(p4); + + this.placement(list, plateau); return list; } } diff --git a/src/Fabriques/Personnages/FabriquePersonnagesFootball.java b/src/Fabriques/Personnages/FabriquePersonnagesFootball.java index 018ac7e..6d02d01 100644 --- a/src/Fabriques/Personnages/FabriquePersonnagesFootball.java +++ b/src/Fabriques/Personnages/FabriquePersonnagesFootball.java @@ -1,5 +1,6 @@ package Fabriques.Personnages; +import Cases.CaseAbstraite; import Comportements.ComportementAction; import Comportements.ComportementActionTirerBalon; import Observateur.Organisation; @@ -13,9 +14,9 @@ public class FabriquePersonnagesFootball extends FabriquePersonnagesAbstraite { ComportementAction parDefaut = new ComportementActionTirerBalon(); @Override - public ArrayList CreerPersonages(Organisation o) { - - // Add referee + public ArrayList CreerPersonages(Organisation o, CaseAbstraite[][] plateau) { + + // Add referee Arbitre arbitre = new Arbitre("Colina"); diff --git a/src/Fabriques/Scenario/FabriqueScenarioAbstraite.java b/src/Fabriques/Scenario/FabriqueScenarioAbstraite.java index 8f07392..1018662 100644 --- a/src/Fabriques/Scenario/FabriqueScenarioAbstraite.java +++ b/src/Fabriques/Scenario/FabriqueScenarioAbstraite.java @@ -1,20 +1,24 @@ package Fabriques.Scenario; import Cases.CaseAbstraite; +import Fabriques.Objets.FabriqueObjetAbstraite; import Fabriques.Personnages.FabriquePersonnagesAbstraite; import Fabriques.Plateau.FabriquePlateauAbstraite; +import Objets.ObjetAbstrait; import Observateur.Organisation; import Person.Personnage; import java.util.ArrayList; -public class FabriqueScenarioAbstraite { +public abstract class FabriqueScenarioAbstraite { FabriquePlateauAbstraite fPlateau; FabriquePersonnagesAbstraite fPersonnages; + FabriqueObjetAbstraite fObjs; - public FabriqueScenarioAbstraite(FabriquePlateauAbstraite pl, FabriquePersonnagesAbstraite pr) { + public FabriqueScenarioAbstraite(FabriquePlateauAbstraite pl, FabriquePersonnagesAbstraite pr, FabriqueObjetAbstraite fObjs) { this.fPlateau = pl; this.fPersonnages = pr; + this.fObjs = fObjs; } public ArrayList CreerPersonnages(Organisation o) { @@ -24,4 +28,10 @@ public class FabriqueScenarioAbstraite { public CaseAbstraite[][] CreerPlateau() { return this.fPlateau.CreerPlateau(); } + + public ArrayList creerObjets(CaseAbstraite[][] plateau) { + return this.fObjs.creerObjets(plateau); + } + + public abstract void tourParTour(CaseAbstraite[][] plateau); } diff --git a/src/Fabriques/Scenario/FabriqueScenarioBattleZone.java b/src/Fabriques/Scenario/FabriqueScenarioBattleZone.java index ed94d01..3755ec3 100644 --- a/src/Fabriques/Scenario/FabriqueScenarioBattleZone.java +++ b/src/Fabriques/Scenario/FabriqueScenarioBattleZone.java @@ -1,10 +1,32 @@ package Fabriques.Scenario; +import Cases.CaseAbstraite; +import Fabriques.Objets.FabriqueObjetBattleZone; import Fabriques.Personnages.FabriquePersonnagesBattleZone; import Fabriques.Plateau.FabriquePlateauBattleZone; +import Objets.ObjetAbstrait; + +import java.util.Random; public class FabriqueScenarioBattleZone extends FabriqueScenarioAbstraite { - public FabriqueScenarioBattleZone(FabriquePlateauBattleZone pl, FabriquePersonnagesBattleZone pr) { - super(pl, pr); + public FabriqueScenarioBattleZone(FabriquePlateauBattleZone pl, FabriquePersonnagesBattleZone pr, FabriqueObjetBattleZone obj) { + super(pl, pr, obj); + } + + @Override + public void tourParTour(CaseAbstraite[][] plateau) { + if (new Random().nextInt(3) == 1) { + for (ObjetAbstrait o : this.creerObjets(plateau)) { + placementObjet(o, plateau); + } + } + } + + private void placementObjet(ObjetAbstrait o, CaseAbstraite[][] plateau) { + Random rand = new Random(); + 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/Main.java b/src/Main.java index ad15d2d..010e95f 100644 --- a/src/Main.java +++ b/src/Main.java @@ -1,10 +1,11 @@ +import Fabriques.Objets.FabriqueObjetBattleZone; import Fabriques.Personnages.FabriquePersonnagesBattleZone; import Fabriques.Plateau.FabriquePlateauBattleZone; import Fabriques.Scenario.FabriqueScenarioBattleZone; public class Main { public static void main(String[] args){ - SimulationJeu s = new SimulationJeu(new FabriqueScenarioBattleZone(new FabriquePlateauBattleZone(), new FabriquePersonnagesBattleZone())); + SimulationJeu s = new SimulationJeu(new FabriqueScenarioBattleZone(new FabriquePlateauBattleZone(), new FabriquePersonnagesBattleZone(), new FabriqueObjetBattleZone())); s.lancerJeu(); } } diff --git a/src/SimulationJeu.java b/src/SimulationJeu.java index f7a94c5..8d3c2c8 100644 --- a/src/SimulationJeu.java +++ b/src/SimulationJeu.java @@ -1,15 +1,10 @@ import Cases.CaseAbstraite; import Fabriques.Scenario.FabriqueScenarioAbstraite; -import Objets.ObjetAbstrait; -import Objets.ObjetAvecBonusForce; -import Objets.ObjetAvecBonusPV; -import Objets.ObjetAvecBonusVitesse; import Observateur.Organisation; import Person.Personnage; import utils.InterfaceConsole; import java.util.ArrayList; -import java.util.Random; import java.util.Scanner; @@ -45,7 +40,6 @@ public class SimulationJeu { } public void lancerJeu() { - placement(); boolean continuer = true; afficheTous(); @@ -54,8 +48,9 @@ public class SimulationJeu { p.Execution(p.AnalyseSituation()); recupererInformations(); } - placerDesObjets(); + f.tourParTour(plateau); afficheTous(); + // bloquer le tour jusqu'a toucher une touche du clavier. Scanner s = new Scanner(System.in); s.nextLine(); @@ -63,41 +58,6 @@ public class SimulationJeu { } - private void placerDesObjets() { - if (new Random().nextInt(2) == 1) { - if (new Random().nextInt(3) == 1) { - placementObjet(new ObjetAvecBonusPV("Toto", 10, 10, 10)); - } - if (new Random().nextInt(3) == 2) { - placementObjet(new ObjetAvecBonusVitesse("Toto", 10, 10, 10)); - - } - if (new Random().nextInt(3) == 3) { - placementObjet(new ObjetAvecBonusForce("tptp", 10, 10, 10)); - } - } - } - - private void placement() { - Random rand = new Random(); - for (Personnage p : personnages) { - int x = rand.nextInt(plateau.length); - int y = rand.nextInt(plateau[x].length); -// int x = 0; -// int y = 0; - p.setCaseCourante(plateau[x][y]); - plateau[x][y].ajouterOccupant(p); - } - } - - private void placementObjet(ObjetAbstrait o) { - Random rand = new Random(); - int x = rand.nextInt(plateau.length); - int y = rand.nextInt(plateau[x].length); - o.setCaseCourante(plateau[x][y]); - plateau[x][y].setObjetOccupant(o); - } - // Todo Save private void enregistrerSimulation(String NomFichier) { // Todo