From 66d1009af814a4dbea9d065988fed38aac8bbd10 Mon Sep 17 00:00:00 2001 From: guezoloic Date: Fri, 24 May 2024 13:50:51 +0200 Subject: [PATCH] correction de probleme --- README.md | 3 ++- run.bat | 2 +- src/Main.java | 10 +++++++--- src/display/Display.java | 9 ++++++++- src/display/Wall.java | 41 +++++++++++++++++++++++++--------------- 5 files changed, 44 insertions(+), 21 deletions(-) diff --git a/README.md b/README.md index 0f69f96..505cc90 100644 --- a/README.md +++ b/README.md @@ -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 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) ## - Explications diff --git a/run.bat b/run.bat index f2eec0f..4c1c886 100644 --- a/run.bat +++ b/run.bat @@ -15,5 +15,5 @@ if %errror_size% gtr 0 ( del /Q %error_file% -pause > null +pause exit \ No newline at end of file diff --git a/src/Main.java b/src/Main.java index cfe9d28..f4f5ac1 100644 --- a/src/Main.java +++ b/src/Main.java @@ -1,3 +1,4 @@ +import display.Display; import environnements.*; import game.Terminal; import personnages.*; @@ -18,10 +19,13 @@ public class Main { new Player(new int[] {grid[0].length - 1, grid.length - 1}, "Luke Skywalker") }; - map.addObjects(Item.FRAISE, 3, 5); - map.addObjectsRandomize(new Item[] {Item.FRAISE, Item.WALL}, 3); + map.addObjects(Item.WALL, 19, 7); + 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 else { diff --git a/src/display/Display.java b/src/display/Display.java index f0c08c1..ebe7a5a 100644 --- a/src/display/Display.java +++ b/src/display/Display.java @@ -1,5 +1,7 @@ package display; +import java.util.Arrays; + import environnements.Grid; import personnages.Personnage; import types.Item; @@ -51,8 +53,13 @@ public class Display { (x < map[y].length - 1) ? map[y][x + 1] == Item.WALL : false, }; + // System.out.println(Arrays.toString(position)); + 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; + } } } diff --git a/src/display/Wall.java b/src/display/Wall.java index bf80e27..626a4a6 100644 --- a/src/display/Wall.java +++ b/src/display/Wall.java @@ -1,25 +1,29 @@ package display; -import java.util.Arrays; - public enum Wall { ALL("\u2550\u256C\u2550", new boolean[] {true, true, true, true}), AUCUN("\u2550\u256C\u2550", new boolean[] {false, false, false, false}), - HAUT_BAS("\u2551", new boolean[] {true, true, false, false}), - GAUCHE_DROITE("\u2550\u2550\u2550", new boolean[] {false, false, true, true}), - - HAUT_GAUCHE("\u255D ", new boolean[]{true, false, true, false}), - HAUT_DROITE("\u255A", new boolean[]{true, false, false, true}), - - BAS_GAUCHE("\u2557 ", new boolean[]{false, true, true, false}), - BAS_DROITE("\u2554", new boolean[] {false, true, false, true}), - - HAUT_BAS_DROITE("\u2560", new boolean[] {true, true, false, true}), - HAUT_BAS_GAUCHE("\u2563", new boolean[] {true, true, true, 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}), + + HAUT_GAUCHE("\u2550\u255D ", new boolean[]{true, false, true, false}), + HAUT_DROITE("\u255A\u2550", new boolean[]{true, false, false, true}), + + BAS_GAUCHE("\u2550\u2557 ", new boolean[]{false, true, true, false}), + BAS_DROITE("\u2554\u2550", new boolean[] {false, 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_GAUCHE_DROITE("\u2550\u2569\u2550", new boolean[] {true, false, true, true}), - BAS_GAUCHE_DROITE("\u2550\u2566\u2550", new boolean[] {false, true, true, true}); + BAS_GAUCHE_DROITE("\u2550\u2566\u2550", new boolean[] {false, true, true, true}); private final boolean[] POSITION; private final String ASCII; @@ -34,7 +38,14 @@ public enum Wall { } 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() {