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

import java.util.logging.Logger; import java.util.logging.Logger;
import java.net.HttpURLConnection; import java.net.HttpURLConnection;
public class Game { public class Game {
private static ArrayList<Room> rooms = new ArrayList<Room>(); private static ArrayList<Room> rooms = new ArrayList<Room>();
String intentName = null; String intentName = null;
String puzzleName = null; String puzzleName = null;
String input = null; String input = null;
Room currentRoom=null;
Room currentRoom = null;
Room intro;
Room keller; Room keller;
Puzzle durchgang;
Puzzle schloss; Puzzle schloss;
Puzzle door; Puzzle door;
Item schluessel; Item schluessel;
public void setVariables() { public void setVariables() {
//Room Object //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 = 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 //Puzzle Object
schloss = new Puzzle("Schloss"); schloss = new Puzzle("Schloss");
schluessel.setDescription("Der Schl�ssel ist kalt und klein. Vielleicht hast du Gl�ck und er passt ins Schloss. Versuche es zu �ffnen!"); 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); schloss.addItem(schluessel);
keller.items.add(schluessel); keller.items.add(schluessel);
door.setDependency(schloss); door.setDependency(schloss);
door.setDependencyText("Du musst erst das Schloss der Kette knacken um die Tür öffnen zu können"); door.setDependencyText("Du musst erst das Schloss der Kette knacken um die Tür öffnen zu können");
//Item Object //Item Object
tonne = new Item("Muelltonne"); tonne = new Item("Muelltonne");
tonne.setHiddenFlag(false); tonne.setHiddenFlag(false);
tonne.setPortableFlag(false); tonne.setPortableFlag(false);
tonne.setDescription("Eine schwarze M�lltonne. Sie stinkt f�rchterlich"); tonne.setDescription("Eine schwarze M�lltonne. Sie stinkt f�rchterlich");
keller.items.add(tonne); keller.items.add(tonne);
rooms.add(intro);
rooms.add(keller); 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, " 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... " + "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... "
+ "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. " + "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"); + "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() { public void play() {
if (input.contains(" ")) { if (input.contains(" ")) {
inputArray = input.split(" "); inputArray = input.split(" ");
for (String s : inputArray) { for (String s : inputArray) {
if (currentRoom.getItem(s) != null) { if (currentRoom.getItem(s) != null) {
itemName = s; itemName = s;
} else { } else {
say("das kann nicht geöffnet werden"); say("das kann nicht geöffnet werden");
} }
break; break;
} }
itemName = null; itemName = null;
intentName = null; intentName = null;
} }
public void sendPost(String s) throws Exception { 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); URL obj = new URL(url);
HttpURLConnection httpConn = (HttpURLConnection) obj.openConnection(); HttpURLConnection httpConn = (HttpURLConnection) obj.openConnection();
wr.flush(); wr.flush();
wr.close(); 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( BufferedReader in = new BufferedReader(
new InputStreamReader(httpConn.getInputStream())); new InputStreamReader(httpConn.getInputStream()));
String inputLine; String inputLine;
response.append(inputLine); response.append(inputLine);
} }
in.close(); in.close();
//print result
//System.out.println(response.toString());
} }
public void say(String s) { public void say(String s) {
} catch (Exception ex) { } catch (Exception ex) {
Logger.getLogger(Game.class.getName()).log(Level.SEVERE, null, ex); Logger.getLogger(Game.class.getName()).log(Level.SEVERE, null, ex);
} }
} }
public void setInput(String s) { public void setInput(String s) {
} }
public void examine() { public void examine() {
for (Item bag : inventory) {
say(bag.getName());
}
if (getInventory().isEmpty()) { if (getInventory().isEmpty()) {
say("Deine Taschen sind leer"); 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) { 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()); 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"); say("Das Item kann nicht mitgenommen werden");
} else { } else {
say("Das Item befindet sich bereits in deiner Tasche!"); say("Das Item befindet sich bereits in deiner Tasche!");

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

* *
* @author Edi * @author Edi
*/ */
@WebServlet(urlPatterns = {"/Logic"})
@WebServlet(urlPatterns = {"/IO"})
public class Logic extends HttpServlet { public class Logic extends HttpServlet {
/** /**
public void init() { public void init() {
g.setVariables(); g.setVariables();
} }
protected void processRequest(HttpServletRequest request, HttpServletResponse response) protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException, Exception { throws ServletException, IOException, Exception {
response.setContentType("text/html;charset=UTF-8");
try (PrintWriter out = response.getWriter()) { try (PrintWriter out = response.getWriter()) {
/* TODO output your page here. You may use following sample code. */ /* 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"); String input = request.getParameter("intent");
if (request.getParameter("slot") != null) { if (request.getParameter("slot") != null) {
@Override @Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { throws ServletException, IOException {
response.setIntHeader("Refresh", 5);
response.setIntHeader("Refresh", 2);
try { try {
processRequest(request, response); processRequest(request, response);
@Override @Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { throws ServletException, IOException {
response.setIntHeader("Refresh", 5);
response.setIntHeader("Refresh", 2);
try { try {
processRequest(request, response); processRequest(request, response);
} catch (Exception ex) { } catch (Exception ex) {

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

private boolean gameOverFlag=false; private boolean gameOverFlag=false;
private Room nextRoom = null; private Room nextRoom = null;
private String dependencyText = null; private String dependencyText = null;
private Puzzle dependency=null;
private Puzzle dependency= null;
public Puzzle(String name) public Puzzle(String name)
{ {
public boolean hasDependency() public boolean hasDependency()
{ {
return dependency != null;
return dependency != null;
} }
public void setDependency(Puzzle p) public void setDependency(Puzzle p)

+ 3
- 3
web/index.html View File

$("button").click(function(){ $("button").click(function(){
if ($(this).text()==="lookaroundintent") 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") 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 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