Fabrique d'objets.

This commit is contained in:
amine 2015-02-01 14:37:33 +01:00
parent b45d628ca6
commit 2394181d99
12 changed files with 128 additions and 55 deletions

View File

@ -0,0 +1,10 @@
package Fabriques.Objets;
import Cases.CaseAbstraite;
import Objets.ObjetAbstrait;
import java.util.ArrayList;
abstract public class FabriqueObjetAbstraite {
public abstract ArrayList<ObjetAbstrait> creerObjets(CaseAbstraite[][] plateau);
}

View File

@ -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<ObjetAbstrait> creerObjets(CaseAbstraite[][] plateau) {
return null;
}
}

View File

@ -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<ObjetAbstrait> creerObjets(CaseAbstraite[][] plateau) {
ArrayList<ObjetAbstrait> objs = new ArrayList<ObjetAbstrait>();
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;
}
}

View File

@ -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<ObjetAbstrait> creerObjets(CaseAbstraite[][] plateau) {
return null;
}
}

View File

@ -1,10 +1,22 @@
package Fabriques.Personnages; package Fabriques.Personnages;
import Cases.CaseAbstraite;
import Observateur.Organisation; import Observateur.Organisation;
import Person.Personnage; import Person.Personnage;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Random;
abstract public class FabriquePersonnagesAbstraite { abstract public class FabriquePersonnagesAbstraite {
public abstract ArrayList<Personnage> CreerPersonages(Organisation o); public abstract ArrayList<Personnage> CreerPersonages(Organisation o, CaseAbstraite[][] plateau);
protected void placement(ArrayList<Personnage> 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);
}
}
} }

View File

@ -1,5 +1,6 @@
package Fabriques.Personnages; package Fabriques.Personnages;
import Cases.CaseAbstraite;
import Observateur.Organisation; import Observateur.Organisation;
import Person.Personnage; import Person.Personnage;
@ -8,9 +9,7 @@ import java.util.ArrayList;
public class FabriquePersonnagesBattleSnow extends FabriquePersonnagesAbstraite { public class FabriquePersonnagesBattleSnow extends FabriquePersonnagesAbstraite {
@Override @Override
public ArrayList<Personnage> CreerPersonages(Organisation o) { public ArrayList<Personnage> CreerPersonages(Organisation o, CaseAbstraite[][] plateau) {
// TODO Auto-generated method stub
return null; return null;
} }
} }

View File

@ -1,5 +1,6 @@
package Fabriques.Personnages; package Fabriques.Personnages;
import Cases.CaseAbstraite;
import Comportements.ComportementAction; import Comportements.ComportementAction;
import Comportements.ComportementActionChangerCouleurCase; import Comportements.ComportementActionChangerCouleurCase;
import Observateur.Organisation; import Observateur.Organisation;
@ -10,8 +11,9 @@ import java.util.ArrayList;
public class FabriquePersonnagesBattleZone extends FabriquePersonnagesAbstraite { public class FabriquePersonnagesBattleZone extends FabriquePersonnagesAbstraite {
protected ComportementAction parDefaut = new ComportementActionChangerCouleurCase(); protected ComportementAction parDefaut = new ComportementActionChangerCouleurCase();
@Override @Override
public ArrayList<Personnage> CreerPersonages(Organisation o) { public ArrayList<Personnage> CreerPersonages(Organisation o, CaseAbstraite[][] plateau) {
ArrayList<Personnage> list = new ArrayList<Personnage>(); ArrayList<Personnage> list = new ArrayList<Personnage>();
PersonnageBattleZone p1 = new PersonnageBattleZone("Bob", 100.0, 1.0, 1.0, 2, parDefaut); 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); //list.add(p3);
//PersonnageBattleZone p4 = new PersonnageBattleZone("Zac", 100.0, 1.0, 1.0, 2, parDefaut); //PersonnageBattleZone p4 = new PersonnageBattleZone("Zac", 100.0, 1.0, 1.0, 2, parDefaut);
//list.add(p4); //list.add(p4);
this.placement(list, plateau);
return list; return list;
} }
} }

View File

