Test
This commit is contained in:
commit
a2f9f3404f
71
build.xml
Normal file
71
build.xml
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!-- You may freely edit this file. See commented blocks below for -->
|
||||||
|
<!-- some examples of how to customize the build. -->
|
||||||
|
<!-- (If you delete it and reopen the project it will be recreated.) -->
|
||||||
|
<!-- By default, only the Clean and Build commands use this build script. -->
|
||||||
|
<!-- Commands such as Run, Debug, and Test only use this build script if -->
|
||||||
|
<!-- the Compile on Save feature is turned off for the project. -->
|
||||||
|
<!-- You can turn off the Compile on Save (or Deploy on Save) setting -->
|
||||||
|
<!-- in the project's Project Properties dialog box.-->
|
||||||
|
<project name="WebAdventure" default="default" basedir=".">
|
||||||
|
<description>Builds, tests, and runs the project WebAdventure.</description>
|
||||||
|
<import file="nbproject/build-impl.xml"/>
|
||||||
|
<!--
|
||||||
|
|
||||||
|
There exist several targets which are by default empty and which can be
|
||||||
|
used for execution of your tasks. These targets are usually executed
|
||||||
|
before and after some main targets. They are:
|
||||||
|
|
||||||
|
-pre-init: called before initialization of project properties
|
||||||
|
-post-init: called after initialization of project properties
|
||||||
|
-pre-compile: called before javac compilation
|
||||||
|
-post-compile: called after javac compilation
|
||||||
|
-pre-compile-single: called before javac compilation of single file
|
||||||
|
-post-compile-single: called after javac compilation of single file
|
||||||
|
-pre-compile-test: called before javac compilation of JUnit tests
|
||||||
|
-post-compile-test: called after javac compilation of JUnit tests
|
||||||
|
-pre-compile-test-single: called before javac compilation of single JUnit test
|
||||||
|
-post-compile-test-single: called after javac compilation of single JUunit test
|
||||||
|
-pre-dist: called before archive building
|
||||||
|
-post-dist: called after archive building
|
||||||
|
-post-clean: called after cleaning build products
|
||||||
|
-pre-run-deploy: called before deploying
|
||||||
|
-post-run-deploy: called after deploying
|
||||||
|
|
||||||
|
Example of pluging an obfuscator after the compilation could look like
|
||||||
|
|
||||||
|
<target name="-post-compile">
|
||||||
|
<obfuscate>
|
||||||
|
<fileset dir="${build.classes.dir}"/>
|
||||||
|
</obfuscate>
|
||||||
|
</target>
|
||||||
|
|
||||||
|
For list of available properties check the imported
|
||||||
|
nbproject/build-impl.xml file.
|
||||||
|
|
||||||
|
|
||||||
|
Other way how to customize the build is by overriding existing main targets.
|
||||||
|
The target of interest are:
|
||||||
|
|
||||||
|
init-macrodef-javac: defines macro for javac compilation
|
||||||
|
init-macrodef-junit: defines macro for junit execution
|
||||||
|
init-macrodef-debug: defines macro for class debugging
|
||||||
|
do-dist: archive building
|
||||||
|
run: execution of project
|
||||||
|
javadoc-build: javadoc generation
|
||||||
|
|
||||||
|
Example of overriding the target for project execution could look like
|
||||||
|
|
||||||
|
<target name="run" depends="<PROJNAME>-impl.jar">
|
||||||
|
<exec dir="bin" executable="launcher.exe">
|
||||||
|
<arg file="${dist.jar}"/>
|
||||||
|
</exec>
|
||||||
|
</target>
|
||||||
|
|
||||||
|
Notice that overridden target depends on jar target and not only on
|
||||||
|
compile target as regular run target does. Again, for list of available
|
||||||
|
properties which you can use check the target you are overriding in
|
||||||
|
nbproject/build-impl.xml file.
|
||||||
|
|
||||||
|
-->
|
||||||
|
</project>
|
150
nbproject/ant-deploy.xml
Normal file
150
nbproject/ant-deploy.xml
Normal file
@ -0,0 +1,150 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!--
|
||||||
|
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
|
||||||
|
|
||||||
|
Copyright (c) 2008, 2016 Oracle and/or its affiliates. All rights reserved.
|
||||||
|
|
||||||
|
Oracle and Java are registered trademarks of Oracle and/or its affiliates.
|
||||||
|
Other names may be trademarks of their respective owners.
|
||||||
|
|
||||||
|
The contents of this file are subject to the terms of either the GNU
|
||||||
|
General Public License Version 2 only ("GPL") or the Common
|
||||||
|
Development and Distribution License("CDDL") (collectively, the
|
||||||
|
"License"). You may not use this file except in compliance with the
|
||||||
|
License. You can obtain a copy of the License at
|
||||||
|
http://www.netbeans.org/cddl-gplv2.html
|
||||||
|
or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
|
||||||
|
specific language governing permissions and limitations under the
|
||||||
|
License. When distributing the software, include this License Header
|
||||||
|
Notice in each file and include the License file at
|
||||||
|
nbbuild/licenses/CDDL-GPL-2-CP. Oracle designates this
|
||||||
|
particular file as subject to the "Classpath" exception as provided
|
||||||
|
by Oracle in the GPL Version 2 section of the License file that
|
||||||
|
accompanied this code. If applicable, add the following below the
|
||||||
|
License Header, with the fields enclosed by brackets [] replaced by
|
||||||
|
your own identifying information:
|
||||||
|
"Portions Copyrighted [year] [name of copyright owner]"
|
||||||
|
|
||||||
|
If you wish your version of this file to be governed by only the CDDL
|
||||||
|
or only the GPL Version 2, indicate your decision by adding
|
||||||
|
"[Contributor] elects to include this software in this distribution
|
||||||
|
under the [CDDL or GPL Version 2] license." If you do not indicate a
|
||||||
|
single choice of license, a recipient has the option to distribute
|
||||||
|
your version of this file under either the CDDL, the GPL Version 2 or
|
||||||
|
to extend the choice of license to its licensees as provided above.
|
||||||
|
However, if you add GPL Version 2 code and therefore, elected the GPL
|
||||||
|
Version 2 license, then the option applies only if the new code is
|
||||||
|
made subject to such option by the copyright holder.
|
||||||
|
|
||||||
|
Contributor(s):
|
||||||
|
-->
|
||||||
|
<project default="-deploy-ant" basedir=".">
|
||||||
|
<target name="-init-cl-deployment-env" if="deploy.ant.enabled">
|
||||||
|
<property file="${deploy.ant.properties.file}" />
|
||||||
|
<available file="${deploy.ant.docbase.dir}/WEB-INF/sun-web.xml" property="sun.web.present"/>
|
||||||
|
<available file="${deploy.ant.docbase.dir}/WEB-INF/glassfish-web.xml" property="glassfish.web.present"/>
|
||||||
|
<available file="${deploy.ant.resource.dir}" property="has.setup"/>
|
||||||
|
<tempfile prefix="gfv3" property="gfv3.password.file" destdir="${java.io.tmpdir}"/> <!-- do not forget to delete this! -->
|
||||||
|
<echo message="AS_ADMIN_PASSWORD=${gfv3.password}" file="${gfv3.password.file}"/>
|
||||||
|
</target>
|
||||||
|
|
||||||
|
<target name="-parse-sun-web" depends="-init-cl-deployment-env" if="sun.web.present">
|
||||||
|
<tempfile prefix="gfv3" property="temp.sun.web" destdir="${java.io.tmpdir}"/>
|
||||||
|
<copy file="${deploy.ant.docbase.dir}/WEB-INF/sun-web.xml" tofile="${temp.sun.web}"/>
|
||||||
|
<!-- The doctype triggers resolution which can fail -->
|
||||||
|
<replace file="${temp.sun.web}">
|
||||||
|
<replacetoken><![CDATA[<!DOCTYPE]]></replacetoken>
|
||||||
|
<replacevalue><![CDATA[<!-- <!DOCTYPE]]></replacevalue>
|
||||||
|
</replace>
|
||||||
|
<replace file="${temp.sun.web}">
|
||||||
|
<replacetoken><![CDATA[<sun-web-app]]></replacetoken>
|
||||||
|
<replacevalue><![CDATA[--> <sun-web-app]]></replacevalue>
|
||||||
|
</replace>
|
||||||
|
<xmlproperty file="${temp.sun.web}" validate="false">
|
||||||
|
</xmlproperty>
|
||||||
|
<delete file="${temp.sun.web}"/>
|
||||||
|
<condition property="deploy.ant.client.url" value="${gfv3.url}${sun-web-app.context-root}" else="${gfv3.url}/${ant.project.name}">
|
||||||
|
<isset property="sun-web-app.context-root"/>
|
||||||
|
</condition>
|
||||||
|
<condition property="deploy.context.root.argument" value="&contextroot=${sun-web-app.context-root}" else="/${ant.project.name}">
|
||||||
|
<isset property="sun-web-app.context-root"/>
|
||||||
|
</condition>
|
||||||
|
</target>
|
||||||
|
<target name="-parse-glassfish-web" depends="-init-cl-deployment-env" if="glassfish.web.present">
|
||||||
|
<tempfile prefix="gfv3" property="temp.gf.web" destdir="${java.io.tmpdir}"/>
|
||||||
|
<copy file="${deploy.ant.docbase.dir}/WEB-INF/glassfish-web.xml" tofile="${temp.gf.web}"/>
|
||||||
|
<!-- The doctype triggers resolution which can fail -->
|
||||||
|
<replace file="${temp.gf.web}">
|
||||||
|
<replacetoken><![CDATA[<!DOCTYPE]]></replacetoken>
|
||||||
|
<replacevalue><![CDATA[<!-- <!DOCTYPE]]></replacevalue>
|
||||||
|
</replace>
|
||||||
|
<replace file="${temp.gf.web}">
|
||||||
|
<replacetoken><![CDATA[<glassfish-web-app]]></replacetoken>
|
||||||
|
<replacevalue><![CDATA[--> <glassfish-web-app]]></replacevalue>
|
||||||
|
</replace>
|
||||||
|
<xmlproperty file="${temp.gf.web}" validate="false">
|
||||||
|
</xmlproperty>
|
||||||
|
<delete file="${temp.gf.web}"/>
|
||||||
|
<condition property="deploy.ant.client.url" value="${gfv3.url}${glassfish-web-app.context-root}" else="${gfv3.url}/${ant.project.name}">
|
||||||
|
<isset property="glassfish-web-app.context-root"/>
|
||||||
|
</condition>
|
||||||
|
<condition property="deploy.context.root.argument" value="&contextroot=${glassfish-web-app.context-root}" else="/${ant.project.name}">
|
||||||
|
<isset property="glassfish-web-app.context-root"/>
|
||||||
|
</condition>
|
||||||
|
</target>
|
||||||
|
<target name="-no-parse-sun-web" depends="-init-cl-deployment-env" unless="sun.web.present">
|
||||||
|
<property name="deploy.context.root.argument" value=""/>
|
||||||
|
</target>
|
||||||
|
<target name="-add-resources" depends="-init-cl-deployment-env" if="has.setup">
|
||||||
|
<tempfile prefix="gfv3" property="gfv3.resources.dir" destdir="${java.io.tmpdir}"/>
|
||||||
|
<mkdir dir="${gfv3.resources.dir}"/>
|
||||||
|
<mkdir dir="${gfv3.resources.dir}/META-INF"/>
|
||||||
|
<copy todir="${gfv3.resources.dir}/META-INF">
|
||||||
|
<fileset dir="${deploy.ant.resource.dir}"/>
|
||||||
|
</copy>
|
||||||
|
<jar destfile="${deploy.ant.archive}" update="true">
|
||||||
|
<fileset dir="${gfv3.resources.dir}"/>
|
||||||
|
</jar>
|
||||||
|
<delete dir="${gfv3.resources.dir}"/>
|
||||||
|
</target>
|
||||||
|
<target name="-deploy-ant" depends="-parse-glassfish-web, -parse-sun-web, -no-parse-sun-web,-add-resources" if="deploy.ant.enabled">
|
||||||
|
<antcall target="-deploy-without-pw"/>
|
||||||
|
<antcall target="-deploy-with-pw"/>
|
||||||
|
</target>
|
||||||
|
|
||||||
|
<target name="-deploy-without-pw" unless="gfv3.password">
|
||||||
|
<echo message="Deploying ${deploy.ant.archive}"/>
|
||||||
|
<tempfile prefix="gfv3" property="gfv3.results.file" destdir="${java.io.tmpdir}"/> <!-- do not forget to delete this! -->
|
||||||
|
<property name="full.deploy.ant.archive" location="${deploy.ant.archive}"/>
|
||||||
|
<get src="${gfv3.admin.url}/__asadmin/deploy?path=${full.deploy.ant.archive}${deploy.context.root.argument}&force=true&name=${ant.project.name}"
|
||||||
|
dest="${gfv3.results.file}"/>
|
||||||
|
<delete file="${gfv3.results.file}"/>
|
||||||
|
</target>
|
||||||
|
<target name="-deploy-with-pw" if="gfv3.password">
|
||||||
|
<echo message="Deploying ${deploy.ant.archive}"/>
|
||||||
|
<tempfile prefix="gfv3" property="gfv3.results.file" destdir="${java.io.tmpdir}"/> <!-- do not forget to delete this! -->
|
||||||
|
<property name="full.deploy.ant.archive" location="${deploy.ant.archive}"/>
|
||||||
|
<get username="${gfv3.username}" password="${gfv3.password}" src="${gfv3.admin.url}/__asadmin/deploy?path=${full.deploy.ant.archive}${deploy.context.root.argument}&force=true&name=${ant.project.name}"
|
||||||
|
dest="${gfv3.results.file}"/>
|
||||||
|
<delete file="${gfv3.results.file}"/>
|
||||||
|
</target>
|
||||||
|
<target name="-undeploy-ant" depends="-init-cl-deployment-env" if="deploy.ant.enabled">
|
||||||
|
<antcall target="-undeploy-without-pw"/>
|
||||||
|
<antcall target="-undeploy-with-pw"/>
|
||||||
|
</target>
|
||||||
|
|
||||||
|
<target name="-undeploy-without-pw" unless="gfv3.password">
|
||||||
|
<echo message="Undeploying ${deploy.ant.archive}"/>
|
||||||
|
<tempfile prefix="gfv3" property="gfv3.results.file" destdir="${java.io.tmpdir}"/> <!-- do not forget to delete this! -->
|
||||||
|
<get src="${gfv3.admin.url}/__asadmin/undeploy?name=${ant.project.name}"
|
||||||
|
dest="${gfv3.results.file}"/>
|
||||||
|
<delete file="${gfv3.results.file}"/>
|
||||||
|
</target>
|
||||||
|
<target name="-undeploy-with-pw" if="gfv3.password">
|
||||||
|
<echo message="Undeploying ${deploy.ant.archive}"/>
|
||||||
|
<tempfile prefix="gfv3" property="gfv3.results.file" destdir="${java.io.tmpdir}"/> <!-- do not forget to delete this! -->
|
||||||
|
<get username="${gfv3.username}" password="${gfv3.password}" src="${gfv3.admin.url}/__asadmin/undeploy?name=${ant.project.name}"
|
||||||
|
dest="${gfv3.results.file}"/>
|
||||||
|
<delete file="${gfv3.results.file}"/>
|
||||||
|
</target>
|
||||||
|
</project>
|
1444
nbproject/build-impl.xml
Normal file
1444
nbproject/build-impl.xml
Normal file
File diff suppressed because it is too large
Load Diff
8
nbproject/genfiles.properties
Normal file
8
nbproject/genfiles.properties
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
build.xml.data.CRC32=b50c735c
|
||||||
|
build.xml.script.CRC32=2d64e8d1
|
||||||
|
build.xml.stylesheet.CRC32=651128d4@1.77.1.1
|
||||||
|
# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
|
||||||
|
# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
|
||||||
|
nbproject/build-impl.xml.data.CRC32=b50c735c
|
||||||
|
nbproject/build-impl.xml.script.CRC32=74e621b3
|
||||||
|
nbproject/build-impl.xml.stylesheet.CRC32=99ea4b56@1.77.1.1
|
89
nbproject/project.properties
Normal file
89
nbproject/project.properties
Normal file
@ -0,0 +1,89 @@
|
|||||||
|
annotation.processing.enabled=true
|
||||||
|
annotation.processing.enabled.in.editor=true
|
||||||
|
annotation.processing.processors.list=
|
||||||
|
annotation.processing.run.all.processors=true
|
||||||
|
annotation.processing.source.output=${build.generated.sources.dir}/ap-source-output
|
||||||
|
build.classes.dir=${build.web.dir}/WEB-INF/classes
|
||||||
|
build.classes.excludes=**/*.java,**/*.form
|
||||||
|
build.dir=build
|
||||||
|
build.generated.dir=${build.dir}/generated
|
||||||
|
build.generated.sources.dir=${build.dir}/generated-sources
|
||||||
|
build.test.classes.dir=${build.dir}/test/classes
|
||||||
|
build.test.results.dir=${build.dir}/test/results
|
||||||
|
build.web.dir=${build.dir}/web
|
||||||
|
build.web.excludes=${build.classes.excludes}
|
||||||
|
client.urlPart=
|
||||||
|
compile.jsps=false
|
||||||
|
conf.dir=${source.root}/conf
|
||||||
|
debug.classpath=${build.classes.dir}:${javac.classpath}
|
||||||
|
debug.test.classpath=\
|
||||||
|
${run.test.classpath}
|
||||||
|
display.browser=true
|
||||||
|
# Files to be excluded from distribution war
|
||||||
|
dist.archive.excludes=
|
||||||
|
dist.dir=dist
|
||||||
|
dist.ear.war=${dist.dir}/${war.ear.name}
|
||||||
|
dist.javadoc.dir=${dist.dir}/javadoc
|
||||||
|
dist.war=${dist.dir}/${war.name}
|
||||||
|
endorsed.classpath=\
|
||||||
|
${libs.javaee-endorsed-api-7.0.classpath}
|
||||||
|
excludes=
|
||||||
|
includes=**
|
||||||
|
j2ee.compile.on.save=true
|
||||||
|
j2ee.copy.static.files.on.save=true
|
||||||
|
j2ee.deploy.on.save=true
|
||||||
|
j2ee.platform=1.7-web
|
||||||
|
j2ee.platform.classpath=${j2ee.server.home}/modules/endorsed/grizzly-npn-bootstrap.jar:${j2ee.server.home}/modules/endorsed/jakarta.annotation-api.jar:${j2ee.server.home}/modules/endorsed/jakarta.xml.bind-api.jar:${j2ee.server.home}/modules/endorsed/webservices-api-osgi.jar:${j2ee.server.home}/modules/bean-validator.jar:${j2ee.server.home}/modules/cdi-api.jar:${j2ee.server.home}/modules/javax.batch-api.jar:${j2ee.server.home}/modules/jaxb-osgi.jar:${j2ee.server.home}/modules/webservices-osgi.jar:${j2ee.server.home}/modules/weld-osgi-bundle.jar:${j2ee.server.middleware}/mq/lib/jaxm-api.jar
|
||||||
|
j2ee.platform.embeddableejb.classpath=${j2ee.server.home}/lib/embedded/glassfish-embedded-static-shell.jar
|
||||||
|
j2ee.platform.wscompile.classpath=${j2ee.server.home}/modules/webservices-osgi.jar
|
||||||
|
j2ee.platform.wsgen.classpath=${j2ee.server.home}/modules/webservices-osgi.jar:${j2ee.server.home}/modules/endorsed/webservices-api-osgi.jar:${j2ee.server.home}/modules/jaxb-osgi.jar
|
||||||
|
j2ee.platform.wsimport.classpath=${j2ee.server.home}/modules/webservices-osgi.jar:${j2ee.server.home}/modules/endorsed/webservices-api-osgi.jar:${j2ee.server.home}/modules/jaxb-osgi.jar
|
||||||
|
j2ee.platform.wsit.classpath=
|
||||||
|
j2ee.server.type=gfv3ee6
|
||||||
|
jar.compress=false
|
||||||
|
javac.classpath=\
|
||||||
|
${libs.javaee-web-api-7.0.classpath}
|
||||||
|
# Space-separated list of extra javac options
|
||||||
|
javac.compilerargs=
|
||||||
|
javac.debug=true
|
||||||
|
javac.deprecation=false
|
||||||
|
javac.processorpath=\
|
||||||
|
${javac.classpath}
|
||||||
|
javac.source=1.8
|
||||||
|
javac.target=1.8
|
||||||
|
javac.test.classpath=\
|
||||||
|
${javac.classpath}:\
|
||||||
|
${build.classes.dir}
|
||||||
|
javac.test.processorpath=\
|
||||||
|
${javac.test.classpath}
|
||||||
|
javadoc.additionalparam=
|
||||||
|
javadoc.author=false
|
||||||
|
javadoc.encoding=${source.encoding}
|
||||||
|
javadoc.noindex=false
|
||||||
|
javadoc.nonavbar=false
|
||||||
|
javadoc.notree=false
|
||||||
|
javadoc.preview=true
|
||||||
|
javadoc.private=false
|
||||||
|
javadoc.splitindex=true
|
||||||
|
javadoc.use=true
|
||||||
|
javadoc.version=false
|
||||||
|
javadoc.windowtitle=
|
||||||
|
lib.dir=${web.docbase.dir}/WEB-INF/lib
|
||||||
|
persistence.xml.dir=${conf.dir}
|
||||||
|
platform.active=default_platform
|
||||||
|
resource.dir=setup
|
||||||
|
run.test.classpath=\
|
||||||
|
${javac.test.classpath}:\
|
||||||
|
${build.test.classes.dir}
|
||||||
|
# Space-separated list of JVM arguments used when running a class with a main method or a unit test
|
||||||
|
# (you may also define separate properties like run-sys-prop.name=value instead of -Dname=value):
|
||||||
|
runmain.jvmargs=
|
||||||
|
source.encoding=UTF-8
|
||||||
|
source.root=src
|
||||||
|
src.dir=${source.root}/java
|
||||||
|
test.src.dir=test
|
||||||
|
war.content.additional=
|
||||||
|
war.ear.name=${war.name}
|
||||||
|
war.name=WebAdventure.war
|
||||||
|
web.docbase.dir=web
|
||||||
|
webinf.dir=web/WEB-INF
|
23
nbproject/project.xml
Normal file
23
nbproject/project.xml
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project xmlns="http://www.netbeans.org/ns/project/1">
|
||||||
|
<type>org.netbeans.modules.web.project</type>
|
||||||
|
<configuration>
|
||||||
|
<data xmlns="http://www.netbeans.org/ns/web-project/3">
|
||||||
|
<name>WebAdventure</name>
|
||||||
|
<minimum-ant-version>1.6.5</minimum-ant-version>
|
||||||
|
<web-module-libraries>
|
||||||
|
<library dirs="200">
|
||||||
|
<file>${libs.javaee-web-api-7.0.classpath}</file>
|
||||||
|
<path-in-war>WEB-INF/lib</path-in-war>
|
||||||
|
</library>
|
||||||
|
</web-module-libraries>
|
||||||
|
<web-module-additional-libraries/>
|
||||||
|
<source-roots>
|
||||||
|
<root id="src.dir"/>
|
||||||
|
</source-roots>
|
||||||
|
<test-roots>
|
||||||
|
<root id="test.src.dir"/>
|
||||||
|
</test-roots>
|
||||||
|
</data>
|
||||||
|
</configuration>
|
||||||
|
</project>
|
2
src/conf/MANIFEST.MF
Normal file
2
src/conf/MANIFEST.MF
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
Manifest-Version: 1.0
|
||||||
|
|
330
src/java/Game.java
Normal file
330
src/java/Game.java
Normal file
@ -0,0 +1,330 @@
|
|||||||
|
|
||||||
|
import java.io.BufferedReader;
|
||||||
|
import java.io.DataOutputStream;
|
||||||
|
import java.io.InputStreamReader;
|
||||||
|
import java.net.URL;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
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>();
|
||||||
|
private static ArrayList<Item> inventory = new ArrayList<Item>();
|
||||||
|
private static ArrayList<String> story = new ArrayList<String>();
|
||||||
|
private boolean stoppFlag = false;
|
||||||
|
|
||||||
|
String[] inputArray = null;
|
||||||
|
String itemName = null;
|
||||||
|
String intentName = null;
|
||||||
|
String puzzleName = null;
|
||||||
|
String input = null;
|
||||||
|
Room currentRoom=null;
|
||||||
|
|
||||||
|
Room keller;
|
||||||
|
Puzzle schloss;
|
||||||
|
Puzzle door;
|
||||||
|
Item schluessel;
|
||||||
|
Item tonne;
|
||||||
|
|
||||||
|
public Game() {
|
||||||
|
try {
|
||||||
|
startGame();
|
||||||
|
} catch (Exception ex) {
|
||||||
|
Logger.getLogger(Game.class.getName()).log(Level.SEVERE, null, ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setVariables() {
|
||||||
|
//Room Object
|
||||||
|
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!");
|
||||||
|
|
||||||
|
//Puzzle Object
|
||||||
|
schloss = new Puzzle("Schloss");
|
||||||
|
schloss.setDescription("Es ist ein altes Schloss aus Metall, dass eine Einkerbung f�r einen Schl�ssel hat");
|
||||||
|
schloss.setSolvedText("Ja, es hat funktioniert! Mit einem Knacksen geht das Schloss auf und du kannst dich von deiner Beinfessel befreien. ");
|
||||||
|
|
||||||
|
keller.puzzles.add(schloss);
|
||||||
|
|
||||||
|
//Ausgang
|
||||||
|
door = new Puzzle("Tuer");
|
||||||
|
door.setDescription("Ausgang aus dem Keller");
|
||||||
|
door.setGameOverFlag(true);
|
||||||
|
door.setSolvedText("Geschafft! Die Tuer ist offen. Das Intro ist nun beendet");
|
||||||
|
keller.puzzles.add(door);
|
||||||
|
|
||||||
|
//Item Object
|
||||||
|
schluessel = new Item("Schluessel");
|
||||||
|
schluessel.setHiddenFlag(false);
|
||||||
|
schluessel.setPortableFlag(true);
|
||||||
|
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(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... "
|
||||||
|
+ "Langsam versuchst du dich an die fast komplette Dunkelheit zu gew�hnen und erkennst, dass du dich in einem kleinen dir unbekannten Raum befindest. Dich packt die Angst! "
|
||||||
|
+ "Was ist passiert, wo bist du und wie bist du hier gelandet?"
|
||||||
|
+ "Du nimmst die Stahlkette in die Hand. Sie ist schwer und verrostet. Mit den H�nden tastest du dich voran bis an die Heizung, wo du ein Schloss an der Kette entdeckst."
|
||||||
|
+ "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;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void play() {
|
||||||
|
if (input.contains(" ")) {
|
||||||
|
inputArray = input.split(" ");
|
||||||
|
|
||||||
|
for (String s : inputArray) {
|
||||||
|
if (currentRoom.getItem(s) != null) {
|
||||||
|
itemName = s;
|
||||||
|
} else if (currentRoom.getPuzzle(s) != null) {
|
||||||
|
puzzleName = s;
|
||||||
|
} else {
|
||||||
|
intentName = s;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
intentName = input;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (intentName.toLowerCase()) {
|
||||||
|
//intent
|
||||||
|
case "lookaroundintent":
|
||||||
|
if (itemName == null && puzzleName == null) {
|
||||||
|
lookaround();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
//intent
|
||||||
|
case "inspectintent":
|
||||||
|
if (itemName != null) {
|
||||||
|
inspect(itemName);
|
||||||
|
} else if (puzzleName != null) {
|
||||||
|
inspect(puzzleName);
|
||||||
|
} else {
|
||||||
|
say("Das kann nicht untersucht werden");
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
//intent
|
||||||
|
case "examineintent":
|
||||||
|
if (itemName == null && puzzleName == null) {
|
||||||
|
examine();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
//intent
|
||||||
|
case "takeintent":
|
||||||
|
if (itemName != null) {
|
||||||
|
take(currentRoom.getItem(itemName));
|
||||||
|
} else {
|
||||||
|
say("das kann nicht mitgenommen werden");
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
//intent
|
||||||
|
case "openintent":
|
||||||
|
if (puzzleName != null) {
|
||||||
|
open(currentRoom.getPuzzle(puzzleName));
|
||||||
|
} else {
|
||||||
|
say("das kann nicht geöffnet werden");
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
}
|
||||||
|
itemName = null;
|
||||||
|
intentName = null;
|
||||||
|
puzzleName = null;
|
||||||
|
|
||||||
|
if (stoppFlag == true) {
|
||||||
|
endGame();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void lookaround() {
|
||||||
|
say(currentRoom.getDescription());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void startGame() {
|
||||||
|
for (int i = 0; i < story.size(); i++) {
|
||||||
|
say(story.get(i));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void inspect(String s) {
|
||||||
|
Item currentItem = currentRoom.getItem(s);
|
||||||
|
Puzzle currentPuzzle = currentRoom.getPuzzle(s);
|
||||||
|
|
||||||
|
if (currentPuzzle != null) {
|
||||||
|
say(currentPuzzle.getDescription());
|
||||||
|
|
||||||
|
} else if (currentItem != null) {
|
||||||
|
say(currentItem.getDescription());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void endGame() {
|
||||||
|
say("Glückwunsch das Spiel ist beendet!");
|
||||||
|
setVariables();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void sendPost(String s) throws Exception {
|
||||||
|
s = s.replace(" ", "%20");
|
||||||
|
String url = "https://medinf.efi.th-nuernberg.de/tomcat/WebAdventure/Logic";
|
||||||
|
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 = "alexaText=" + s;
|
||||||
|
wr.writeBytes(urlParameters);
|
||||||
|
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;
|
||||||
|
StringBuffer response = new StringBuffer();
|
||||||
|
|
||||||
|
while ((inputLine = in.readLine()) != null) {
|
||||||
|
response.append(inputLine);
|
||||||
|
}
|
||||||
|
in.close();
|
||||||
|
|
||||||
|
//print result
|
||||||
|
//System.out.println(response.toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void say(String s) {
|
||||||
|
try {
|
||||||
|
sendPost(s);
|
||||||
|
} catch (Exception ex) {
|
||||||
|
Logger.getLogger(Game.class.getName()).log(Level.SEVERE, null, ex);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setInput(String s) {
|
||||||
|
input = s;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRoom(Room nextRoom) {
|
||||||
|
currentRoom = nextRoom;
|
||||||
|
say(currentRoom.getDescription());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void examine() {
|
||||||
|
for (Item bag : inventory) {
|
||||||
|
say(bag.getName());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (getInventory().isEmpty()) {
|
||||||
|
say("Deine Taschen sind leer");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
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
|
||||||
|
{
|
||||||
|
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 ...");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else { // ist gelöst
|
||||||
|
say(" ist bereits geöffnet");
|
||||||
|
}
|
||||||
|
}else
|
||||||
|
{
|
||||||
|
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) {
|
||||||
|
say("Das Item kann nicht mitgenommen werden");
|
||||||
|
} else {
|
||||||
|
say("Das Item befindet sich bereits in deiner Tasche!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public ArrayList<Room> getRooms() {
|
||||||
|
return rooms;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ArrayList<Item> getInventory() {
|
||||||
|
return inventory;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ArrayList<String> getStory() {
|
||||||
|
return story;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
55
src/java/Item.java
Normal file
55
src/java/Item.java
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
|
||||||
|
public class Item
|
||||||
|
{
|
||||||
|
private int id;
|
||||||
|
private String name;
|
||||||
|
private boolean portableFlag;
|
||||||
|
private boolean hiddenFlag;
|
||||||
|
private String description;
|
||||||
|
public Item(String name)
|
||||||
|
{
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDescription()
|
||||||
|
{
|
||||||
|
return description;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDescription(String description)
|
||||||
|
{
|
||||||
|
this.description = description;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setId(int id) {
|
||||||
|
this.id = id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setName(String name) {
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isPortableFlag() {
|
||||||
|
return portableFlag;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPortableFlag(boolean portableFlag) {
|
||||||
|
this.portableFlag = portableFlag;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isHiddenFlag() {
|
||||||
|
return hiddenFlag;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setHiddenFlag(boolean hiddenFlag) {
|
||||||
|
this.hiddenFlag = hiddenFlag;
|
||||||
|
}
|
||||||
|
}
|
119
src/java/Logic.java
Normal file
119
src/java/Logic.java
Normal file
@ -0,0 +1,119 @@
|
|||||||
|
/*
|
||||||
|
* 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 = {"/Logic"})
|
||||||
|
public class Logic 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
|
||||||
|
*/
|
||||||
|
Game g = new Game();
|
||||||
|
String context = "";
|
||||||
|
|
||||||
|
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");
|
||||||
|
}
|
||||||
|
|
||||||
|
String input = request.getParameter("intent");
|
||||||
|
if (request.getParameter("slot") != null) {
|
||||||
|
input = input + " " + request.getParameter("slot");
|
||||||
|
}
|
||||||
|
|
||||||
|
if(input != null)
|
||||||
|
{
|
||||||
|
g.setInput(input);
|
||||||
|
g.play();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// <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", 5);
|
||||||
|
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", 5);
|
||||||
|
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>
|
||||||
|
|
||||||
|
}
|
120
src/java/Puzzle.java
Normal file
120
src/java/Puzzle.java
Normal file
@ -0,0 +1,120 @@
|
|||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
public class Puzzle
|
||||||
|
{
|
||||||
|
private int id;
|
||||||
|
private String name;
|
||||||
|
private ArrayList<Item> items = new ArrayList<Item>();
|
||||||
|
private String description="";
|
||||||
|
private boolean solved = false;
|
||||||
|
private String solvedText = "";
|
||||||
|
private boolean gameOverFlag=false;
|
||||||
|
private Room nextRoom = null;
|
||||||
|
private String dependencyText = null;
|
||||||
|
private Puzzle dependency=null;
|
||||||
|
|
||||||
|
public Puzzle(String name)
|
||||||
|
{
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean hasDependency()
|
||||||
|
{
|
||||||
|
return dependency != null;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDependency(Puzzle p)
|
||||||
|
{
|
||||||
|
dependency = p;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDependencyText(String s)
|
||||||
|
{
|
||||||
|
dependencyText = s;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Puzzle getDependency()
|
||||||
|
{
|
||||||
|
return dependency;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDependencyText()
|
||||||
|
{
|
||||||
|
return dependencyText;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Room getNextRoom()
|
||||||
|
{
|
||||||
|
return nextRoom;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setId(int id) {
|
||||||
|
this.id = id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addItem(Item i)
|
||||||
|
{
|
||||||
|
items.add(i);
|
||||||
|
}
|
||||||
|
|
||||||
|
public ArrayList<Item> getItems() {
|
||||||
|
return items;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setItems(ArrayList<Item> items) {
|
||||||
|
this.items = items;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setName(String name) {
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDescription() {
|
||||||
|
return description;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDescription(String description) {
|
||||||
|
this.description = description;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getSolvedText() {
|
||||||
|
return solvedText;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSolvedText(String solvedText) {
|
||||||
|
this.solvedText = solvedText;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isSolved() {
|
||||||
|
return solved;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSolved(boolean solved) {
|
||||||
|
this.solved = solved;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setGameOverFlag(boolean b) {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
gameOverFlag = b;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean getGameOverFlag() {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
return gameOverFlag;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setNextRoom(Room r)
|
||||||
|
{
|
||||||
|
nextRoom = r;
|
||||||
|
}
|
||||||
|
}
|
69
src/java/Room.java
Normal file
69
src/java/Room.java
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
|
||||||
|
public class Room
|
||||||
|
{
|
||||||
|
private int id;
|
||||||
|
private String name;
|
||||||
|
private String description;
|
||||||
|
private boolean gameoverFlag;
|
||||||
|
ArrayList<Item> items = new ArrayList<>();
|
||||||
|
ArrayList<Puzzle> puzzles = new ArrayList<>();
|
||||||
|
public Room(String name)
|
||||||
|
{
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Item getItem(String s)
|
||||||
|
{
|
||||||
|
for(Item i: items)
|
||||||
|
{
|
||||||
|
if(i.getName().equals(s))
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Puzzle getPuzzle(String s)
|
||||||
|
{
|
||||||
|
for(Puzzle p: puzzles)
|
||||||
|
{
|
||||||
|
if(p.getName().equals(s))
|
||||||
|
return p;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
public void setId(int id) {
|
||||||
|
this.id = id;
|
||||||
|
}
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
public void setName(String name) {
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
public String getDescription() {
|
||||||
|
return description;
|
||||||
|
}
|
||||||
|
public void setDescription(String description) {
|
||||||
|
this.description = description;
|
||||||
|
}
|
||||||
|
public boolean getGameoverFlag() {
|
||||||
|
return gameoverFlag;
|
||||||
|
}
|
||||||
|
public void setGameoverFlag(boolean gameOverFlag) {
|
||||||
|
gameoverFlag = gameOverFlag;
|
||||||
|
}
|
||||||
|
public ArrayList<Item> getItems() {
|
||||||
|
return items;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ArrayList<Puzzle> getPuzzles() {
|
||||||
|
return puzzles;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
66
web/index.html
Normal file
66
web/index.html
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Kidnappd Test</title>
|
||||||
|
<meta charset=utf-8>
|
||||||
|
<link rel="stylesheet" type="text/css" href="style.css">
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>Kidnapp'd</h1>
|
||||||
|
<div id=btns>
|
||||||
|
|
||||||
|
<div><button>inspectintent</button>
|
||||||
|
</div>
|
||||||
|
<div><button id=um>lookaroundintent</button>
|
||||||
|
</div>
|
||||||
|
<div><button>examineintent</button>
|
||||||
|
</div>
|
||||||
|
<div><button>takeintent</button>
|
||||||
|
</div>
|
||||||
|
<div><button>openintent</button>
|
||||||
|
</div>
|
||||||
|
<select id="itemList">
|
||||||
|
<option>Tür</option>
|
||||||
|
<option>Schloss</option>
|
||||||
|
<option>Schlüssel</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<div id="output">
|
||||||
|
<ol id="logList"></ol>
|
||||||
|
</div>
|
||||||
|
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
|
||||||
|
<script>
|
||||||
|
|
||||||
|
$("button").click(function(){
|
||||||
|
if ($(this).text()==="lookaroundintent")
|
||||||
|
{
|
||||||
|
$.post("https://medinf.efi.th-nuernberg.de/tomcat/WebAdventure/Logic?intent=lookaroundintent");
|
||||||
|
}
|
||||||
|
else if ($(this).text()==="examineintent")
|
||||||
|
{
|
||||||
|
$.post("https://medinf.efi.th-nuernberg.de/tomcat/WebAdventure/Logic?intent=examineintent");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$.post("https://medinf.efi.th-nuernberg.de/tomcat/WebAdventure/Logic?intent="+$(this).text()+"&slot="+replaceUml($("#itemList :selected").text()));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
function printOutput(data) {
|
||||||
|
$("#output").animate({opacity:1},1000)
|
||||||
|
$("#logList").append(("<li><span>" + data + "</span></li>"));
|
||||||
|
}
|
||||||
|
|
||||||
|
function replaceUml(value) {
|
||||||
|
value = value.replace(/ä/g, 'ae');
|
||||||
|
value = value.replace(/ö/g, 'oe');
|
||||||
|
value = value.replace(/ü/g, 'ue');
|
||||||
|
return value;
|
||||||
|
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
Loading…
x
Reference in New Issue
Block a user