Browse Source

Test

master
Edi 4 years ago
parent
commit
6afd445265
4 changed files with 73 additions and 84 deletions
  1. 59
    69
      src/java/Game.java
  2. 9
    9
      src/java/Logic.java
  3. 2
    3
      src/java/Puzzle.java
  4. 3
    3
      web/index.html

+ 59
- 69
src/java/Game.java View File

@@ -8,7 +8,6 @@ import java.util.logging.Level;
import java.util.logging.Logger;
import java.net.HttpURLConnection;
public class Game {
private static ArrayList<Room> rooms = new ArrayList<Room>();
@@ -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<Item>();
}
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<Item> 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());
setRoom(currentPuzzle.getNextRoom()); // wechselt in den nächsten Raum
}
return;
}
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 (currentPuzzle.getNextRoom() != null) // falls es eine Tür ist wird in den nächsten Raum gewechselt
if (currentRoom.getGameoverFlag() || currentPuzzle.getGameOverFlag()) // Wenn es das letzte Rätsel im Spiel war oder man vom Angreifer erwischt wurde
{
setRoom(currentPuzzle.getNextRoom());
stoppFlag = true; // Spiel wird nun beendet
}
if (currentRoom.getGameoverFlag() == true || currentPuzzle.getGameOverFlag() == true) { // letzter Raum/Puzzle
stoppFlag = true;
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 // Items werden zum lösen benötigt
} else // Item zum lösen fehlt
{
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 ...");
}
say("das geht leider nicht, da fehlt noch etwas");
}
} else { // ist gelöst
say(" ist bereits geöffnet");
}
}else
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!");

+ 9
- 9
src/java/Logic.java View File

@@ -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("<html><body><p>" + context + "</p></body></html>");
if (request.getParameter("alexaText") != null) {
context = context + "<br><br>" + 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) {

+ 2
- 3
src/java/Puzzle.java View File

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

+ 3
- 3
web/index.html View File

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


Loading…
Cancel
Save