@ -1,5 +1,6 @@
package Fabriques.Personnages; package Fabriques.Personnages;
import Cases.CaseAbstraite;
import Comportements.ComportementAction; import Comportements.ComportementAction;
import Comportements.ComportementActionTirerBalon; import Comportements.ComportementActionTirerBalon;
import Observateur.Organisation; import Observateur.Organisation;
@ -13,9 +14,9 @@ public class FabriquePersonnagesFootball extends FabriquePersonnagesAbstraite {
ComportementAction parDefaut = new ComportementActionTirerBalon(); ComportementAction parDefaut = new ComportementActionTirerBalon();
@Override @Override
public ArrayList<Personnage> CreerPersonages(Organisation o) { public ArrayList<Personnage> CreerPersonages(Organisation o, CaseAbstraite[][] plateau) {
// Add referee // Add referee
Arbitre arbitre = new Arbitre("Colina"); Arbitre arbitre = new Arbitre("Colina");

View File

@ -1,20 +1,24 @@
package Fabriques.Scenario; package Fabriques.Scenario;
import Cases.CaseAbstraite; import Cases.CaseAbstraite;
import Fabriques.Objets.FabriqueObjetAbstraite;
import Fabriques.Personnages.FabriquePersonnagesAbstraite; import Fabriques.Personnages.FabriquePersonnagesAbstraite;
import Fabriques.Plateau.FabriquePlateauAbstraite; import Fabriques.Plateau.FabriquePlateauAbstraite;
import Objets.ObjetAbstrait;
import Observateur.Organisation; import Observateur.Organisation;
import Person.Personnage; import Person.Personnage;
import java.util.ArrayList; import java.util.ArrayList;
public class FabriqueScenarioAbstraite { public abstract class FabriqueScenarioAbstraite {
FabriquePlateauAbstraite fPlateau; FabriquePlateauAbstraite fPlateau;
FabriquePersonnagesAbstraite fPersonnages; FabriquePersonnagesAbstraite fPersonnages;
FabriqueObjetAbstraite fObjs;
public FabriqueScenarioAbstraite(FabriquePlateauAbstraite pl, FabriquePersonnagesAbstraite pr) { public FabriqueScenarioAbstraite(FabriquePlateauAbstraite pl, FabriquePersonnagesAbstraite pr, FabriqueObjetAbstraite fObjs) {
this.fPlateau = pl; this.fPlateau = pl;
this.fPersonnages = pr; this.fPersonnages = pr;
this.fObjs = fObjs;
} }
public ArrayList<Personnage> CreerPersonnages(Organisation o) { public ArrayList<Personnage> CreerPersonnages(Organisation o) {
@ -24,4 +28,10 @@ public class FabriqueScenarioAbstraite {
public CaseAbstraite[][] CreerPlateau() { public CaseAbstraite[][] CreerPlateau() {
return this.fPlateau.CreerPlateau(); return this.fPlateau.CreerPlateau();
} }
public ArrayList<ObjetAbstrait> creerObjets(CaseAbstraite[][] plateau) {
return this.fObjs.creerObjets(plateau);
}
public abstract void tourParTour(CaseAbstraite[][] plateau);
} }

View File

@ -1,10 +1,32 @@
package Fabriques.Scenario; package Fabriques.Scenario;
import Cases.CaseAbstraite;
import Fabriques.Objets.FabriqueObjetBattleZone;
import Fabriques.Personnages.FabriquePersonnagesBattleZone; import Fabriques.Personnages.FabriquePersonnagesBattleZone;
import Fabriques.Plateau.FabriquePlateauBattleZone; import Fabriques.Plateau.FabriquePlateauBattleZone;
import Objets.ObjetAbstrait;
import java.util.Random;
public class FabriqueScenarioBattleZone extends FabriqueScenarioAbstraite { public class FabriqueScenarioBattleZone extends FabriqueScenarioAbstraite {
public FabriqueScenarioBattleZone(FabriquePlateauBattleZone pl, FabriquePersonnagesBattleZone pr) { public FabriqueScenarioBattleZone(FabriquePlateauBattleZone pl, FabriquePersonnagesBattleZone pr, FabriqueObjetBattleZone obj) {
super(pl, pr); 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);
} }
} }

View File

@ -1,10 +1,11 @@
import Fabriques.Objets.FabriqueObjetBattleZone;
import Fabriques.Personnages.FabriquePersonnagesBattleZone; import Fabriques.Personnages.FabriquePersonnagesBattleZone;
import Fabriques.Plateau.FabriquePlateauBattleZone; import Fabriques.Plateau.FabriquePlateauBattleZone;
import Fabriques.Scenario.FabriqueScenarioBattleZone; import Fabriques.Scenario.FabriqueScenarioBattleZone;
public class Main { public class Main {
public static void main(String[] args){ 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(); s.lancerJeu();
} }
} }

View File

@ -1,15 +1,10 @@
import Cases.CaseAbstraite; import Cases.CaseAbstraite;
import Fabriques.Scenario.FabriqueScenarioAbstraite; import Fabriques.Scenario.FabriqueScenarioAbstraite;
import Objets.ObjetAbstrait;
import Objets.ObjetAvecBonusForce;
import Objets.ObjetAvecBonusPV;
import Objets.ObjetAvecBonusVitesse;
import Observateur.Organisation; import Observateur.Organisation;
import Person.Personnage; import Person.Personnage;
import utils.InterfaceConsole; import utils.InterfaceConsole;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner; import java.util.Scanner;
@ -45,7 +40,6 @@ public class SimulationJeu {
} }
public void lancerJeu() { public void lancerJeu() {
placement();
boolean continuer = true; boolean continuer = true;
afficheTous(); afficheTous();
@ -54,8 +48,9 @@ public class SimulationJeu {
p.Execution(p.AnalyseSituation()); p.Execution(p.AnalyseSituation());
recupererInformations(); recupererInformations();
} }
placerDesObjets(); f.tourParTour(plateau);
afficheTous(); afficheTous();
// bloquer le tour jusqu'a toucher une touche du clavier. // bloquer le tour jusqu'a toucher une touche du clavier.
Scanner s = new Scanner(System.in); Scanner s = new Scanner(System.in);
s.nextLine(); 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 // Todo Save
private void enregistrerSimulation(String NomFichier) { private void enregistrerSimulation(String NomFichier) {
// Todo // Todo