diff --git a/conf.xml b/conf.xml
new file mode 100644
index 0000000..f963780
--- /dev/null
+++ b/conf.xml
@@ -0,0 +1,63 @@
+
+
+
+
+
+
+
+
+ 2
+ 2
+
+ true
+
+
+
+ 19
+ 19
+
+ true
+
+
+
+
+
+
+ 2
+ 2
+
+ false
+
+
+
+
+
+
+ 2
+ 2
+
+ res/save/
+ false
+
+
+
\ No newline at end of file
diff --git a/src/Configuration.java b/src/Configuration.java
new file mode 100644
index 0000000..4c49591
--- /dev/null
+++ b/src/Configuration.java
@@ -0,0 +1,7 @@
+import javax.xml.*;
+
+public class Configuration {
+ public Configuration() {
+
+ }
+}
diff --git a/src/Main.java b/src/Main.java
index 6c881d0..ccf7660 100644
--- a/src/Main.java
+++ b/src/Main.java
@@ -1,9 +1,9 @@
import java.io.File;
-import IA.QTable;
-import environnement.*;
import game.Terminal;
+import game.environnement.*;
import personnage.*;
+import personnage.IAQLearning.QTable;
import tests.IATest;
public class Main {
diff --git a/src/display/Display.java b/src/display/Display.java
index e0ceb2a..7e822df 100644
--- a/src/display/Display.java
+++ b/src/display/Display.java
@@ -1,8 +1,8 @@
package display;
-import environnement.Grid;
+import game.environnement.Grid;
import personnage.Personnage;
-import types.Item;
+import personnage.types.Item;
public class Display {
private static int round = 0;
diff --git a/src/game/Terminal.java b/src/game/Terminal.java
index 08d957f..839dde8 100644
--- a/src/game/Terminal.java
+++ b/src/game/Terminal.java
@@ -1,8 +1,8 @@
package game;
-import connexion.Channel;
import display.Display;
-import environnement.Map;
+import game.connexion.Channel;
+import game.environnement.Map;
import personnage.Personnage;
diff --git a/src/connexion/Channel.java b/src/game/connexion/Channel.java
similarity index 97%
rename from src/connexion/Channel.java
rename to src/game/connexion/Channel.java
index 02d0082..b563c4c 100644
--- a/src/connexion/Channel.java
+++ b/src/game/connexion/Channel.java
@@ -1,8 +1,8 @@
-package connexion;
+package game.connexion;
-import types.Mouvement;
-import environnement.*;
+import game.environnement.*;
import personnage.Personnage;
+import personnage.types.Mouvement;
public class Channel extends Personnage {
private Reseau reseau;
diff --git a/src/connexion/Reseau.java b/src/game/connexion/Reseau.java
similarity index 99%
rename from src/connexion/Reseau.java
rename to src/game/connexion/Reseau.java
index ca8bf80..03ec422 100644
--- a/src/connexion/Reseau.java
+++ b/src/game/connexion/Reseau.java
@@ -1,4 +1,4 @@
-package connexion;
+package game.connexion;
import java.io.IOException;
import java.io.InputStream;
diff --git a/src/environnement/Grid.java b/src/game/environnement/Grid.java
similarity index 95%
rename from src/environnement/Grid.java
rename to src/game/environnement/Grid.java
index 1c6e88d..320e6e3 100644
--- a/src/environnement/Grid.java
+++ b/src/game/environnement/Grid.java
@@ -1,7 +1,8 @@
-package environnement;
+package game.environnement;
import java.io.Serializable;
-import types.Effect;
+
+import personnage.types.Effect;
public interface Grid extends Serializable {
/**
diff --git a/src/environnement/Map.java b/src/game/environnement/Map.java
similarity index 99%
rename from src/environnement/Map.java
rename to src/game/environnement/Map.java
index a189ef3..d46d5a1 100644
--- a/src/environnement/Map.java
+++ b/src/game/environnement/Map.java
@@ -1,10 +1,10 @@
-package environnement;
+package game.environnement;
import java.util.ArrayList;
import java.util.Random;
import personnage.*;
-import types.*;
+import personnage.types.*;
/**
diff --git a/src/personnage/IAQLearning.java b/src/personnage/IA.java
similarity index 86%
rename from src/personnage/IAQLearning.java
rename to src/personnage/IA.java
index f5c8b77..bb4d5d7 100644
--- a/src/personnage/IAQLearning.java
+++ b/src/personnage/IA.java
@@ -2,17 +2,17 @@ package personnage;
import java.util.UUID;
-import IA.*;
-import connexion.Channel;
-import environnement.Grid;
-import environnement.Map;
-import types.Mouvement;
+import game.connexion.Channel;
+import game.environnement.Grid;
+import game.environnement.Map;
+import personnage.IAQLearning.*;
+import personnage.types.Mouvement;
/**
* La classe IAQLearning représente un joueur contrôlé par une Intelligence Artificielle
* utilisant l'algorithme de Q-learning pour prendre des décisions dans un jeu.
*/
-public class IAQLearning extends Personnage {
+public class IA extends Personnage {
private QLearning qLearning; // L'algorithme de Q-learning utilisé par l'IA.
/**
@@ -22,14 +22,14 @@ public class IAQLearning extends Personnage {
* @param gamma Le facteur de récompense future de l'algorithme de Q-learning.
* @param epsilon Le taux d'exploration de l'algorithme de Q-learning.
*/
- public IAQLearning(int[] coordinate, QTable qTable, double alpha, double gamma, double epsilon) {
+ public IA(int[] coordinate, QTable qTable, double alpha, double gamma, double epsilon, String name) {
super(coordinate); // Appel au constructeur de la classe mère.
// Initialisation de l'algorithme de Q-learning avec les paramètres spécifiés.
this.qLearning = new QLearning(qTable, alpha, gamma, epsilon);
// Attribution d'un nom unique à l'IA.
- this.name = "IA : " + UUID.randomUUID();
+ this.name = (name == null) ? "IA : " + UUID.randomUUID() : name;
}
/**
@@ -38,10 +38,10 @@ public class IAQLearning extends Personnage {
* @param coordinate
* @param qTable
*/
- public IAQLearning(int[] coordinate, QTable qTable) {
+ public IA(int[] coordinate, QTable qTable, String name) {
super(coordinate); // Appel au constructeur de la classe mère.
this.qLearning = new QLearning(qTable, 0.0, 0.0, 0.0);
- this.name = "IA : " + UUID.randomUUID();
+ this.name = (name == null) ? "IA : " + UUID.randomUUID() : name;
}
/**
diff --git a/src/IA/Actions.java b/src/personnage/IAQLearning/Actions.java
similarity index 97%
rename from src/IA/Actions.java
rename to src/personnage/IAQLearning/Actions.java
index 23d0124..c6ab389 100644
--- a/src/IA/Actions.java
+++ b/src/personnage/IAQLearning/Actions.java
@@ -1,9 +1,9 @@
-package IA;
+package personnage.IAQLearning;
import java.io.Serializable;
import java.util.Objects;
-import types.Mouvement;
+import personnage.types.Mouvement;
/**
* Cette classe permet de sauvegarder chaque action que l'IA
diff --git a/src/IA/QLearning.java b/src/personnage/IAQLearning/QLearning.java
similarity index 98%
rename from src/IA/QLearning.java
rename to src/personnage/IAQLearning/QLearning.java
index 8f0f224..d30baa0 100644
--- a/src/IA/QLearning.java
+++ b/src/personnage/IAQLearning/QLearning.java
@@ -1,6 +1,6 @@
-package IA;
+package personnage.IAQLearning;
-import types.Mouvement;
+import personnage.types.Mouvement;
/**
* Cette classe représente un algorithme d'apprentissage par renforcement
diff --git a/src/IA/QTable.java b/src/personnage/IAQLearning/QTable.java
similarity index 97%
rename from src/IA/QTable.java
rename to src/personnage/IAQLearning/QTable.java
index 575e7f2..9678d76 100644
--- a/src/IA/QTable.java
+++ b/src/personnage/IAQLearning/QTable.java
@@ -1,10 +1,10 @@
-package IA;
+package personnage.IAQLearning;
import java.io.*;
import java.util.HashMap;
import java.util.Map;
-import types.Mouvement;
+import personnage.types.Mouvement;
/**
* cette classe permet de sauvegarder chaque action que l'IA
diff --git a/src/IA/State.java b/src/personnage/IAQLearning/State.java
similarity index 97%
rename from src/IA/State.java
rename to src/personnage/IAQLearning/State.java
index 35bef72..19ba9a1 100644
--- a/src/IA/State.java
+++ b/src/personnage/IAQLearning/State.java
@@ -1,11 +1,11 @@
-package IA;
+package personnage.IAQLearning;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Objects;
-import environnement.Grid;
+import game.environnement.Grid;
/**
* La classe Etats est cruciale pour le Q-Learning car c'est elle
diff --git a/src/personnage/Personnage.java b/src/personnage/Personnage.java
index 6aba2cb..264d324 100644
--- a/src/personnage/Personnage.java
+++ b/src/personnage/Personnage.java
@@ -2,8 +2,8 @@ package personnage;
import java.util.ArrayList;
-import environnement.*;
-import types.*;
+import game.environnement.*;
+import personnage.types.*;
/**
* Cette classe est la primitive des classes
diff --git a/src/personnage/Player.java b/src/personnage/Player.java
index 99cf99a..b3322de 100644
--- a/src/personnage/Player.java
+++ b/src/personnage/Player.java
@@ -2,9 +2,9 @@ package personnage;
import java.util.Scanner;
-import connexion.Channel;
-import environnement.Map;
-import types.*;
+import game.connexion.Channel;
+import game.environnement.Map;
+import personnage.types.*;
/**
* la classe Player a comme classe parent {@link Personnage}
diff --git a/src/personnage/Robot.java b/src/personnage/Robot.java
index 8e4179c..69d7590 100644
--- a/src/personnage/Robot.java
+++ b/src/personnage/Robot.java
@@ -3,9 +3,9 @@ package personnage;
import java.util.ArrayList;
import java.util.Random;
-import types.*;
-import connexion.*;
-import environnement.*;
+import game.connexion.*;
+import game.environnement.*;
+import personnage.types.*;
public class Robot extends Personnage {
diff --git a/src/types/Effect.java b/src/personnage/types/Effect.java
similarity index 94%
rename from src/types/Effect.java
rename to src/personnage/types/Effect.java
index f384e06..670fc99 100644
--- a/src/types/Effect.java
+++ b/src/personnage/types/Effect.java
@@ -1,4 +1,4 @@
-package types;
+package personnage.types;
/**
* cette enumérateur {@link Effects} contient tout les effets
diff --git a/src/types/Item.java b/src/personnage/types/Item.java
similarity index 91%
rename from src/types/Item.java
rename to src/personnage/types/Item.java
index f20faa5..cbd9f89 100644
--- a/src/types/Item.java
+++ b/src/personnage/types/Item.java
@@ -1,6 +1,6 @@
-package types;
+package personnage.types;
-import environnement.Grid;
+import game.environnement.Grid;
/**
* cette enum représente différents types d'objets dans le jeu.
@@ -9,7 +9,7 @@ public enum Item implements Grid {
/**
* Mur impassable.
* Effet associé :
{@code types.Effect.IMPASSABLE}
- * utf : null car c'est un autre programme qui gère le mur.
+ * utf : null car c'est une autre fonction qui gère le mur.
*/
WALL(Effect.IMPASSABLE, null),
diff --git a/src/types/Mouvement.java b/src/personnage/types/Mouvement.java
similarity index 98%
rename from src/types/Mouvement.java
rename to src/personnage/types/Mouvement.java
index 2583f1e..83dc11c 100644
--- a/src/types/Mouvement.java
+++ b/src/personnage/types/Mouvement.java
@@ -1,4 +1,4 @@
-package types;
+package personnage.types;
/**
* Cet enumerateur prend en charge tout les mouvements possible
diff --git a/src/types/SnakePart.java b/src/personnage/types/SnakePart.java
similarity index 91%
rename from src/types/SnakePart.java
rename to src/personnage/types/SnakePart.java
index 6ee7305..15d2e14 100644
--- a/src/types/SnakePart.java
+++ b/src/personnage/types/SnakePart.java
@@ -1,6 +1,6 @@
-package types;
+package personnage.types;
-import environnement.Grid;
+import game.environnement.Grid;
public enum SnakePart implements Grid {
HEAD(Effect.IMPASSABLE, " \u25CF "),
diff --git a/src/tests/IATest.java b/src/tests/IATest.java
index f116e32..6e35995 100644
--- a/src/tests/IATest.java
+++ b/src/tests/IATest.java
@@ -3,14 +3,14 @@ package tests;
import java.io.File;
import java.util.Arrays;
-import IA.QTable;
-import IA.State;
import display.Display;
-import environnement.Grid;
-import environnement.Map;
-import personnage.IAQLearning;
+import game.environnement.Grid;
+import game.environnement.Map;
+import personnage.IA;
import personnage.Personnage;
-import types.Mouvement;
+import personnage.IAQLearning.QTable;
+import personnage.IAQLearning.State;
+import personnage.types.Mouvement;
public class IATest {
private final static String path1 = "res" + File.separator +
@@ -34,7 +34,7 @@ public class IATest {
for(int episode = 0; episode < totalEpisodes; episode++) {
QTable qTable = new QTable();
- IAQLearning iaqLearning = new IAQLearning(new int[] {2, 2}, qTable, alpha, gamma, epsilon);
+ IA iaqLearning = new IA(new int[] {2, 2}, qTable, alpha, gamma, epsilon, null);
Map map = new Map(12, 22);
qTable.getValues(path1);
@@ -93,19 +93,19 @@ public class IATest {
for (int episode = 0; episode < maxEpisode; episode++) {
Map map = new Map(12, 22);
- IAQLearning[] iaqLearnings = new IAQLearning[] {
- new IAQLearning(new int[] {2, 2}, qTable1, alpha, gamma, epsilon),
- new IAQLearning(new int[] {9, 19}, qTable2, alpha, gamma, epsilon),
+ IA[] iaqLearnings = new IA[] {
+ new IA(new int[] {2, 2}, qTable1, alpha, gamma, epsilon, null),
+ new IA(new int[] {9, 19}, qTable2, alpha, gamma, epsilon, null),
};
boolean isGameOver = false;
while(true) {
for (int personnages = 0; personnages < iaqLearnings.length; personnages++) {
- IAQLearning iaqLearning = iaqLearnings[personnages];
+ IA iaqLearning = iaqLearnings[personnages];
Map mapIA = new Map(map.getGrid()[0].length, map.getGrid().length);
- for (IAQLearning value : iaqLearnings) {
+ for (IA value : iaqLearnings) {
map.placePersonnages(value);
}
diff --git a/src/tests/MapTest.java b/src/tests/MapTest.java
index 12aa357..2fca9df 100644
--- a/src/tests/MapTest.java
+++ b/src/tests/MapTest.java
@@ -1,9 +1,9 @@
package tests;
import display.Display;
-import environnement.Map;
+import game.environnement.Map;
import personnage.Player;
-import types.Item;
+import personnage.types.Item;
public class MapTest {
public static void creationMap() {
diff --git a/src/tests/PersonnageTest.java b/src/tests/PersonnageTest.java
index 6756762..d1be4a7 100644
--- a/src/tests/PersonnageTest.java
+++ b/src/tests/PersonnageTest.java
@@ -2,8 +2,8 @@ package tests;
import personnage.Personnage;
import personnage.Player;
-import types.Effect;
-import types.Mouvement;
+import personnage.types.Effect;
+import personnage.types.Mouvement;
public class PersonnageTest {
public static void avancerPersonnage() {
diff --git a/src/tests/QTableTest.java b/src/tests/QTableTest.java
index a05751b..f6eb48d 100644
--- a/src/tests/QTableTest.java
+++ b/src/tests/QTableTest.java
@@ -4,10 +4,10 @@ import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
-import IA.QTable;
-import IA.State;
-import environnement.Grid;
-import types.Mouvement;
+import game.environnement.Grid;
+import personnage.IAQLearning.QTable;
+import personnage.IAQLearning.State;
+import personnage.types.Mouvement;
public class QTableTest {
private final static String path = "res" + File.separator +