This commit is contained in:
aminecmi 2015-02-08 09:30:03 +01:00
parent ecd5504100
commit 6de383d5f0
25 changed files with 110 additions and 110 deletions

View File

@ -9,15 +9,15 @@ import java.util.HashMap;
public abstract class CaseAbstraite { public abstract class CaseAbstraite {
protected Personnage occupant; private Personnage occupant;
protected ObjetAbstrait objetOccupant; private ObjetAbstrait objetOccupant;
HashMap<PointsCardinaux, CaseAbstraite> voisins; private HashMap<PointsCardinaux, CaseAbstraite> voisins;
Coordonnees coord; private Coordonnees coord;
public CaseAbstraite(int vert, int hor) { CaseAbstraite(int vert, int hor) {
coord = new Coordonnees(vert, hor); coord = new Coordonnees(vert, hor);
voisins = new HashMap<PointsCardinaux, CaseAbstraite>(); voisins = new HashMap<PointsCardinaux, CaseAbstraite>();
@ -52,17 +52,9 @@ public abstract class CaseAbstraite {
} }
} }
public void ajouterVoisin(PointsCardinaux p, CaseAbstraite c) {
voisins.put(p, c);
}
public void ajouterOccupant(Personnage occ) { public void ajouterOccupant(Personnage occ) {
this.occupant = occ; this.occupant = occ;
} }
public void ajouterObjet(ObjetAbstrait objet) {
this.objetOccupant = objet;
}
public Personnage getOccupant() { public Personnage getOccupant() {
return occupant; return occupant;
@ -84,19 +76,7 @@ public abstract class CaseAbstraite {
return voisins; return voisins;
} }
public void setVoisins(HashMap<PointsCardinaux, CaseAbstraite> voisins) {
this.voisins = voisins;
}
public String affichageSpecial() { public String affichageSpecial() {
return " "; return " ";
} }
public Coordonnees getCoord() {
return coord;
}
public void setCoord(Coordonnees coord) {
this.coord = coord;
}
} }

View File

