Merge origin/master
This commit is contained in:
commit
d4db36c418
@ -28,7 +28,7 @@ public class Game {
|
|||||||
Puzzle schloss;
|
Puzzle schloss;
|
||||||
Puzzle door;
|
Puzzle door;
|
||||||
Item schluessel;
|
Item schluessel;
|
||||||
Item tonne;
|
Item stahlschluessel;
|
||||||
|
|
||||||
public Game() {
|
public Game() {
|
||||||
try {
|
try {
|
||||||
@ -80,11 +80,11 @@ public class Game {
|
|||||||
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");
|
stahlschluessel = new Item("Stahlschluessel");
|
||||||
tonne.setHiddenFlag(false);
|
stahlschluessel.setHiddenFlag(false);
|
||||||
tonne.setPortableFlag(false);
|
stahlschluessel.setPortableFlag(false);
|
||||||
tonne.setDescription("Eine schwarze M�lltonne. Sie stinkt f�rchterlich");
|
stahlschluessel.setDescription("Ein Stahlschlüssel");
|
||||||
keller.items.add(tonne);
|
intro.items.add(stahlschluessel);
|
||||||
|
|
||||||
rooms.add(intro);
|
rooms.add(intro);
|
||||||
rooms.add(keller);
|
rooms.add(keller);
|
||||||
@ -102,124 +102,178 @@ public class Game {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void play() {
|
public void play() throws Exception {
|
||||||
|
log("play()");
|
||||||
|
log("Input: " + input);
|
||||||
|
|
||||||
|
input = input.replace("ä", "ae");
|
||||||
|
input = input.replace("ü", "ue");
|
||||||
|
input = input.replace("ö", "oe");
|
||||||
|
input = input.replace("ß", "ss");
|
||||||
|
|
||||||
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 = currentRoom.getItem(s).getName();
|
||||||
|
log("itemName: " + itemName);
|
||||||
} else if (currentRoom.getPuzzle(s) != null) {
|
} else if (currentRoom.getPuzzle(s) != null) {
|
||||||
puzzleName = s;
|
puzzleName = currentRoom.getPuzzle(s).getName();
|
||||||
|
log("PuzzleName: " + puzzleName);
|
||||||
} else {
|
} else {
|
||||||
intentName = s;
|
intentName = s;
|
||||||
|
log("intentName: " + intentName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
intentName = input;
|
intentName = input;
|
||||||
|
log("intentName: " + intentName);
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (intentName.toLowerCase()) {
|
switch (intentName.toLowerCase()) {
|
||||||
//intent
|
//intent
|
||||||
case "lookaroundintent":
|
case "lookaroundintent":
|
||||||
|
log("Switch: lookAroundIntent");
|
||||||
if (itemName == null && puzzleName == null) {
|
if (itemName == null && puzzleName == null) {
|
||||||
lookaround();
|
lookaround();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
//intent
|
//intent
|
||||||
case "inspectintent":
|
case "inspectintent":
|
||||||
|
log("Switch: inspectintent");
|
||||||
if (itemName != null) {
|
if (itemName != null) {
|
||||||
inspect(itemName);
|
inspect(itemName);
|
||||||
} else if (puzzleName != null) {
|
} else if (puzzleName != null) {
|
||||||
inspect(puzzleName);
|
inspect(puzzleName);
|
||||||
} else {
|
|
||||||
say("Das kann nicht untersucht werden");
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
//intent
|
//intent
|
||||||
|
|
||||||
case "examineintent":
|
case "examineintent":
|
||||||
|
log("Switch: ExamineIntent");
|
||||||
if (itemName == null && puzzleName == null) {
|
if (itemName == null && puzzleName == null) {
|
||||||
examine();
|
examine();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
//intent
|
//intent
|
||||||
case "takeintent":
|
case "takeintent":
|
||||||
|
log("Switch: TakeIntent");
|
||||||
if (itemName != null) {
|
if (itemName != null) {
|
||||||
take(currentRoom.getItem(itemName));
|
take(currentRoom.getItem(itemName));
|
||||||
} else {
|
|
||||||
say("das kann nicht mitgenommen werden");
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
//intent
|
//intent
|
||||||
case "openintent":
|
case "openintent":
|
||||||
|
log("Switch: OpenIntent");
|
||||||
if (puzzleName != null) {
|
if (puzzleName != null) {
|
||||||
open(currentRoom.getPuzzle(puzzleName));
|
open(currentRoom.getPuzzle(puzzleName));
|
||||||
} else {
|
|
||||||
say("das kann nicht geöffnet werden");
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
//intent
|
//intent
|
||||||
case "resetintent":
|
case "resetintent":
|
||||||
{
|
log("Switch: ResetIntent");
|
||||||
if (itemName == null && puzzleName == null) {
|
if (itemName == null && puzzleName == null) {
|
||||||
say("Das Spiel wird nun neu gestartet");
|
|
||||||
resetGame();
|
resetGame();
|
||||||
}
|
}
|
||||||
}
|
break;
|
||||||
|
|
||||||
//intent
|
//intent
|
||||||
case "skipintent":
|
case "skipintent":
|
||||||
{
|
log("Switch: SkipIntent");
|
||||||
if (itemName == null && puzzleName == null) {
|
if (itemName == null && puzzleName == null) {
|
||||||
resetGame();
|
resetGame();
|
||||||
for(int i = 0; i < currentRoom.puzzles.size(); i++)
|
for (int i = 0; i < currentRoom.puzzles.size(); i++) {
|
||||||
{
|
if (currentRoom.puzzles.get(i).getNextRoom() != null) {
|
||||||
if(currentRoom.puzzles.get(i).getNextRoom() != null)
|
|
||||||
{
|
|
||||||
setRoom(currentRoom.puzzles.get(i).getNextRoom());
|
setRoom(currentRoom.puzzles.get(i).getNextRoom());
|
||||||
say(currentRoom.puzzles.get(i).getNextRoom().getDescription());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
itemName = null;
|
itemName = null;
|
||||||
intentName = null;
|
intentName = null;
|
||||||
puzzleName = null;
|
puzzleName = null;
|
||||||
|
|
||||||
|
log("stoppFlag: " + stoppFlag);
|
||||||
|
|
||||||
if (stoppFlag == true) {
|
if (stoppFlag == true) {
|
||||||
endGame();
|
endGame();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void lookaround() {
|
public void log(String s) throws Exception
|
||||||
|
{
|
||||||
|
String url = "https://medinf.efi.th-nuernberg.de/tomcat/WebAdventure/Log";
|
||||||
|
URL obj = new URL(url);
|
||||||
|
HttpURLConnection httpConn = (HttpURLConnection) obj.openConnection();
|
||||||
|
|
||||||
|
//add reuqest header
|
||||||
|
httpConn.setRequestMethod("POST");
|
||||||
|
httpConn.setRequestProperty("User-Agent", "Mozilla/5.0");
|
||||||
|
httpConn.setRequestProperty("Accept-Language", "en-US,en;q=0.5");
|
||||||
|
|
||||||
|
// Send post request
|
||||||
|
httpConn.setDoOutput(true);
|
||||||
|
DataOutputStream wr = new DataOutputStream(httpConn.getOutputStream());
|
||||||
|
String urlParameters = "log=" + s;
|
||||||
|
wr.writeBytes(urlParameters);
|
||||||
|
wr.flush();
|
||||||
|
wr.close();
|
||||||
|
|
||||||
|
BufferedReader in = new BufferedReader(
|
||||||
|
new InputStreamReader(httpConn.getInputStream()));
|
||||||
|
String inputLine;
|
||||||
|
StringBuffer response = new StringBuffer();
|
||||||
|
|
||||||
|
while ((inputLine = in.readLine()) != null) {
|
||||||
|
response.append(inputLine);
|
||||||
|
}
|
||||||
|
in.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void lookaround() throws Exception {
|
||||||
|
log("lookaround() ");
|
||||||
say(currentRoom.getDescription());
|
say(currentRoom.getDescription());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void startGame() {
|
public void startGame() throws Exception {
|
||||||
|
log("startGame() ");
|
||||||
for (int i = 0; i < story.size(); i++) {
|
for (int i = 0; i < story.size(); i++) {
|
||||||
say(story.get(i));
|
say(story.get(i));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void resetGame(){
|
public void resetGame() throws Exception {
|
||||||
|
log("resetGame() ");
|
||||||
startGame();
|
startGame();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void inspect(String s) {
|
public void inspect(String s) throws Exception {
|
||||||
Item currentItem = currentRoom.getItem(s);
|
log("inspect(" + s + ") ");
|
||||||
Puzzle currentPuzzle = currentRoom.getPuzzle(s);
|
Item currentItem=null;
|
||||||
|
if(currentRoom.getItem(s) != null)
|
||||||
if (currentPuzzle != null) {
|
{
|
||||||
say(currentPuzzle.getDescription());
|
currentItem= currentRoom.getItem(s);
|
||||||
|
log("currentItem: " + currentItem.getName());
|
||||||
} else if (currentItem != null) {
|
|
||||||
say(currentItem.getDescription());
|
say(currentItem.getDescription());
|
||||||
}
|
}
|
||||||
|
Puzzle currentPuzzle=null;
|
||||||
|
|
||||||
|
if(currentRoom.getPuzzle(s) != null)
|
||||||
|
{
|
||||||
|
currentPuzzle = currentRoom.getPuzzle(s);
|
||||||
|
log("currentPuzzle " + currentPuzzle.getName());
|
||||||
|
say(currentPuzzle.getDescription());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void endGame() {
|
public void endGame() throws Exception {
|
||||||
|
log("endGame() ");
|
||||||
say("Glückwunsch das Spiel ist beendet!");
|
say("Glückwunsch das Spiel ist beendet!");
|
||||||
setVariables();
|
setVariables();
|
||||||
}
|
}
|
||||||
@ -254,7 +308,8 @@ public class Game {
|
|||||||
in.close();
|
in.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void say(String s) {
|
public void say(String s) throws Exception {
|
||||||
|
log("say(" + s + ") ");
|
||||||
try {
|
try {
|
||||||
sendPost(s);
|
sendPost(s);
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
@ -262,16 +317,19 @@ public class Game {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setInput(String s) {
|
public void setInput(String s) throws Exception {
|
||||||
|
log("setInput(" + s + ") ");
|
||||||
input = s;
|
input = s;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setRoom(Room nextRoom) {
|
public void setRoom(Room nextRoom) throws Exception {
|
||||||
|
log("setRoom(" + nextRoom.getName() + ") " );
|
||||||
currentRoom = nextRoom;
|
currentRoom = nextRoom;
|
||||||
say(currentRoom.getDescription());
|
say(currentRoom.getDescription());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void examine() {
|
public void examine() throws Exception {
|
||||||
|
log("examine() : " + getInventory());
|
||||||
|
|
||||||
if (getInventory().isEmpty()) {
|
if (getInventory().isEmpty()) {
|
||||||
say("Deine Taschen sind leer");
|
say("Deine Taschen sind leer");
|
||||||
@ -280,12 +338,17 @@ public class Game {
|
|||||||
}
|
}
|
||||||
|
|
||||||
inventory.forEach((bag) -> {
|
inventory.forEach((bag) -> {
|
||||||
say(bag.getName());
|
try {
|
||||||
|
say(bag.getName());
|
||||||
|
} catch (Exception ex) {
|
||||||
|
Logger.getLogger(Game.class.getName()).log(Level.SEVERE, null, ex);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void open(Puzzle currentPuzzle) {
|
public void open(Puzzle currentPuzzle) throws Exception {
|
||||||
|
log("open(" + currentPuzzle.getName() + ") ");
|
||||||
if (currentPuzzle.isSolved()) // bereits gelöst
|
if (currentPuzzle.isSolved()) // bereits gelöst
|
||||||
{
|
{
|
||||||
say("ist bereits geöffnet");
|
say("ist bereits geöffnet");
|
||||||
@ -324,7 +387,8 @@ public class Game {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void take(Item currentItem) {
|
public void take(Item currentItem) throws Exception {
|
||||||
|
log("take(" + currentItem.getName() + ") ");
|
||||||
if ((!inventory.contains(currentItem)) && (currentItem.isPortableFlag() == true)) {
|
if ((!inventory.contains(currentItem)) && (currentItem.isPortableFlag() == true)) {
|
||||||
inventory.add(currentItem);
|
inventory.add(currentItem);
|
||||||
currentRoom.items.remove(currentItem);
|
currentRoom.items.remove(currentItem);
|
||||||
|
102
src/java/Log.java
Normal file
102
src/java/Log.java
Normal file
@ -0,0 +1,102 @@
|
|||||||
|
/*
|
||||||
|
* To change this license header, choose License Headers in Project Properties.
|
||||||
|
* To change this template file, choose Tools | Templates
|
||||||
|
* and open the template in the editor.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.PrintWriter;
|
||||||
|
import java.util.logging.Level;
|
||||||
|
import java.util.logging.Logger;
|
||||||
|
import javax.servlet.ServletException;
|
||||||
|
import javax.servlet.annotation.WebServlet;
|
||||||
|
import javax.servlet.http.HttpServlet;
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author Edi
|
||||||
|
*/
|
||||||
|
@WebServlet(urlPatterns = {"/Log"})
|
||||||
|
public class Log extends HttpServlet {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Processes requests for both HTTP <code>GET</code> and <code>POST</code>
|
||||||
|
* 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 = "";
|
||||||
|
public void init() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
|
||||||
|
throws ServletException, IOException, Exception {
|
||||||
|
|
||||||
|
try (PrintWriter out = response.getWriter()) {
|
||||||
|
/* TODO output your page here. You may use following sample code. */
|
||||||
|
if(request.getParameter("log") != null) {
|
||||||
|
context = context + "\n" + request.getParameter("log");
|
||||||
|
}
|
||||||
|
|
||||||
|
out.println(context);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
|
||||||
|
/**
|
||||||
|
* Handles the HTTP <code>GET</code> method.
|
||||||
|
*
|
||||||
|
* @param request servlet request
|
||||||
|
* @param response servlet response
|
||||||
|
* @throws ServletException if a servlet-specific error occurs
|
||||||
|
* @throws IOException if an I/O error occurs
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
protected void doGet(HttpServletRequest request, HttpServletResponse response)
|
||||||
|
throws ServletException, IOException {
|
||||||
|
response.setIntHeader("Refresh", 2);
|
||||||
|
try {
|
||||||
|
processRequest(request, response);
|
||||||
|
|
||||||
|
} catch (Exception ex) {
|
||||||
|
Logger.getLogger(Logic.class.getName()).log(Level.SEVERE, null, ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Handles the HTTP <code>POST</code> method.
|
||||||
|
*
|
||||||
|
* @param request servlet request
|
||||||
|
* @param response servlet response
|
||||||
|
* @throws ServletException if a servlet-specific error occurs
|
||||||
|
* @throws IOException if an I/O error occurs
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
protected void doPost(HttpServletRequest request, HttpServletResponse response)
|
||||||
|
throws ServletException, IOException {
|
||||||
|
response.setIntHeader("Refresh", 2);
|
||||||
|
try {
|
||||||
|
processRequest(request, response);
|
||||||
|
} catch (Exception ex) {
|
||||||
|
Logger.getLogger(Logic.class.getName()).log(Level.SEVERE, null, ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a short description of the servlet.
|
||||||
|
*
|
||||||
|
* @return a String containing servlet description
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public String getServletInfo() {
|
||||||
|
return "Short description";
|
||||||
|
}// </editor-fold>
|
||||||
|
|
||||||
|
}
|
@ -17,7 +17,7 @@ public class Room
|
|||||||
{
|
{
|
||||||
for(Item i: items)
|
for(Item i: items)
|
||||||
{
|
{
|
||||||
if(i.getName().equals(s))
|
if(i.getName().equalsIgnoreCase(s))
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
@ -27,7 +27,7 @@ public class Room
|
|||||||
{
|
{
|
||||||
for(Puzzle p: puzzles)
|
for(Puzzle p: puzzles)
|
||||||
{
|
{
|
||||||
if(p.getName().equals(s))
|
if(p.getName().equalsIgnoreCase(s))
|
||||||
return p;
|
return p;
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user