Little cleaning with actions change.

This commit is contained in:
amine 2015-02-01 15:27:28 +01:00
parent c6ed835eda
commit 4287ddf6d8
16 changed files with 97 additions and 102 deletions

View File

@ -14,18 +14,32 @@ public class ComportementActionChangerCouleurCase implements ComportementAction
@Override @Override
public void executerAction(Personnage p, Tuple<ArrayList<Personnage>, ArrayList<ObjetAbstrait>, ArrayList<CaseAbstraite>> t) { public void executerAction(Personnage p, Tuple<ArrayList<Personnage>, ArrayList<ObjetAbstrait>, ArrayList<CaseAbstraite>> t) {
ArrayList<CaseAbstraite> cases = t.c; ArrayList<CaseColore> cases = (ArrayList<CaseColore>) t.c.clone();
ArrayList<Personnage> persos = (ArrayList<Personnage>) t.p.clone();
for (Personnage personnage : persos) {
cases.remove(personnage.getCaseCourante());
}
PersonnageBattleZone pb = (PersonnageBattleZone) p;
ArrayList<CaseColore> remove = new ArrayList<CaseColore>();
for (CaseColore ca : cases) {
if (ca.getCouleur().equals(pb.getCouleur())) {
remove.add(ca);
}
}
cases.removeAll(remove);
int size = cases.size(); int size = cases.size();
int item = new Random().nextInt(size); int item = new Random().nextInt(size);
CaseColore caseColore = (CaseColore) p.getCaseCourante(); CaseColore caseColore = (CaseColore) p.getCaseCourante();
PersonnageBattleZone personnage = (PersonnageBattleZone) p;
caseColore.setOccupant(null); caseColore.setOccupant(null);
CaseColore dest = (CaseColore) cases.get(item); CaseColore dest = (CaseColore) cases.get(item);
dest.setOccupant(p); dest.setOccupant(p);
p.setCaseCourante(dest); p.setCaseCourante(dest);
dest.setCouleur(personnage.getCouleur()); dest.setCouleur(pb.getCouleur());
} }
} }

View File

@ -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<Personnage>, ArrayList<ObjetAbstrait>, ArrayList<CaseAbstraite>> t) {
}
}

View File

@ -12,18 +12,25 @@ public class ComportementActionSeDeplacer implements ComportementAction {
@Override @Override
public void executerAction(Personnage perso, Tuple<ArrayList<Personnage>, ArrayList<ObjetAbstrait>, ArrayList<CaseAbstraite>> t) { public void executerAction(Personnage perso, Tuple<ArrayList<Personnage>, ArrayList<ObjetAbstrait>, ArrayList<CaseAbstraite>> t) {
ArrayList<CaseAbstraite> cases = t.c; ArrayList<CaseAbstraite> cases = (ArrayList<CaseAbstraite>) t.c.clone();
ArrayList<ObjetAbstrait> objs = t.o; ArrayList<ObjetAbstrait> objs = (ArrayList<ObjetAbstrait>) t.o.clone();
CaseAbstraite c = perso.getCaseCourante(); CaseAbstraite c = perso.getCaseCourante();
c.setOccupant(null); c.setOccupant(null);
CaseAbstraite destination; CaseAbstraite destination = null;
if (objs.isEmpty()) { if (objs.isEmpty()) {
int size = cases.size(); int size = cases.size();
int item = new Random().nextInt(size); int item = new Random().nextInt(size);
destination = cases.get(item); destination = cases.get(item);
} else { } else {
recupererObjets(objs, destination, perso);
}
destination.setOccupant(perso);
perso.setCaseCourante(destination);
}
private void recupererObjets(ArrayList<ObjetAbstrait> objs, CaseAbstraite destination, Personnage perso) {
int size = objs.size(); int size = objs.size();
int item = new Random().nextInt(size); int item = new Random().nextInt(size);
destination = objs.get(item).getCaseCourante(); destination = objs.get(item).getCaseCourante();
@ -31,8 +38,5 @@ public class ComportementActionSeDeplacer implements ComportementAction {
destination.setObjetOccupant(null); destination.setObjetOccupant(null);
perso.setObjet(objs.get(item)); perso.setObjet(objs.get(item));
} }
destination.setOccupant(perso);
perso.setCaseCourante(destination);
}
} }

View File

@ -1,5 +1,5 @@
package Comportements; package Comportements;
public enum EAction { public enum EAction {
ChangerCouleurCase, RamasserNeige, SeDeplacer, TirerBalon, TirerBouleDeNeige ChangerCouleurCase, SeDeplacer, TirerBalon, TirerBouleDeNeige
} }

View File

