correction de probleme

This commit is contained in:
2024-05-24 13:50:51 +02:00
parent 94a3fbb26c
commit 66d1009af8
5 changed files with 44 additions and 21 deletions

View File

@@ -38,8 +38,9 @@ Pour lancer le jeu en multijoueur avec Makefile (mot1 et mot2 sont des mots à c
- `Make channel=mot1 adversaire=mot2` : compile tout le programme et le lance en multijoueur. - `Make channel=mot1 adversaire=mot2` : compile tout le programme et le lance en multijoueur.
- `Make run channel=mot1 adversaire=mot2` : lance uniquement le programme en multijoueur. - `Make run channel=mot1 adversaire=mot2` : lance uniquement le programme en multijoueur.
Sur windows, vous avez une autre option que personnellement je vous encourage, c'est l'utilisation du `run.bat`. Ce programme va lancer Sur windows, vous avez une autre option que personnellement je vous encourage, c'est l'utilisation du `run.bat`. Ce programme va lancer le Makefile mais aussi le faite de mettre l'utf-8 sur la session. Si vous utilisez pas le `run.bat`, vous aurez possiblement certains problèmes avec certains caractères qui seront remplacés par des "?", pour lancer le programme run.bat (mot1 et mot2 sont des mots à changer en fonction du canal):
- `run.bat mot1 mot2` : il va uniquement lancer `Make channel=mot1 adversaire=mot2` et en même temps lancer `chcp 65001` qui va mettre l'utf-8.
# IA (Q-Learning) # IA (Q-Learning)
## - Explications ## - Explications

View File

@@ -15,5 +15,5 @@ if %errror_size% gtr 0 (
del /Q %error_file% del /Q %error_file%
pause > null pause
exit exit

View File

@@ -1,3 +1,4 @@
import display.Display;
import environnements.*; import environnements.*;
import game.Terminal; import game.Terminal;
import personnages.*; import personnages.*;
@@ -18,10 +19,13 @@ public class Main {
new Player(new int[] {grid[0].length - 1, grid.length - 1}, "Luke Skywalker") new Player(new int[] {grid[0].length - 1, grid.length - 1}, "Luke Skywalker")
}; };
map.addObjects(Item.FRAISE, 3, 5); map.addObjects(Item.WALL, 19, 7);
map.addObjectsRandomize(new Item[] {Item.FRAISE, Item.WALL}, 3); map.addObjects(Item.WALL, 19, 6);
map.placeObjects();
Display.printMap(map.addEdges());
Display.printMapName(grid);
new Terminal(map, personnages).run(); // new Terminal(map, personnages).run();
} }
// lancer en ligne // lancer en ligne
else { else {

View File

@@ -1,5 +1,7 @@
package display; package display;
import java.util.Arrays;
import environnements.Grid; import environnements.Grid;
import personnages.Personnage; import personnages.Personnage;
import types.Item; import types.Item;
@@ -51,8 +53,13 @@ public class Display {
(x < map[y].length - 1) ? map[y][x + 1] == Item.WALL : false, (x < map[y].length - 1) ? map[y][x + 1] == Item.WALL : false,
}; };
// System.out.println(Arrays.toString(position));
for(Wall value : Wall.values()) { for(Wall value : Wall.values()) {
if(value.isEqual(position)) map[y][x].updateStringCode(value.getAscii()); if(value.isEqual(position)) {
map[y][x].updateStringCode(value.getAscii());
break;
}
} }
} }

View File

@@ -1,21 +1,25 @@
package display; package display;
import java.util.Arrays;
public enum Wall { public enum Wall {
ALL("\u2550\u256C\u2550", new boolean[] {true, true, true, true}), ALL("\u2550\u256C\u2550", new boolean[] {true, true, true, true}),
AUCUN("\u2550\u256C\u2550", new boolean[] {false, false, false, false}), AUCUN("\u2550\u256C\u2550", new boolean[] {false, false, false, false}),
HAUT_BAS("\u2551", new boolean[] {true, true, false, false}), HAUT("\u2551 ", new boolean[] {true, false, false, false}),
BAS("\u2551 ", new boolean[] {false, true, false, false}),
GAUCHE("\u2550\u2550\u2550", new boolean[] {false, false, true, false}),
DROITE("\u2550\u2550\u2550", new boolean[] {false, false, false, true}),
HAUT_BAS("\u2551 ", new boolean[] {true, true, false, false}),
GAUCHE_DROITE("\u2550\u2550\u2550", new boolean[] {false, false, true, true}), GAUCHE_DROITE("\u2550\u2550\u2550", new boolean[] {false, false, true, true}),
HAUT_GAUCHE("\u255D ", new boolean[]{true, false, true, false}), HAUT_GAUCHE("\u2550\u255D ", new boolean[]{true, false, true, false}),
HAUT_DROITE("\u255A", new boolean[]{true, false, false, true}), HAUT_DROITE("\u255A\u2550", new boolean[]{true, false, false, true}),
BAS_GAUCHE("\u2557 ", new boolean[]{false, true, true, false}), BAS_GAUCHE("\u2550\u2557 ", new boolean[]{false, true, true, false}),
BAS_DROITE("\u2554", new boolean[] {false, true, false, true}), BAS_DROITE("\u2554\u2550", new boolean[] {false, true, false, true}),
HAUT_BAS_DROITE("\u2560", new boolean[] {true, true, false, true}), HAUT_BAS_DROITE("\u2560\u2550 ", new boolean[] {true, true, false, true}),
HAUT_BAS_GAUCHE("\u2563", new boolean[] {true, true, true, false}), HAUT_BAS_GAUCHE("\u2563", new boolean[] {true, true, true, false}),
HAUT_GAUCHE_DROITE("\u2550\u2569\u2550", new boolean[] {true, false, true, true}), HAUT_GAUCHE_DROITE("\u2550\u2569\u2550", new boolean[] {true, false, true, true}),
@@ -34,7 +38,14 @@ public enum Wall {
} }
public boolean isEqual(boolean[] position) { public boolean isEqual(boolean[] position) {
return Arrays.equals(this.POSITION, position); boolean[] positionAscii = this.getPosition();
for (int i = 0; i < position.length; i++) {
if (positionAscii[i] != position[i]) {
return false;
}
}
return true;
} }
public boolean[] getPosition() { public boolean[] getPosition() {