@ -3,7 +3,7 @@ package Cases;
import java.awt.*; import java.awt.*;
public class CaseColore extends CaseAbstraite { public class CaseColore extends CaseAbstraite {
Color couleur; private Color couleur;
public CaseColore(int vert, int hor) { public CaseColore(int vert, int hor) {
super(vert, hor); super(vert, hor);

View File

@ -13,18 +13,10 @@ public class Coordonnees {
return ligne; return ligne;
} }
public void setLigne(int ligne) {
this.ligne = ligne;
}
public int getCol() { public int getCol() {
return col; return col;
} }
public void setCol(int col) {
this.col = col;
}
@Override @Override
public String toString() { public String toString() {
return "col " + getCol() + " ligne " + getLigne(); return "col " + getCol() + " ligne " + getLigne();

View File

@ -2,7 +2,7 @@ package Cases.utils;
import java.util.Random; import java.util.Random;
public class RandomPointCardinal<E extends Enum> { class RandomPointCardinal<E extends Enum> {
private static final Random RND = new Random(); private static final Random RND = new Random();
private final E[] values; private final E[] values;

View File

@ -9,7 +9,7 @@ import java.util.ArrayList;
import java.util.Random; import java.util.Random;
public class ComportementActionSeDeplacer implements ComportementAction { public class ComportementActionSeDeplacer implements ComportementAction {
CaseAbstraite destination; private CaseAbstraite destination;
@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) {
@ -27,7 +27,9 @@ public class ComportementActionSeDeplacer implements ComportementAction {
} else { } else {
recupererObjets(objs, perso); recupererObjets(objs, perso);
} }
destination.setOccupant(perso); if (destination != null) {
destination.setOccupant(perso);
}
perso.setCaseCourante(destination); perso.setCaseCourante(destination);
} }

View File

@ -6,7 +6,7 @@ import java.util.ArrayList;
public class EquipeDeFoot extends GroupeAbstrait { public class EquipeDeFoot extends GroupeAbstrait {
public String nom; private final String nom;
public EquipeDeFoot(ArrayList<Personnage> list) { public EquipeDeFoot(ArrayList<Personnage> list) {
super(list); super(list);

View File

@ -5,9 +5,9 @@ import Person.Personnage;
import java.util.ArrayList; import java.util.ArrayList;
public class GroupeAbstrait extends PersonnagesAbstraits { public class GroupeAbstrait extends PersonnagesAbstraits {
ArrayList<Personnage> list = new ArrayList<Personnage>(); private ArrayList<Personnage> list = new ArrayList<Personnage>();
public GroupeAbstrait(ArrayList<Personnage> list) { GroupeAbstrait(ArrayList<Personnage> list) {
this.list = list; this.list = list;
} }

View File

@ -3,11 +3,11 @@ package Etats;
import Person.Personnage; import Person.Personnage;
public abstract class EtatPersonnageAbstrait { public abstract class EtatPersonnageAbstrait {
protected Personnage joueur;
protected EtatPersonnageAbstrait(Personnage perso){ final Personnage joueur;
this.joueur = perso;
EtatPersonnageAbstrait(Personnage perso) {
this.joueur = perso;
} }
protected abstract void execute(); protected abstract void execute();

View File

@ -3,8 +3,6 @@ package Etats;
import Person.Personnage; import Person.Personnage;
public class EtatPersonnageKO extends EtatPersonnageAbstrait { public class EtatPersonnageKO extends EtatPersonnageAbstrait {
private int nbTourKO;
public EtatPersonnageKO(Personnage perso) { public EtatPersonnageKO(Personnage perso) {
super(perso); super(perso);

View File

@ -9,7 +9,7 @@ import java.util.Random;
abstract public class FabriquePersonnagesAbstraite { abstract public class FabriquePersonnagesAbstraite {
public abstract ArrayList<Personnage> CreerPersonages(CaseAbstraite[][] plateau); public abstract ArrayList<Personnage> CreerPersonages(CaseAbstraite[][] plateau);
protected void placement(ArrayList<Personnage> personnages, CaseAbstraite[][] plateau) { void placement(ArrayList<Personnage> personnages, CaseAbstraite[][] plateau) {
Random rand = new Random(); Random rand = new Random();
for (Personnage p : personnages) { for (Personnage p : personnages) {
int x = rand.nextInt(plateau.length); int x = rand.nextInt(plateau.length);

View File

@ -10,8 +10,8 @@ import Person.PersonnageBattleSnow;
import java.util.ArrayList; import java.util.ArrayList;
public class FabriquePersonnagesBattleSnow extends FabriquePersonnagesAbstraite { public class FabriquePersonnagesBattleSnow extends FabriquePersonnagesAbstraite {
private final ComportementAction parDefaut = new ComportementActionTirerBouleDeNeige();
public Arbitre a; public Arbitre a;
protected ComportementAction parDefaut = new ComportementActionTirerBouleDeNeige();
@Override @Override
public ArrayList<Personnage> CreerPersonages(CaseAbstraite[][] plateau) { public ArrayList<Personnage> CreerPersonages(CaseAbstraite[][] plateau) {

View File

@ -9,7 +9,7 @@ import Person.PersonnageBattleZone;
import java.util.ArrayList; import java.util.ArrayList;
public class FabriquePersonnagesBattleZone extends FabriquePersonnagesAbstraite { public class FabriquePersonnagesBattleZone extends FabriquePersonnagesAbstraite {
protected ComportementAction parDefaut = new ComportementActionChangerCouleurCase(); private final ComportementAction parDefaut = new ComportementActionChangerCouleurCase();
@Override @Override
public ArrayList<Personnage> CreerPersonages(CaseAbstraite[][] plateau) { public ArrayList<Personnage> CreerPersonages(CaseAbstraite[][] plateau) {

View File

@ -12,8 +12,8 @@ import Person.PersonnageFootball;
import java.util.ArrayList; import java.util.ArrayList;
public class FabriquePersonnagesFootball extends FabriquePersonnagesAbstraite { public class FabriquePersonnagesFootball extends FabriquePersonnagesAbstraite {
private final ComportementAction parDefaut = new ComportementActionTirerBalon();
public Arbitre a; public Arbitre a;
ComportementAction parDefaut = new ComportementActionTirerBalon();
@Override @Override
public ArrayList<Personnage> CreerPersonages(CaseAbstraite[][] plateau) { public ArrayList<Personnage> CreerPersonages(CaseAbstraite[][] plateau) {

View File

@ -10,11 +10,11 @@ import Person.Personnage;
import java.util.ArrayList; import java.util.ArrayList;
public abstract class FabriqueScenarioAbstraite { public abstract class FabriqueScenarioAbstraite {
FabriquePlateauAbstraite fPlateau; private final FabriquePlateauAbstraite fPlateau;
FabriquePersonnagesAbstraite fPersonnages; private final FabriquePersonnagesAbstraite fPersonnages;
FabriqueObjetAbstraite fObjs; private final FabriqueObjetAbstraite fObjs;
public FabriqueScenarioAbstraite(FabriquePlateauAbstraite pl, FabriquePersonnagesAbstraite pr, FabriqueObjetAbstraite fObjs) { FabriqueScenarioAbstraite(FabriquePlateauAbstraite pl, FabriquePersonnagesAbstraite pr, FabriqueObjetAbstraite fObjs) {
this.fPlateau = pl; this.fPlateau = pl;
this.fPersonnages = pr; this.fPersonnages = pr;
this.fObjs = fObjs; this.fObjs = fObjs;

View File

@ -3,7 +3,7 @@ import Fabriques.Personnages.FabriquePersonnagesBattleZone;
import Fabriques.Plateau.FabriquePlateauBattleZone; import Fabriques.Plateau.FabriquePlateauBattleZone;
import Fabriques.Scenario.FabriqueScenarioBattleZone; import Fabriques.Scenario.FabriqueScenarioBattleZone;
public class Main { class Main {
public static void main(String[] args){ public static void main(String[] args){
SimulationJeu s = new SimulationJeu(new FabriqueScenarioBattleZone(new FabriquePlateauBattleZone(), new FabriquePersonnagesBattleZone(), new FabriqueObjetBattleZone())); SimulationJeu s = new SimulationJeu(new FabriqueScenarioBattleZone(new FabriquePlateauBattleZone(), new FabriquePersonnagesBattleZone(), new FabriqueObjetBattleZone()));
s.lancerJeu(); s.lancerJeu();

View File

@ -3,11 +3,11 @@ package Objets;
import Cases.CaseAbstraite; import Cases.CaseAbstraite;
public abstract class ObjetAbstrait { public abstract class ObjetAbstrait {
protected CaseAbstraite caseCourante; private CaseAbstraite caseCourante;
protected String nom; private String nom;
protected double pointsDeVie; private double pointsDeVie;
protected double force; private double force;
protected double vitesse; private double vitesse;
protected ObjetAbstrait(String name) { protected ObjetAbstrait(String name) {
this.nom = name; this.nom = name;
@ -17,8 +17,8 @@ public abstract class ObjetAbstrait {
this.caseCourante = null; this.caseCourante = null;
} }
protected ObjetAbstrait(String name, double lifePoint, double strength, double speed) { ObjetAbstrait(String name, double lifePoint, double strength, double speed) {
this.nom = name; this.nom = name;
this.pointsDeVie=lifePoint; this.pointsDeVie=lifePoint;
this.force=strength; this.force=strength;
this.vitesse=speed; this.vitesse=speed;

View File

@ -2,7 +2,7 @@ package Observateur;
public class Arbitre extends SujetObserveAbstrait { public class Arbitre extends SujetObserveAbstrait {
int iter = 10; private int iter = 10;
@Override @Override
public void update() { public void update() {

View File

@ -4,9 +4,9 @@ import java.util.ArrayList;
public abstract class SujetObserveAbstrait { public abstract class SujetObserveAbstrait {
ArrayList<ObservateurAbstrait> liste; final ArrayList<ObservateurAbstrait> liste;
protected SujetObserveAbstrait() { SujetObserveAbstrait() {
liste = new ArrayList<ObservateurAbstrait>(); liste = new ArrayList<ObservateurAbstrait>();
} }

View File

@ -19,17 +19,17 @@ import java.util.HashSet;
public class Personnage extends PersonnagesAbstraits implements ObservateurAbstrait { public class Personnage extends PersonnagesAbstraits implements ObservateurAbstrait {
protected CaseAbstraite caseCourante; private final String nom;
protected ObjetAbstrait objet; private final double force;
protected String nom; private final double vitesse;
protected String groupe; private final double portee;
protected double pointsDeVie; private CaseAbstraite caseCourante;
protected double force; private ObjetAbstrait objet;
protected double vitesse; private String groupe;
protected double portee; private double pointsDeVie;
protected EAction action; private EAction action;
protected ComportementAction Action; private ComportementAction Action;
HashSet<CaseAbstraite> voisinsActuels = new HashSet<CaseAbstraite>(); private HashSet<CaseAbstraite> voisinsActuels = new HashSet<CaseAbstraite>();
private EtatPersonnageAbstrait etatCourant; private EtatPersonnageAbstrait etatCourant;
private HashMap<PointsCardinaux, CaseAbstraite> voisins; private HashMap<PointsCardinaux, CaseAbstraite> voisins;
@ -46,7 +46,7 @@ public class Personnage extends PersonnagesAbstraits implements ObservateurAbstr
} }
protected Personnage(String name, double lifePoint, double strength, double speed, int portee, ComportementAction a) { Personnage(String name, double lifePoint, double strength, double speed, int portee, ComportementAction a) {
this.nom = name; this.nom = name;
this.pointsDeVie=lifePoint; this.pointsDeVie=lifePoint;
this.force=strength; this.force=strength;
@ -90,7 +90,7 @@ public class Personnage extends PersonnagesAbstraits implements ObservateurAbstr
Action.executerAction(this, t); Action.executerAction(this, t);
} }
public HashSet<CaseAbstraite> voisinsPortee(CaseAbstraite c, int rayon) { HashSet<CaseAbstraite> voisinsPortee(CaseAbstraite c, int rayon) {
HashMap<PointsCardinaux, CaseAbstraite> v = c.getVoisins(); HashMap<PointsCardinaux, CaseAbstraite> v = c.getVoisins();
if ((rayon + 1) == this.getPortee()) { if ((rayon + 1) == this.getPortee()) {
voisinsActuels.addAll(c.getVoisins().values()); voisinsActuels.addAll(c.getVoisins().values());
@ -103,7 +103,7 @@ public class Personnage extends PersonnagesAbstraits implements ObservateurAbstr
return voisinsActuels; return voisinsActuels;
} }
public ArrayList<ObjetAbstrait> rechercheObjetProche(HashSet<CaseAbstraite> voisinsDesVoisins) { ArrayList<ObjetAbstrait> rechercheObjetProche(HashSet<CaseAbstraite> voisinsDesVoisins) {
ArrayList<ObjetAbstrait> objetsVoisins = new ArrayList<ObjetAbstrait>(); ArrayList<ObjetAbstrait> objetsVoisins = new ArrayList<ObjetAbstrait>();
for (CaseAbstraite c : voisinsDesVoisins) { for (CaseAbstraite c : voisinsDesVoisins) {
@ -114,14 +114,14 @@ public class Personnage extends PersonnagesAbstraits implements ObservateurAbstr
return objetsVoisins; return objetsVoisins;
} }
protected HashSet<CaseAbstraite> getCaseAbstraitesForPortee() { HashSet<CaseAbstraite> getCaseAbstraitesForPortee() {
HashSet<CaseAbstraite> voisins = voisinsPortee(this.caseCourante, 0); HashSet<CaseAbstraite> voisins = voisinsPortee(this.caseCourante, 0);
voisins.remove(getCaseCourante()); voisins.remove(getCaseCourante());
return voisins; return voisins;
} }
public ArrayList<Personnage> rechercheJoueur(HashSet<CaseAbstraite> voisinsDesVoisins) { ArrayList<Personnage> rechercheJoueur(HashSet<CaseAbstraite> voisinsDesVoisins) {
ArrayList<Personnage> personnes = new ArrayList<Personnage>(); ArrayList<Personnage> personnes = new ArrayList<Personnage>();
for (CaseAbstraite c : voisinsDesVoisins) { for (CaseAbstraite c : voisinsDesVoisins) {
if (c.getOccupant() != null) { if (c.getOccupant() != null) {
@ -132,12 +132,7 @@ public class Personnage extends PersonnagesAbstraits implements ObservateurAbstr
return personnes; return personnes;
} }
public void mediationConflits() { void ChangerAction(EAction nouvelAction) {
}
public void ChangerAction(EAction nouvelAction) {
switch (nouvelAction) { switch (nouvelAction) {
case ChangerCouleurCase: case ChangerCouleurCase:
@ -153,7 +148,7 @@ public class Personnage extends PersonnagesAbstraits implements ObservateurAbstr
Action = new ComportementActionTirerBouleDeNeige(); Action = new ComportementActionTirerBouleDeNeige();
break; break;
case Rien: case Rien:
Action = new ComportementActionTirerBouleDeNeige(); Action = new Rien();
break; break;
default: default:
break; break;
@ -163,7 +158,7 @@ public class Personnage extends PersonnagesAbstraits implements ObservateurAbstr
this.setAction(nouvelAction); this.setAction(nouvelAction);
} }
public ObjetAbstrait getObjet() { ObjetAbstrait getObjet() {
return objet; return objet;
} }
@ -179,7 +174,11 @@ public class Personnage extends PersonnagesAbstraits implements ObservateurAbstr
return bonus + pointsDeVie; return bonus + pointsDeVie;
} }
public double getForce() { void setPointsDeVie(double pointsDeVie) {
this.pointsDeVie = pointsDeVie;
}
double getForce() {
double bonus = 0; double bonus = 0;
if (getObjet() != null) { if (getObjet() != null) {
bonus = getObjet().getForce(); bonus = getObjet().getForce();
@ -199,7 +198,6 @@ public class Personnage extends PersonnagesAbstraits implements ObservateurAbstr
return groupe; return groupe;
} }
public void setGroupe(String equipe) { public void setGroupe(String equipe) {
groupe = equipe; groupe = equipe;
} }
@ -218,7 +216,7 @@ public class Personnage extends PersonnagesAbstraits implements ObservateurAbstr
} }
public double getPortee() { double getPortee() {
return portee; return portee;
} }
@ -226,7 +224,7 @@ public class Personnage extends PersonnagesAbstraits implements ObservateurAbstr
return action; return action;
} }
public void setAction(EAction action) { void setAction(EAction action) {
this.action = action; this.action = action;
} }
@ -242,4 +240,27 @@ public class Personnage extends PersonnagesAbstraits implements ObservateurAbstr
public void update() { public void update() {
this.ChangerAction(EAction.Rien); this.ChangerAction(EAction.Rien);
} }
public void afficherInfos() {
System.out.println(this.toString());
}
@Override
public String toString() {
return "Personnage{" +
"caseCourante=" + caseCourante +
", objet=" + objet +
", nom='" + nom + '\'' +
", groupe='" + groupe + '\'' +
", pointsDeVie=" + pointsDeVie +
", force=" + force +
", vitesse=" + vitesse +
", portee=" + portee +
", action=" + action +
", Action=" + Action +
", voisinsActuels=" + voisinsActuels +
", etatCourant=" + etatCourant +
", voisins=" + voisins +
'}';
}
} }

View File

@ -10,7 +10,11 @@ public class PersonnageBattleSnow extends Personnage{
} }
public void attack(PersonnageBattleSnow cible) { public void attack(PersonnageBattleSnow cible) {
double force = this.getForce();
cible.recevoirAttack(force);
}
private void recevoirAttack(double force) {
this.setPointsDeVie(this.getPointsDeVie() - force);
} }
} }

View File

@ -6,7 +6,7 @@ import java.awt.*;
import java.util.Random; import java.util.Random;
public class PersonnageBattleZone extends Personnage { public class PersonnageBattleZone extends Personnage {
Color couleur; private Color couleur;
public PersonnageBattleZone(String name, double lifePoint, double strength, double speed, int portee, ComportementAction parDefaut) { public PersonnageBattleZone(String name, double lifePoint, double strength, double speed, int portee, ComportementAction parDefaut) {
super(name, lifePoint, strength, speed, portee, parDefaut); super(name, lifePoint, strength, speed, portee, parDefaut);

View File

@ -7,10 +7,11 @@ import Composition.GroupeAbstrait;
import Objets.ObjetBallon; import Objets.ObjetBallon;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Random;
public class PersonnageFootball extends Personnage { public class PersonnageFootball extends Personnage {
public EquipeDeFoot equipe; private EquipeDeFoot equipe;
public PersonnageFootball(String name, double lifePoint, double strength, double speed, int portee, ComportementAction parDefaut) { public PersonnageFootball(String name, double lifePoint, double strength, double speed, int portee, ComportementAction parDefaut) {
super(name, lifePoint, strength, speed, portee, parDefaut); super(name, lifePoint, strength, speed, portee, parDefaut);
@ -27,6 +28,11 @@ public class PersonnageFootball extends Personnage {
} }
public void lancerBallon(ObjetBallon objetOccupant, ArrayList<CaseAbstraite> cases) { public void lancerBallon(ObjetBallon objetOccupant, ArrayList<CaseAbstraite> cases) {
int size = cases.size();
int item = new Random().nextInt(size);
CaseAbstraite dest = cases.get(item);
objetOccupant.setCaseCourante(dest);
dest.setObjetOccupant(objetOccupant);
} }
} }

View File

@ -8,12 +8,12 @@ import java.util.ArrayList;
import java.util.Scanner; import java.util.Scanner;
public class SimulationJeu { class SimulationJeu {
ArrayList<Personnage> personnages; private final CaseAbstraite[][] plateau;
CaseAbstraite[][] plateau; private final FabriqueScenarioAbstraite f;
FabriqueScenarioAbstraite f; private final InterfaceConsole intefaceC;
InterfaceConsole intefaceC; private final Arbitre a;
Arbitre a; private ArrayList<Personnage> personnages;
public SimulationJeu(FabriqueScenarioAbstraite fb) { public SimulationJeu(FabriqueScenarioAbstraite fb) {
f = fb; f = fb;
@ -29,14 +29,14 @@ public class SimulationJeu {
a = new Arbitre(); a = new Arbitre();
} }
public void afficheTous() { void afficheTous() {
System.out.println(""); System.out.println("");
intefaceC.afficherPlateau(); intefaceC.afficherPlateau();
} }
public void recupererInformations() { void recupererInformations() {
for (Personnage p : personnages) { for (Personnage p : personnages) {
p.afficherInfos();
} }
} }
@ -59,7 +59,7 @@ public class SimulationJeu {
// 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);
String choix = s.nextLine(); String choix = s.nextLine();
if (choix == "s") { if (choix.equals("s")) {
continuer = false; continuer = false;
} }
} }

View File

@ -2,9 +2,6 @@ package utils;
public class Constants { public class Constants {
/** Define the duration for a football game (in ms) */
public static final int TIME_FOOTBALL_GAME = 100000; // 100 secondes
public static final int TABLE_HEIGHT = 10; public static final int TABLE_HEIGHT = 10;
public static final int TABLE_WIDTH = 10; public static final int TABLE_WIDTH = 10;

View File

@ -3,7 +3,7 @@ package utils;
import Cases.CaseAbstraite; import Cases.CaseAbstraite;
public class InterfaceConsole { public class InterfaceConsole {
CaseAbstraite[][] plateau; private final CaseAbstraite[][] plateau;
public InterfaceConsole(CaseAbstraite[][] cases) { public InterfaceConsole(CaseAbstraite[][] cases) {
plateau = cases; plateau = cases;