diff --git a/src/VueControleur/VueControleurGyromite.java b/src/VueControleur/VueControleurGyromite.java index 57b63e5..434add6 100644 --- a/src/VueControleur/VueControleurGyromite.java +++ b/src/VueControleur/VueControleurGyromite.java @@ -122,6 +122,8 @@ public class VueControleurGyromite extends JFrame implements Observer { tabJLabel[x][y].setIcon(icoMur); else if (jeu.getGrille()[x][y][0] instanceof Colonne) tabJLabel[x][y].setIcon(icoColonne); + else if (jeu.getGrille()[x][y][0] instanceof IA) + tabJLabel[x][y].setIcon(icoHero); } else if (jeu.getGrille()[x][y][1] != null) { if (jeu.getGrille()[x][y][1] instanceof Corde) tabJLabel[x][y].setIcon(icoCorde); diff --git a/src/modele/calculs/Controle4Directions.java b/src/modele/calculs/Controle4Directions.java index 998e766..527076b 100644 --- a/src/modele/calculs/Controle4Directions.java +++ b/src/modele/calculs/Controle4Directions.java @@ -28,6 +28,7 @@ public class Controle4Directions extends RealisateurDeDeplacement { for (ElementDynamique e : lstEntitesDynamiques) { if (e instanceof Entite && directionCourante != null) switch (directionCourante) { + case gauche: case droite: if (e.avancerDirectionChoisie(directionCourante)) diff --git a/src/modele/calculs/IA.java b/src/modele/calculs/IA.java index 1dc5f5a..7963c53 100644 --- a/src/modele/calculs/IA.java +++ b/src/modele/calculs/IA.java @@ -1,5 +1,48 @@ package modele.calculs; +import modele.donnees.ElementDynamique; +import modele.donnees.ElementFond; +import modele.donnees.Entite; +import modele.donnees.Heros; +import java.util.Random; public class IA extends RealisateurDeDeplacement { - protected boolean realiserDeplacement() { return false; } // TODO + // private Direction directionCourante; + private static IA dep; + int genererInt(int borneInf, int borneSup){ + Random rand = new Random(); + int nb; + nb = borneInf+rand.nextInt(borneSup-borneInf); + return nb; + } + public static IA getInstance() { + if (dep == null) { + dep = new IA(); + } + return dep; + } + protected boolean realiserDeplacement() { + for (ElementDynamique e : lstEntitesDynamiques) + if (e instanceof modele.donnees.IA) { + modele.donnees.IA ia = (modele.donnees.IA) e; + // Direction d = Direction.droite; + //System.out.println(genererInt(1, 1000)); + + if (genererInt(1, 1000) > 500) { + Direction deplacement = Direction.gauche; + if (!ia.avancerDirectionChoisie(deplacement)) { + deplacement = Direction.droite; + ia.avancerDirectionChoisie(deplacement); + + } + } else { + Direction deplacement = Direction.droite; + if (!ia.avancerDirectionChoisie(deplacement)) { + deplacement = Direction.gauche; + ia.avancerDirectionChoisie(deplacement); + } + } + } + return false; + } + } diff --git a/src/modele/calculs/Jeu.java b/src/modele/calculs/Jeu.java index 4f0a690..15cca28 100644 --- a/src/modele/calculs/Jeu.java +++ b/src/modele/calculs/Jeu.java @@ -27,6 +27,7 @@ public class Jeu { private HashMap cmptDeplV = new HashMap(); private Heros hector; + private modele.donnees.IA renaud; private HashMap map = new HashMap(); // permet de récupérer la position d'une entité à partir de sa référence private HashMap mapInit = new HashMap(); // N'est utilisé qu'a l'initialisation. Permet d'initialiser la grille @@ -59,10 +60,17 @@ public class Jeu { hector = new Heros(this); addEntite(hector, 2, 1); + renaud = new modele.donnees.IA(this); + addEntite(renaud, 10, 8); + Gravite g = new Gravite(); g.addEntiteDynamique(hector); + g.addEntiteDynamique(renaud); ordonnanceur.add(g); + modele.calculs.IA.getInstance().addEntiteDynamique(renaud); + ordonnanceur.add(modele.calculs.IA.getInstance()); + Controle4Directions.getInstance().addEntiteDynamique(hector); ordonnanceur.add(Controle4Directions.getInstance());