diff --git a/src/Comportements/ComportementActionChangerCouleurCase.java b/src/Comportements/ComportementActionChangerCouleurCase.java index 8126a73..7f2fc11 100644 --- a/src/Comportements/ComportementActionChangerCouleurCase.java +++ b/src/Comportements/ComportementActionChangerCouleurCase.java @@ -14,18 +14,32 @@ public class ComportementActionChangerCouleurCase implements ComportementAction @Override public void executerAction(Personnage p, Tuple, ArrayList, ArrayList> t) { - ArrayList cases = t.c; + ArrayList cases = (ArrayList) t.c.clone(); + ArrayList persos = (ArrayList) t.p.clone(); + + for (Personnage personnage : persos) { + cases.remove(personnage.getCaseCourante()); + } + + PersonnageBattleZone pb = (PersonnageBattleZone) p; + ArrayList remove = new ArrayList(); + for (CaseColore ca : cases) { + if (ca.getCouleur().equals(pb.getCouleur())) { + remove.add(ca); + } + } + cases.removeAll(remove); + int size = cases.size(); int item = new Random().nextInt(size); CaseColore caseColore = (CaseColore) p.getCaseCourante(); - PersonnageBattleZone personnage = (PersonnageBattleZone) p; caseColore.setOccupant(null); CaseColore dest = (CaseColore) cases.get(item); dest.setOccupant(p); p.setCaseCourante(dest); - dest.setCouleur(personnage.getCouleur()); + dest.setCouleur(pb.getCouleur()); } } diff --git a/src/Comportements/ComportementActionRamasserNeige.java b/src/Comportements/ComportementActionRamasserNeige.java deleted file mode 100644 index 64e9914..0000000 --- a/src/Comportements/ComportementActionRamasserNeige.java +++ /dev/null @@ -1,16 +0,0 @@ -package Comportements; - -import Cases.CaseAbstraite; -import Objets.ObjetAbstrait; -import Person.Personnage; -import utils.Tuple; - -import java.util.ArrayList; - -public class ComportementActionRamasserNeige implements ComportementAction { - - @Override - public void executerAction(Personnage joueur, Tuple, ArrayList, ArrayList> t) { - - } -} diff --git a/src/Comportements/ComportementActionSeDeplacer.java b/src/Comportements/ComportementActionSeDeplacer.java index bbd9c05..41d5d0a 100644 --- a/src/Comportements/ComportementActionSeDeplacer.java +++ b/src/Comportements/ComportementActionSeDeplacer.java @@ -12,27 +12,31 @@ public class ComportementActionSeDeplacer implements ComportementAction { @Override public void executerAction(Personnage perso, Tuple, ArrayList, ArrayList> t) { - ArrayList cases = t.c; - ArrayList objs = t.o; + ArrayList cases = (ArrayList) t.c.clone(); + ArrayList objs = (ArrayList) t.o.clone(); CaseAbstraite c = perso.getCaseCourante(); c.setOccupant(null); - CaseAbstraite destination; + CaseAbstraite destination = null; if (objs.isEmpty()) { int size = cases.size(); int item = new Random().nextInt(size); destination = cases.get(item); } else { - int size = objs.size(); - int item = new Random().nextInt(size); - destination = objs.get(item).getCaseCourante(); - objs.get(item).setCaseCourante(null); - destination.setObjetOccupant(null); - perso.setObjet(objs.get(item)); + recupererObjets(objs, destination, perso); } destination.setOccupant(perso); perso.setCaseCourante(destination); } + private void recupererObjets(ArrayList objs, CaseAbstraite destination, Personnage perso) { + int size = objs.size(); + int item = new Random().nextInt(size); + destination = objs.get(item).getCaseCourante(); + objs.get(item).setCaseCourante(null); + destination.setObjetOccupant(null); + perso.setObjet(objs.get(item)); + } + } diff --git a/src/Comportements/EAction.java b/src/Comportements/EAction.java index cc244bc..bca8ca9 100644 --- a/src/Comportements/EAction.java +++ b/src/Comportements/EAction.java @@ -1,5 +1,5 @@ package Comportements; public enum EAction { - ChangerCouleurCase, RamasserNeige, SeDeplacer, TirerBalon, TirerBouleDeNeige + ChangerCouleurCase, SeDeplacer, TirerBalon, TirerBouleDeNeige } diff --git a/src/Fabriques/Objets/FabriqueObjetBattleSnow.java b/src/Fabriques/Objets/FabriqueObjetBattleSnow.java index 924aeea..409ea7f 100644 --- a/src/Fabriques/Objets/FabriqueObjetBattleSnow.java +++ b/src/Fabriques/Objets/FabriqueObjetBattleSnow.java @@ -2,12 +2,27 @@ 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 FabriqueObjetBattleSnow extends FabriqueObjetAbstraite { @Override public ArrayList creerObjets(CaseAbstraite[][] plateau) { - return null; + 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/FabriqueObjetBattleZone.java b/src/Fabriques/Objets/FabriqueObjetBattleZone.java index 0cd7c93..c6f8b3b 100644 --- a/src/Fabriques/Objets/FabriqueObjetBattleZone.java +++ b/src/Fabriques/Objets/FabriqueObjetBattleZone.java @@ -2,27 +2,13 @@ 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; + return new ArrayList(); } + } diff --git a/src/Fabriques/Objets/FabriqueObjetFootball.java b/src/Fabriques/Objets/FabriqueObjetFootball.java index 4467452..9cd5416 100644 --- a/src/Fabriques/Objets/FabriqueObjetFootball.java +++ b/src/Fabriques/Objets/FabriqueObjetFootball.java @@ -2,12 +2,15 @@ package Fabriques.Objets; import Cases.CaseAbstraite; import Objets.ObjetAbstrait; +import Objets.ObjetBallon; import java.util.ArrayList; public class FabriqueObjetFootball extends FabriqueObjetAbstraite { @Override public ArrayList creerObjets(CaseAbstraite[][] plateau) { - return null; + ArrayList objs = new ArrayList(); + objs.add(new ObjetBallon()); + return objs; } } diff --git a/src/Fabriques/Personnages/FabriquePersonnagesFootball.java b/src/Fabriques/Personnages/FabriquePersonnagesFootball.java index 6d02d01..4acceaa 100644 --- a/src/Fabriques/Personnages/FabriquePersonnagesFootball.java +++ b/src/Fabriques/Personnages/FabriquePersonnagesFootball.java @@ -4,8 +4,6 @@ import Cases.CaseAbstraite; import Comportements.ComportementAction; import Comportements.ComportementActionTirerBalon; import Observateur.Organisation; -import Person.Arbitre; -import Person.JoueurDeChamp; import Person.Personnage; import java.util.ArrayList; @@ -16,12 +14,6 @@ public class FabriquePersonnagesFootball extends FabriquePersonnagesAbstraite { @Override public ArrayList CreerPersonages(Organisation o, CaseAbstraite[][] plateau) { - // Add referee - Arbitre arbitre = new Arbitre("Colina"); - - - // TODO: Add team 1 - JoueurDeChamp joueur = new JoueurDeChamp("Zidane", parDefaut); // TODO: Add players to team 1 diff --git a/src/Fabriques/Plateau/FabriquePlateauBattleGoal.java b/src/Fabriques/Plateau/FabriquePlateauFootball.java similarity index 69% rename from src/Fabriques/Plateau/FabriquePlateauBattleGoal.java rename to src/Fabriques/Plateau/FabriquePlateauFootball.java index 672400c..1821dd5 100644 --- a/src/Fabriques/Plateau/FabriquePlateauBattleGoal.java +++ b/src/Fabriques/Plateau/FabriquePlateauFootball.java @@ -2,7 +2,7 @@ package Fabriques.Plateau; import Cases.CaseAbstraite; -public class FabriquePlateauBattleGoal extends FabriquePlateauAbstraite { +public class FabriquePlateauFootball extends FabriquePlateauAbstraite { @Override public CaseAbstraite[][] CreerPlateau() { diff --git a/src/Fabriques/Scenario/FabriqueScenarioBattleSnow.java b/src/Fabriques/Scenario/FabriqueScenarioBattleSnow.java new file mode 100644 index 0000000..79d5d61 --- /dev/null +++ b/src/Fabriques/Scenario/FabriqueScenarioBattleSnow.java @@ -0,0 +1,32 @@ +package Fabriques.Scenario; + +import Cases.CaseAbstraite; +import Fabriques.Objets.FabriqueObjetBattleSnow; +import Fabriques.Personnages.FabriquePersonnagesBattleSnow; +import Fabriques.Plateau.FabriquePlateauBattleSnow; +import Objets.ObjetAbstrait; + +import java.util.Random; + +public class FabriqueScenarioBattleSnow extends FabriqueScenarioAbstraite { + public FabriqueScenarioBattleSnow(FabriquePlateauBattleSnow pl, FabriquePersonnagesBattleSnow pr, FabriqueObjetBattleSnow fObjs) { + super(pl, pr, fObjs); + } + + @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/Fabriques/Scenario/FabriqueScenarioBattleZone.java b/src/Fabriques/Scenario/FabriqueScenarioBattleZone.java index 3755ec3..31f5f1d 100644 --- a/src/Fabriques/Scenario/FabriqueScenarioBattleZone.java +++ b/src/Fabriques/Scenario/FabriqueScenarioBattleZone.java @@ -4,9 +4,6 @@ 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, FabriqueObjetBattleZone obj) { @@ -15,18 +12,6 @@ public class FabriqueScenarioBattleZone extends FabriqueScenarioAbstraite { @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/Objets/ObjetBallon.java b/src/Objets/ObjetBallon.java new file mode 100644 index 0000000..b0d450f --- /dev/null +++ b/src/Objets/ObjetBallon.java @@ -0,0 +1,7 @@ +package Objets; + +public class ObjetBallon extends ObjetAbstrait { + public ObjetBallon() { + super("Ballon", 0, 0, 0.5); + } +} diff --git a/src/Person/Arbitre.java b/src/Person/Arbitre.java deleted file mode 100644 index 91c73be..0000000 --- a/src/Person/Arbitre.java +++ /dev/null @@ -1,13 +0,0 @@ -package Person; - -import Comportements.ComportementActionSeDeplacer; - -public class Arbitre extends Personnage { - - public Arbitre(String nom) { - // TODO: Not sure if this one is a "personnage" with actions/ - super(nom, new ComportementActionSeDeplacer()); - } - -} - diff --git a/src/Person/JoueurDeChamp.java b/src/Person/JoueurDeChamp.java deleted file mode 100644 index e8eda2c..0000000 --- a/src/Person/JoueurDeChamp.java +++ /dev/null @@ -1,12 +0,0 @@ -package Person; - - -import Comportements.ComportementAction; - -public class JoueurDeChamp extends Personnage { - - public JoueurDeChamp(String nom, ComportementAction parDefaut) { - super(nom, parDefaut); - } - -} diff --git a/src/Person/Personnage.java b/src/Person/Personnage.java index a7cd1c4..1024fb3 100644 --- a/src/Person/Personnage.java +++ b/src/Person/Personnage.java @@ -41,8 +41,7 @@ public class Personnage extends PersonnagesAbstraits { this.caseCourante = null; this.etatCourant = new EtatPersonnageOK(this); - this.ChangerAction(EAction.SeDeplacer); - + this.Action = c; } @@ -56,7 +55,7 @@ public class Personnage extends PersonnagesAbstraits { this.caseCourante=null; this.etatCourant= new EtatPersonnageOK(this); this.ChangerAction(EAction.SeDeplacer); - + this.Action = a; } public void ChangeEtat(EEtat NouvelEtat) @@ -143,9 +142,6 @@ public class Personnage extends PersonnagesAbstraits { case ChangerCouleurCase: Action = new ComportementActionChangerCouleurCase(); break; - case RamasserNeige: - Action = new ComportementActionRamasserNeige(); - break; case SeDeplacer: Action = new ComportementActionSeDeplacer(); break; diff --git a/src/SimulationJeu.java b/src/SimulationJeu.java index c34a82f..89050ef 100644 --- a/src/SimulationJeu.java +++ b/src/SimulationJeu.java @@ -24,6 +24,8 @@ public class SimulationJeu { o = new Organisation(); personnages = f.CreerPersonnages(o, plateau); + f.creerObjets(plateau); + intefaceC = new InterfaceConsole(plateau); }