ajout des fichiers necessaires

This commit is contained in:
2024-08-03 18:35:22 +02:00
parent 820036c61c
commit 6c8482e4d2
25 changed files with 138 additions and 67 deletions

7
src/Configuration.java Normal file
View File

@@ -0,0 +1,7 @@
import javax.xml.*;
public class Configuration {
public Configuration() {
}
}

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,4 +1,4 @@
package connexion;
package game.connexion;
import java.io.IOException;
import java.io.InputStream;

View File

@@ -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 {
/**

View File

@@ -1,10 +1,10 @@
package environnement;
package game.environnement;
import java.util.ArrayList;
import java.util.Random;
import personnage.*;
import types.*;
import personnage.types.*;
/**

View File

@@ -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;
}
/**

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,4 +1,4 @@
package types;
package personnage.types;
/**
* cette enumérateur {@link Effects} contient tout les effets

View File

@@ -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é : <pre>{@code types.Effect.IMPASSABLE}</pre>
* 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),

View File

@@ -1,4 +1,4 @@
package types;
package personnage.types;
/**
* Cet enumerateur prend en charge tout les mouvements possible

View File

@@ -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 "),

View File

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

View File

@@ -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() {

View File

@@ -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() {

View File

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