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;
import Cases.CaseAbstraite;
import Observateur.Organisation;
import Person.Personnage;
import java.util.ArrayList;
import java.util.Random;
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;
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<Personnage> CreerPersonages(Organisation o) {
// TODO Auto-generated method stub
public ArrayList<Personnage> CreerPersonages(Organisation o, CaseAbstraite[][] plateau) {
return null;
}
}

View File

@ -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<Personnage> CreerPersonages(Organisation o) {
public ArrayList<Personnage> CreerPersonages(Organisation o, CaseAbstraite[][] plateau) {
ArrayList<Personnage> list = new ArrayList<Personnage>();
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;
}
}

View File

@ -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<Personnage> CreerPersonages(Organisation o) {
// Add referee
public ArrayList<Personnage> CreerPersonages(Organisation o, CaseAbstraite[][] plateau) {
// Add referee
Arbitre arbitre = new Arbitre("Colina");

View File

@ -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<Personnage> CreerPersonnages(Organisation o) {
@ -24,4 +28,10 @@ public class FabriqueScenarioAbstraite {
public CaseAbstraite[][] 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;
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);
}
}

View File

@ -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();
}
}

View File

@ -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