diff --git a/src/java/Game.java b/src/java/Game.java index 2277c8a..2a2f3ef 100644 --- a/src/java/Game.java +++ b/src/java/Game.java @@ -8,7 +8,6 @@ import java.util.logging.Level; import java.util.logging.Logger; import java.net.HttpURLConnection; - public class Game { private static ArrayList rooms = new ArrayList(); @@ -21,9 +20,11 @@ public class Game { String intentName = null; String puzzleName = null; String input = null; - Room currentRoom=null; + Room currentRoom = null; + Room intro; Room keller; + Puzzle durchgang; Puzzle schloss; Puzzle door; Item schluessel; @@ -39,9 +40,16 @@ public class Game { public void setVariables() { //Room Object + + intro = new Room("Intro"); + intro.setDescription("Hier ist das Intro von Kidnappd"); + intro.puzzles.add(durchgang); + durchgang.setNextRoom(keller); + durchgang.setSolvedText("Hurra, du hast das Intro Level beendet"); + keller = new Room("Keller"); - keller.setDescription("Es ist totenstill, nichts und niemand bewegt sich. Man kann fast nichts erkennen au�er einem kleinen quadratischen Fenster �ber dir, durch dessen Gitterst�be der Mond sehr leicht scheint. " - + "Trotz der Schmerzen in deinen Knochen versuchst du aufzustehen und zu fliehen, doch pl�tzlich merkst du, dass du nicht kannst!"); + keller.setDescription("der kleine Mondschein, der zuvor den unbekannten Raum schwach beleuchtet hat, leuchtet viel gr��er und viel heller und du erkennst nun den gesamten Raum. Er ist klein und d�ster. " + + "überall h�ngen Spinnennetze und Staub sammelt sich am Betonboden. Du erkennst am anderen Ende des Raumes eine T�r"); //Puzzle Object schloss = new Puzzle("Schloss"); @@ -64,17 +72,18 @@ public class Game { schluessel.setDescription("Der Schl�ssel ist kalt und klein. Vielleicht hast du Gl�ck und er passt ins Schloss. Versuche es zu �ffnen!"); schloss.addItem(schluessel); keller.items.add(schluessel); - + door.setDependency(schloss); door.setDependencyText("Du musst erst das Schloss der Kette knacken um die Tür öffnen zu können"); - + //Item Object tonne = new Item("Muelltonne"); tonne.setHiddenFlag(false); tonne.setPortableFlag(false); tonne.setDescription("Eine schwarze M�lltonne. Sie stinkt f�rchterlich"); keller.items.add(tonne); - + + rooms.add(intro); rooms.add(keller); story.add("Dein ganzer K�rper schmerzt, du liegst auf Betonboden. Du f�ngst laut an zu husten und Staubklumpen fliegen aus deinem Mund. Du �ffnest langsam und nur schwer die Augen, " + "doch es ist fast gar nichts zu sehen. Die einzige Lichtquelle ist ein kleines Fenster �ber dir, durch die ein schwacher Mondschein f�llt. Es ist also Nachts... " @@ -84,16 +93,16 @@ public class Game { + "Das Mondlicht ist nur sehr schwach, um den Raum zu begutachten. Du gehst in die Knie und tastest mit deinem H�nden wild und in Panik am Betonboden. " + "Pl�tzlich st��t du auf einen kleinen Gegenstand, der sich tats�chlich anf�hlt wie ein Schl�ssel. Du solltest ihn aufheben"); - keller.setDescription("der kleine Mondschein, der zuvor den unbekannten Raum schwach beleuchtet hat, leuchtet viel gr��er und viel heller und du erkennst nun den gesamten Raum. Er ist klein und d�ster. " - + "überall h�ngen Spinnennetze und Staub sammelt sich am Betonboden. Du erkennst am anderen Ende des Raumes eine T�r"); - - currentRoom = keller; + currentRoom = intro; + stoppFlag = false; + inventory = new ArrayList(); + } public void play() { if (input.contains(" ")) { inputArray = input.split(" "); - + for (String s : inputArray) { if (currentRoom.getItem(s) != null) { itemName = s; @@ -145,9 +154,7 @@ public class Game { } else { say("das kann nicht geöffnet werden"); } - break; - } itemName = null; intentName = null; @@ -187,8 +194,8 @@ public class Game { } public void sendPost(String s) throws Exception { - s = s.replace(" ", "%20"); - String url = "https://medinf.efi.th-nuernberg.de/tomcat/WebAdventure/Logic"; + s = s.replace(" ", "%20"); + String url = "https://medinf.efi.th-nuernberg.de/tomcat/WebAdventure/IO"; URL obj = new URL(url); HttpURLConnection httpConn = (HttpURLConnection) obj.openConnection(); @@ -205,11 +212,6 @@ public class Game { wr.flush(); wr.close(); - //int responseCode = httpConn.getResponseCode(); - //System.out.println("\nSending 'POST' request to URL : " + url); - - //System.out.println("Response Code : " + responseCode); - BufferedReader in = new BufferedReader( new InputStreamReader(httpConn.getInputStream())); String inputLine; @@ -219,9 +221,6 @@ public class Game { response.append(inputLine); } in.close(); - - //print result - //System.out.println(response.toString()); } public void say(String s) { @@ -230,7 +229,6 @@ public class Game { } catch (Exception ex) { Logger.getLogger(Game.class.getName()).log(Level.SEVERE, null, ex); } - } public void setInput(String s) { @@ -243,72 +241,64 @@ public class Game { } public void examine() { - for (Item bag : inventory) { - say(bag.getName()); - } if (getInventory().isEmpty()) { say("Deine Taschen sind leer"); + } else if (inventory.size() >= 1) { + say("In deinen Taschen befindet sich: "); } + + inventory.forEach((bag) -> { + say(bag.getName()); + }); + } public void open(Puzzle currentPuzzle) { - boolean isSolved = currentPuzzle.isSolved(); // sagt ob das Rätsel gelöst ist oder nicht - ArrayList solveItems = currentPuzzle.getItems(); // Items die zum lösen des Rätsels benötigt werden - - if((currentPuzzle.hasDependency() && currentPuzzle.getDependency().isSolved()) || currentPuzzle.hasDependency() == false) - { - if (isSolved == false) { // ist ungelöst - if (solveItems.isEmpty()) // kein Item zum lösen benötigt + if (currentPuzzle.isSolved()) // bereits gelöst + { + say("ist bereits geöffnet"); + if (currentPuzzle.getNextRoom() != null) // wenn es eine Tür ist die in den nächsten Raum führt { - currentPuzzle.setSolved(true); // auf gelöst setzen - say(currentPuzzle.getSolvedText()); - - if (currentPuzzle.getNextRoom() != null) // falls es eine Tür ist wird in den nächsten Raum gewechselt - { - setRoom(currentPuzzle.getNextRoom()); - } - - if (currentRoom.getGameoverFlag() == true || currentPuzzle.getGameOverFlag() == true) { // letzter Raum/Puzzle - stoppFlag = true; - } - - } else // Items werden zum lösen benötigt - { - if (getInventory().containsAll(solveItems)) { // alle benötigten Items befinden sich in deinem Inventar - - inventory.removeAll(currentRoom.getItems()); // entfernt all Items aus dem Inventar die für das lösen benötigt werden - currentPuzzle.setSolved(true); // setze Rätsel auf gelöst - say(currentPuzzle.getSolvedText()); - - if (currentRoom.getGameoverFlag() == true || currentPuzzle.getGameOverFlag() == true) { // letzter Raum - stoppFlag = true; // Spielende - } - - if (currentPuzzle.getNextRoom() != null) { // falls es eine Tür ist wird in den nächsten Raum gewechselt - setRoom(currentPuzzle.getNextRoom()); - } - - } else { - say("dir fehlt noch etwas um das zu öffnen ..."); - } + setRoom(currentPuzzle.getNextRoom()); // wechselt in den nächsten Raum } - } else { // ist gelöst - say(" ist bereits geöffnet"); + return; } - }else + if (!currentPuzzle.hasDependency() || currentPuzzle.getDependency().isSolved()) // ist keine Abhängigkeit vorhanden oder aber die Abhängigkeit ist gelöst + { + if (currentPuzzle.getItems().isEmpty() || getInventory().containsAll(currentPuzzle.getItems())) // keine Items zum lösen notwendig oder alle Items zum lösen befinden sich im Inventar + { + currentPuzzle.setSolved(true); // auf gelöst setzen + say(currentPuzzle.getSolvedText()); // Lösungstext + + if (currentRoom.getGameoverFlag() || currentPuzzle.getGameOverFlag()) // Wenn es das letzte Rätsel im Spiel war oder man vom Angreifer erwischt wurde + { + stoppFlag = true; // Spiel wird nun beendet + } + + if (currentPuzzle.getNextRoom() != null) // wenn es eine Tür ist die in den nächsten Raum führt + { + setRoom(currentPuzzle.getNextRoom()); // wechselt in den nächsten Raum + } + } else // Item zum lösen fehlt + { + say("das geht leider nicht, da fehlt noch etwas"); + } + } + + if (!currentPuzzle.getDependency().isSolved()) // Abhängigkeit nicht gelöst { say(currentPuzzle.getDependencyText()); } } - public void take(Item i) { - if ((!inventory.contains(i)) && (i.isPortableFlag() == true)) { - inventory.add(i); - currentRoom.items.remove(i); - say(i.getName() + " wurde deiner Tasche hinzugefuegt"); - } else if (i.isPortableFlag() == false) { + public void take(Item currentItem) { + if ((!inventory.contains(currentItem)) && (currentItem.isPortableFlag() == true)) { + inventory.add(currentItem); + currentRoom.items.remove(currentItem); + say(currentItem.getName() + " wurde deiner Tasche hinzugefuegt"); + } else if (currentItem.isPortableFlag() == false) { say("Das Item kann nicht mitgenommen werden"); } else { say("Das Item befindet sich bereits in deiner Tasche!"); diff --git a/src/java/Logic.java b/src/java/Logic.java index 421c48c..76e46b6 100644 --- a/src/java/Logic.java +++ b/src/java/Logic.java @@ -19,7 +19,7 @@ import javax.servlet.http.HttpServletResponse; * * @author Edi */ -@WebServlet(urlPatterns = {"/Logic"}) +@WebServlet(urlPatterns = {"/IO"}) public class Logic extends HttpServlet { /** @@ -36,21 +36,21 @@ public class Logic extends HttpServlet { public void init() { g.setVariables(); - } protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, Exception { - response.setContentType("text/html;charset=UTF-8"); try (PrintWriter out = response.getWriter()) { /* TODO output your page here. You may use following sample code. */ - - out.println("

" + context + "

"); - if (request.getParameter("alexaText") != null) { - context = context + "

" + request.getParameter("alexaText"); + if(request.getParameter("alexaText") != null) { + context = request.getParameter("alexaText"); } + + out.println(context); + + String input = request.getParameter("intent"); if (request.getParameter("slot") != null) { @@ -78,7 +78,7 @@ public class Logic extends HttpServlet { @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - response.setIntHeader("Refresh", 5); + response.setIntHeader("Refresh", 2); try { processRequest(request, response); @@ -98,7 +98,7 @@ public class Logic extends HttpServlet { @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - response.setIntHeader("Refresh", 5); + response.setIntHeader("Refresh", 2); try { processRequest(request, response); } catch (Exception ex) { diff --git a/src/java/Puzzle.java b/src/java/Puzzle.java index b44967b..e3c8251 100644 --- a/src/java/Puzzle.java +++ b/src/java/Puzzle.java @@ -11,7 +11,7 @@ public class Puzzle private boolean gameOverFlag=false; private Room nextRoom = null; private String dependencyText = null; - private Puzzle dependency=null; + private Puzzle dependency= null; public Puzzle(String name) { @@ -20,8 +20,7 @@ public class Puzzle public boolean hasDependency() { - return dependency != null; - + return dependency != null; } public void setDependency(Puzzle p) diff --git a/web/index.html b/web/index.html index 53f682b..3773fa8 100644 --- a/web/index.html +++ b/web/index.html @@ -36,15 +36,15 @@ $("button").click(function(){ if ($(this).text()==="lookaroundintent") { - $.post("https://medinf.efi.th-nuernberg.de/tomcat/WebAdventure/Logic?intent=lookaroundintent"); + $.post("https://medinf.efi.th-nuernberg.de/tomcat/WebAdventure/IO?intent=lookaroundintent"); } else if ($(this).text()==="examineintent") { - $.post("https://medinf.efi.th-nuernberg.de/tomcat/WebAdventure/Logic?intent=examineintent"); + $.post("https://medinf.efi.th-nuernberg.de/tomcat/WebAdventure/IO?intent=examineintent"); } else { - $.post("https://medinf.efi.th-nuernberg.de/tomcat/WebAdventure/Logic?intent="+$(this).text()+"&slot="+replaceUml($("#itemList :selected").text())); + $.post("https://medinf.efi.th-nuernberg.de/tomcat/WebAdventure/IO?intent="+$(this).text()+"&slot="+replaceUml($("#itemList :selected").text())); } });