@ -2,12 +2,27 @@ package Fabriques.Objets;
import Cases.CaseAbstraite; import Cases.CaseAbstraite;
import Objets.ObjetAbstrait; import Objets.ObjetAbstrait;
import Objets.ObjetAvecBonusForce;
import Objets.ObjetAvecBonusPV;
import Objets.ObjetAvecBonusVitesse;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Random;
public class FabriqueObjetBattleSnow extends FabriqueObjetAbstraite { public class FabriqueObjetBattleSnow extends FabriqueObjetAbstraite {
@Override @Override
public ArrayList<ObjetAbstrait> creerObjets(CaseAbstraite[][] plateau) { public ArrayList<ObjetAbstrait> creerObjets(CaseAbstraite[][] plateau) {
return null; 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

@ -2,27 +2,13 @@ package Fabriques.Objets;
import Cases.CaseAbstraite; import Cases.CaseAbstraite;
import Objets.ObjetAbstrait; import Objets.ObjetAbstrait;
import Objets.ObjetAvecBonusForce;
import Objets.ObjetAvecBonusPV;
import Objets.ObjetAvecBonusVitesse;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Random;
public class FabriqueObjetBattleZone extends FabriqueObjetAbstraite { public class FabriqueObjetBattleZone extends FabriqueObjetAbstraite {
@Override @Override
public ArrayList<ObjetAbstrait> creerObjets(CaseAbstraite[][] plateau) { public ArrayList<ObjetAbstrait> creerObjets(CaseAbstraite[][] plateau) {
ArrayList<ObjetAbstrait> objs = new ArrayList<ObjetAbstrait>(); return 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

@ -2,12 +2,15 @@ package Fabriques.Objets;
import Cases.CaseAbstraite; import Cases.CaseAbstraite;
import Objets.ObjetAbstrait; import Objets.ObjetAbstrait;
import Objets.ObjetBallon;
import java.util.ArrayList; import java.util.ArrayList;
public class FabriqueObjetFootball extends FabriqueObjetAbstraite { public class FabriqueObjetFootball extends FabriqueObjetAbstraite {
@Override @Override
public ArrayList<ObjetAbstrait> creerObjets(CaseAbstraite[][] plateau) { public ArrayList<ObjetAbstrait> creerObjets(CaseAbstraite[][] plateau) {
return null; ArrayList<ObjetAbstrait> objs = new ArrayList<ObjetAbstrait>();
objs.add(new ObjetBallon());
return objs;
} }
} }

View File

@ -4,8 +4,6 @@ import Cases.CaseAbstraite;
import Comportements.ComportementAction; import Comportements.ComportementAction;
import Comportements.ComportementActionTirerBalon; import Comportements.ComportementActionTirerBalon;
import Observateur.Organisation; import Observateur.Organisation;
import Person.Arbitre;
import Person.JoueurDeChamp;
import Person.Personnage; import Person.Personnage;
import java.util.ArrayList; import java.util.ArrayList;
@ -16,12 +14,6 @@ public class FabriquePersonnagesFootball extends FabriquePersonnagesAbstraite {
@Override @Override
public ArrayList<Personnage> CreerPersonages(Organisation o, CaseAbstraite[][] plateau) { public ArrayList<Personnage> 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 // TODO: Add players to team 1

View File

@ -2,7 +2,7 @@ package Fabriques.Plateau;
import Cases.CaseAbstraite; import Cases.CaseAbstraite;
public class FabriquePlateauBattleGoal extends FabriquePlateauAbstraite { public class FabriquePlateauFootball extends FabriquePlateauAbstraite {
@Override @Override
public CaseAbstraite[][] CreerPlateau() { public CaseAbstraite[][] CreerPlateau() {

View File

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

View File

@ -4,9 +4,6 @@ import Cases.CaseAbstraite;
import Fabriques.Objets.FabriqueObjetBattleZone; 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, FabriqueObjetBattleZone obj) { public FabriqueScenarioBattleZone(FabriquePlateauBattleZone pl, FabriquePersonnagesBattleZone pr, FabriqueObjetBattleZone obj) {
@ -15,18 +12,6 @@ public class FabriqueScenarioBattleZone extends FabriqueScenarioAbstraite {
@Override @Override
public void tourParTour(CaseAbstraite[][] plateau) { 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

@ -0,0 +1,7 @@
package Objets;
public class ObjetBallon extends ObjetAbstrait {
public ObjetBallon() {
super("Ballon", 0, 0, 0.5);
}
}

View File

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

View File

@ -1,12 +0,0 @@
package Person;
import Comportements.ComportementAction;
public class JoueurDeChamp extends Personnage {
public JoueurDeChamp(String nom, ComportementAction parDefaut) {
super(nom, parDefaut);
}
}

View File

@ -41,8 +41,7 @@ public class Personnage extends PersonnagesAbstraits {
this.caseCourante = null; this.caseCourante = null;
this.etatCourant = new EtatPersonnageOK(this); 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.caseCourante=null;
this.etatCourant= new EtatPersonnageOK(this); this.etatCourant= new EtatPersonnageOK(this);
this.ChangerAction(EAction.SeDeplacer); this.ChangerAction(EAction.SeDeplacer);
this.Action = a;
} }
public void ChangeEtat(EEtat NouvelEtat) public void ChangeEtat(EEtat NouvelEtat)
@ -143,9 +142,6 @@ public class Personnage extends PersonnagesAbstraits {
case ChangerCouleurCase: case ChangerCouleurCase:
Action = new ComportementActionChangerCouleurCase(); Action = new ComportementActionChangerCouleurCase();
break; break;
case RamasserNeige:
Action = new ComportementActionRamasserNeige();
break;
case SeDeplacer: case SeDeplacer:
Action = new ComportementActionSeDeplacer(); Action = new ComportementActionSeDeplacer();
break; break;

View File

@ -24,6 +24,8 @@ public class SimulationJeu {
o = new Organisation(); o = new Organisation();
personnages = f.CreerPersonnages(o, plateau); personnages = f.CreerPersonnages(o, plateau);
f.creerObjets(plateau);
intefaceC = new InterfaceConsole(plateau); intefaceC = new InterfaceConsole(plateau);
} }