From b5188311b80b69a93faeabeb7a82d89869f3eee3 Mon Sep 17 00:00:00 2001 From: Edi Date: Mon, 5 Aug 2019 21:26:57 +0200 Subject: [PATCH] Merge origin/master --- src/java/Game.java | 100 +++--- src/java/Logic.java | 636 +++++++++++++++++++++++-------------- web/deps/opt/bootstrap.css | 1 + web/index.html | 515 +++++++++++++++--------------- 4 files changed, 715 insertions(+), 537 deletions(-) diff --git a/src/java/Game.java b/src/java/Game.java index b67f257..5e29339 100644 --- a/src/java/Game.java +++ b/src/java/Game.java @@ -65,6 +65,7 @@ public class Game { FileReader fr = new FileReader(file); BufferedReader br = new BufferedReader(fr); String jsonObject = br.readLine(); + log(jsonObject); ObjectMapper objectMapper = new ObjectMapper(); try { @@ -90,26 +91,24 @@ public class Game { log("Story: " + jsonStringStory); String[] st = objectMapper.readValue(jsonStringStory, String[].class); + log("Story einlesen fertig"); log("Item: " + jsonStringItem); Item[] it = objectMapper.readValue(jsonStringItem, Item[].class); + log("Items einlesen fertig"); log("Puzzle: " + jsonStringPuzzle); Puzzle[] pu = objectMapper.readValue(jsonStringPuzzle, Puzzle[].class); + log("Puzzles einlesen fertig"); log("Room: " + jsonStringRoom); Room[] ro = objectMapper.readValue(jsonStringRoom, Room[].class); - - rooms.addAll(Arrays.asList(ro)); log("Rooms einlesen fertig"); - items.addAll(Arrays.asList(it)); - log("Items einlesen fertig"); - puzzles.addAll(Arrays.asList(pu)); - log("Puzzles einlesen fertig"); - story.addAll(Arrays.asList(st)); - log("Story einlesen fertig"); + items.addAll(Arrays.asList(it)); + rooms.addAll(Arrays.asList(ro)); + puzzles.addAll(Arrays.asList(pu)); return jsonMap; @@ -126,16 +125,14 @@ public class Game { readJSON(); log("JSON einlesen beendet"); currentRoom = rooms.get(0); - log("Aktueller Raum: " + currentRoom.getName()); stoppFlag = false; inventory = new ArrayList<>(); - } public String prepareInput(String s) { - s = s.replace("ä", "ae"); - s = s.replace("ü", "ue"); - s = s.replace("ö", "oe"); + //s = s.replace("ä", "ae"); + //s = s.replace("ü", "ue"); + //s = s.replace("ö", "oe"); s = s.replace("ß", "ss"); s = s.toLowerCase(); return s; @@ -144,10 +141,21 @@ public class Game { public void play() throws Exception { log("play()"); log("Input: " + input); + log("Aktueller Raum " + currentRoom.getName()); + + for (int i = 0; i < currentRoom.puzzles.size(); i++) { + log("Puzzle: " + getPuzzleById(currentRoom.puzzles.get(i)).getName() + " ID: " + getPuzzleById(currentRoom.puzzles.get(i)).getId()); + } + + for (int i = 0; i < currentRoom.items.size(); i++) { + log("Item: " + getItemById(currentRoom.items.get(i)).getName() + " ID: " + getItemById(currentRoom.items.get(i)).getId()); + } input = prepareInput(input); + log("vor if"); if (input.contains(" ")) { + log("if"); inputArray = input.split(" "); for (String s : inputArray) { @@ -168,6 +176,7 @@ public class Game { intentName = input; log("intentName: " + intentName); } + log("vor switch"); switch (intentName) { //intent @@ -265,6 +274,7 @@ public class Game { if (stoppFlag == true) { endGame(); } + } public Item getItemByName(String s) throws Exception { @@ -289,27 +299,27 @@ public class Game { return null; } - public Room getRoomById(Integer i) { + public Room getRoomById(Integer i) throws Exception { for (int j = 0; j < rooms.size(); j++) { - if (rooms.get(j).getId() == i) { + if (Objects.equals(i, rooms.get(j).getId())) { return rooms.get(j); } } return null; } - public Item getItemById(Integer i) { + public Item getItemById(Integer i) throws Exception { for (int j = 0; j < items.size(); j++) { - if (items.get(j).getId() == i) { + if (Objects.equals(items.get(j).getId(), i)) { return items.get(j); } } return null; } - public Puzzle getPuzzleById(Integer i) { + public Puzzle getPuzzleById(Integer i) throws Exception { for (int j = 0; j < puzzles.size(); j++) { - if (puzzles.get(j).getId() == i) { + if (Objects.equals(puzzles.get(j).getId(), i)) { return puzzles.get(j); } } @@ -324,7 +334,7 @@ public class Game { //add reuqest header httpConn.setRequestMethod("POST"); httpConn.setRequestProperty("User-Agent", "Mozilla/5.0"); - httpConn.setRequestProperty("Accept-Language", "en-US,en;q=0.5"); + httpConn.setRequestProperty("Accept-Language", "de-DE,de;q=0.5"); // Send post request httpConn.setDoOutput(true); @@ -359,7 +369,7 @@ public class Game { } public void startGame() throws Exception { - log("startGame()" + "."); + log("startGame()"); say(story.get(0)); } @@ -378,7 +388,7 @@ public class Game { say(currentPuzzle.getDescription() + "."); return; } else { - say(""); + log("Else Reset"); }; } @@ -392,7 +402,7 @@ public class Game { say(currentItem.getDescription()); return; } else { - say(""); + log("Else Inspect"); }; } } @@ -412,7 +422,7 @@ public class Game { //add reuqest header httpConn.setRequestMethod("POST"); httpConn.setRequestProperty("User-Agent", "Mozilla/5.0"); - httpConn.setRequestProperty("Accept-Language", "en-US,en;q=0.5"); + httpConn.setRequestProperty("Accept-Language", "de-DE,de;q=0.5"); // Send post request httpConn.setDoOutput(true); @@ -449,26 +459,25 @@ public class Game { public void setRoom(Room nextRoom) throws Exception { log("setRoom(" + nextRoom.getName() + ")"); + log(nextRoom.getDescription()); + currentRoom = null; currentRoom = nextRoom; } public void examine() throws Exception { log("examine() : " + getInventory()); + String s = "In deinen Taschen befindet sich: "; if (getInventory().isEmpty()) { say("Deine Taschen sind leer."); - } else if (inventory.size() >= 1) { - say("In deinen Taschen befindet sich: "); - } + } else { - inventory.forEach((bag) -> { - try { - say(bag.getName() + "."); - } catch (Exception ex) { - Logger.getLogger(Game.class.getName()).log(Level.SEVERE, null, ex); + for (int i = 0; i < inventory.size(); i++) { + s = s + " " + inventory.get(i).getName(); } - }); + say(s); + } } public void open(Puzzle currentPuzzle) throws Exception { @@ -477,15 +486,12 @@ public class Game { if (currentPuzzle.isSolved()) // bereits gelöst { log("Bereits gelöst: " + currentPuzzle.isSolved()); - say(currentPuzzle.getName() + "ist bereits geöffnet."); if (currentPuzzle.getNextRoom() != null) // wenn es eine Tür ist die in den nächsten Raum führt { - say("Sie betreten den nächsten Raum."); + say("das Räsel ist bereits gelöst. Sie betreten den nächsten Raum."); log("nächster Raum: " + currentPuzzle.getNextRoom()); setRoom(getRoomById(currentPuzzle.getNextRoom())); // wechselt in den nächsten Raum - lookaround(); } - return; } log(" " + checkDependency(currentPuzzle)); if (!checkDependency(currentPuzzle)) // ist keine Abhängigkeit vorhanden oder aber die Abhängigkeit ist gelöst @@ -500,15 +506,17 @@ public class Game { if (checkGameOver(currentPuzzle)) // Wenn es das letzte Rätsel im Spiel war oder man vom Angreifer erwischt wurde { - log("Gameover"); stoppFlag = true; // Spiel wird nun beendet + log("Gameover"); + } if (currentPuzzle.getNextRoom() != null) // wenn es eine Tür ist die in den nächsten Raum führt { + log("Nächster Raum: " + getRoomById(currentPuzzle.getNextRoom()).getName()); + log(currentPuzzle.getNextRoom() + ""); setRoom(getRoomById(currentPuzzle.getNextRoom())); // wechselt in den nächsten Raum - log(currentRoom.getName() + " " + currentRoom.getDescription()); - lookaround(); + } } else // Item zum lösen fehlt { @@ -529,10 +537,14 @@ public class Game { return true; } - if (getPuzzleById(currentPuzzle.getDependency()) != null) { - if (getPuzzleById(currentPuzzle.getDependency()).isSolved()) { - return true; + try { + if (getPuzzleById(currentPuzzle.getDependency()) != null) { + if (getPuzzleById(currentPuzzle.getDependency()).isSolved()) { + return true; + } } + } catch (Exception ex) { + Logger.getLogger(Game.class.getName()).log(Level.SEVERE, null, ex); } return false; } @@ -561,7 +573,7 @@ public class Game { } } - public boolean checkPuzzleItemsInInventory(Puzzle currentPuzzle) { // checkt ob ob alle Items benötigten Items im Inventar sind oder ob Items gebraucht werden + public boolean checkPuzzleItemsInInventory(Puzzle currentPuzzle) throws Exception { // checkt ob ob alle Items benötigten Items im Inventar sind oder ob Items gebraucht werden if (currentPuzzle.getItems().isEmpty()) { // keine Items zum lösen notwendig return true; } else { // durchsucht ob alle nötigen Items im Inventar sind diff --git a/src/java/Logic.java b/src/java/Logic.java index 36c5a0c..04f3f6e 100644 --- a/src/java/Logic.java +++ b/src/java/Logic.java @@ -9,7 +9,9 @@ import java.io.FileNotFoundException; import java.io.IOException; import java.io.PrintWriter; import java.io.UnsupportedEncodingException; +import static java.nio.charset.StandardCharsets.UTF_8; import java.util.ArrayList; +import java.util.Arrays; import java.util.logging.Level; import java.util.logging.Logger; import javax.servlet.ServletException; @@ -25,246 +27,406 @@ import javax.servlet.http.HttpServletResponse; @WebServlet(urlPatterns = {"/IO"}) public class Logic extends HttpServlet { - private ArrayList games = new ArrayList<>(); +private ArrayList games = new ArrayList<>(); - /** - * Processes requests for both HTTP GET and POST - * methods. - * - * @param request servlet request - * @param response servlet response - * @throws ServletException if a servlet-specific error occurs - * @throws IOException if an I/O error occurs - */ - String context = ""; - String input = null; +/** + * Processes requests for both HTTP GET and POST + * methods. + * + * @param request servlet request + * @param response servlet response + * @throws ServletException if a servlet-specific error occurs + * @throws IOException if an I/O error occurs + */ +String context = ""; +String input = null; - @Override - public void init() { - try { - resetJSON(); - } catch (FileNotFoundException ex) { - Logger.getLogger(Logic.class.getName()).log(Level.SEVERE, null, ex); - } - } - public void writeJSON(String s) throws FileNotFoundException - { - PrintWriter writer = null; - try { - writer = new PrintWriter("game.JSON", "UTF-8"); - } catch (UnsupportedEncodingException ex) { - Logger.getLogger(Logic.class.getName()).log(Level.SEVERE, null, ex); - } - writer.println(s); - writer.close(); +@Override +public void init() { +try { +resetJSON(); +} catch (FileNotFoundException ex) { +Logger.getLogger(Logic.class.getName()).log(Level.SEVERE, null, ex); +} +} + +public void writeJSON(String s) throws Exception { +PrintWriter writer = new PrintWriter("game.JSON", "UTF-8"); +if (s != null) { +writer.println(s); +} +writer.close(); +} + +public void resetJSON() throws FileNotFoundException { + +File f = new File("game.JSON"); + +if (f.exists()) { +f.delete(); +} + + try { + writeJSON("{" + + "\"room\": [{" + + "\"id\": 0," + + "\"name\": \"Keller\"," + + "\"description\": \"Ein alter modriger Keller. Es schimmelt überall und stinkt bestialisch. Vor dir liegt eine Leiche, im Raum steht ein Stuhl und ein Tisch. Am anderen Ende des Raumes ist ein Duschvorhang an der Wand aufgespannt.\"," + + "\"items\": [" + + "5," + + "7," + + "4," + + "0," + + "2," + + "6," + + "10" + + "]," + + "\"puzzles\": [" + + "9," + + "4," + + "0" + + "]," + + "\"gameoverFlag\": false" + + "}," + + "{" + + "\"id\": 5," + + "\"name\": \"Flur\"," + + "\"description\": \"