Commit 8ea7c8be authored by alexander.waehling's avatar alexander.waehling
Browse files

added the final form of the project

parent dd91802e
File added
File added
4
C1->B1,Red
B4->A4,Blue
A3->A2,Red
C3->B4,Blue
B2->A4,Red
C4->D3,Blue
A2->B2,Red
D2->B3,Blue
B2->A3,Red
D3->D2,Blue
B1->B2,Red
B4->C4,Blue
B1->C1,Red
B3->C2,Blue
C1->B1,Red
C2->D1,Blue
A3->A4,Red
D2->C2,Blue
A2->B2,Red
C4->D3,Blue
B1->C1,Red
C2->D2,Blue
B2->C1,Red
D1->C2,Blue
A4->A3,Red
D2->B4,Blue
B2->B3,Red
B4->B3,Blue
A4->A3,Red
B3->A4,Blue
A3->B3,Red
C2->D2,Blue
A3->B3,Red
A4->B3,Blue
C1->D1,Red
D3->D2,Blue
C1->D1,Red
B3->B2,Blue
D1->C1,Red
B2->C1,Blue
D1->D2,Red
C1->C2,Blue
D2->D1,Red
C2->D2,Blue
D1->C1,Red
D3->D2,Blue
C1->C2,Red
D2->D1,Blue
C2->C3,Red
D1->D2,Blue
C3->B4,Red
D2->D1,Blue
B4->A4,Red
D1->C1,Blue
A4->A3,Red
C1->B2,Blue
A3->A2,Red
B2->B1,Blue
A2->A3,Red
B1->A2,Blue
A3->A4,Red
A2->A3,Blue
A4->A3,Red
D2->C2,Blue
A3->A4,Red
C2->B2,Blue
A4->B4,Red
B2->B1,Blue
B4->C4,Red
B1->C1,Blue
C4->D3,Red
C1->D1,Blue
D3->D2,Red
D1->C1,Blue
D2->D1,Red
C1->D1,Blue
<img src="AoTLogo" width="620">
#<p align="center">APP-Projekt 2017</p>
#Gruppenmitglieder
- Alexander Wähling
- Anastasiia Kysliak
- Kai Kulhmann
- Niklas Müller
- Robin Hundt (Gruppenleiter)
##Tutor
Dominick Leppich
##Anleitung
Das Spiel kann folgendermaßen kompiliert und gestartet werden:
1. Starten eines Terminals **`strg + alt + t`** (standarmäßig unter Unity)
2. Wechseln in das Verzeichnis, welches das tar Archiv enthält. Nach dem Download gewöhnlich unter
`~/Downloads` zu finden.
3. Entpacken des tar Archivs:
**`tar xvf AgeOfTowers.tar`**
4. Wechseln in das neue `AgeOfTowers` Verzeichnis
5. Automatisches Übersetzen des Quelltextes, erzeugen der JavaDoc Dokumentation und Erzeugung der `.jar` Datei durch Aufruf des `ant` Programms
6. Starten des Programms ist in zwei Modi möglich, über Kommandozeilenparamter oder einen interaktiven Modus:
####Kommandozeilenparameter
- Einstellungen beginnen mit einem `-` und Schalter mit `--`
- `--help` zeigt die Hilfe des Spiels an mit kurzen Erklärungen zu allen möglichen Parametern
####Nichtoptionale Einstellungen für lokale Spiele:
- Bei einem lokalen Spiel müssen die folgenden Einstellungen gesetzt werden:
- Der Spielertyp des roten und blauen Spielers (zu Spielertypen mehr unter **Spielertypen**)
- **`-red`** {human, random, simple, adv1, adv2, remote}
- **`-blue`** {human, random, simple, adv1, adv2, remote}
- `-size {4,..,26}` die Größe des Spielfeldes (mögliche Größe zwischen 4 und 26)
Ein Beispielaufruf des Spieles mit einem menschlichen Spieler als **RED** und einer zufälligen KI als **BLUE** auf einem Feld der Größe 8 könnte so aussehen:
```java -jar AgeOfTowers.jar -red human -blue random -size 8```
**Anmerkung**: Das Spiel startet Standardmäßig mit grafischer Ausgabe. Wenn Textausgabe gewünscht ist, kann die `-output` Einstellung zu `text` gesetzt werden. Möchte man das Spiel also mit textueller Ausgabe starten, würde der Aufruf wie folgt aussehen:
```java -jar AgeOfTowers.jar -red human -blue random -size 8 -output text```
####Optionale Parameter (lokales Spiel):
- **`-delay <Zeit in ms>`** kann gesetzt werden um eine Verzögerung zwischen Zügen zu erzwingen. Besonders sinnvoll wenn zwei schnelle Computergegner miteinander spielen und man ihr Verhalten nachvollziehen möchte.
- **`-timeout <Anzahl an Zügen>`** kann gesetzt werden um Spiele nach einer gewissen Anzahl an Zügen abzubrechen
- `-timeout 200` würde dafür sorgen, dass das Spiel nach 200 **gesamten** Zügen abgebrochen wird
- **`-games <Zahl größer 1>`** startet den Turniermodus mit der angegebenen Anzahl an Spielen
- Während dem Turniermodus tauscht die Rolle der Spieler
- Am Ende des Turniermodus werden die Ergebnisse der einzelnen Spiele den Spielern wieder in ihrer Startposition zugeordnet
- Ist die Einstellung `-timeout` gesetzt, gilt diese pro im Turnier gespielten Spiel
- Am Ende des Turniers erhält man eine Statistik über die Anzahl der gespielten Spiele, die Anzahl der gewonnenen Spiele pro Spieler, wie oft sie auf welche Art gewonnen haben und wie viele Züge sie im Schnitt benötigt haben
- **`--statistic`** bewirkt die kontinuierliche Ausgabe der Turnierergebenisse
## Spielertypen
Die folgenden Spielertypen können entweder über `-offer <Spielertyp>` im Netzwerk angeboten werden (bis auf remote, siehe Abschnitt Netzwerkspiel) oder als lokaler Spieler durch bspw. `-red human` erstellt werden.
- ###human
- menschlicher Spieler Typ der es dem User ermöglicht das Spiel selbst über die textuelle oder graphische Ein-/Ausgabe zu spielen
- ###random
- - Computer Spieler der jeden seiner Züge zufällig aus allen seiner möglichen Züge zu diesem Zeitpunkt auswählt
- ###simple
- - Computer Spieler der seine Züge nach einer einfachen Strategie (siehe Seite 17 der Spielbeschreibung) bewertet und einen zufälligen Zug mit maximaler Bewertung auswählt
- ###adv1
- - Computer Spieler welcher seine Züge nach einer tendenziell einfacheren Bewertungsstrategie auswählt als der simple Player, durch eine bessere Gewichtung der verschiedenen Aktionen im Schnitt jedoch bessere Ergebnisse erziehlt
- ###adv2
- - Erweiterter Computer Spieler der seine Züge mit Hilfe des Monte Carlo Tree Search Algorithmus auswählt
- - Für diesen Spieler existieren eine Vielzahl an veränderbaren Parametern die genutzt werden können um seine Spielweise anzupassen (siehe Abschnitt **Monty Carlo Player**)
- ###remote
- - Ist einer der angegebenen Spielertypen beim Programmstart vom Typ `remote` so wird im Netzwerk nach einem Spieler gesucht mit dem das Spiel gespielt werden kann (siehe Abschnitt Netzwerkspiel->Spieler finden)
####Netzwerkspiel
Es gibt zwei Arten von Netzwerkspiel:
####1. Spieler anbieten:
- Möchte man einen Spieler im Netzwerk anbieten muss die Einstellung `-offer <Player type>` und `-name <Name des Netzwerkspielers>` gesetzt sein
- Möchte man einen Netzwerkspieler auf einem bestimmten Port anbieten, so kann dies über die Einstellung `-port <Port>` erreicht werden (Standardmäßig werden Spieler auf dem default Java RMI Port 1099 angeboten)
- Beim Anbieten eines Spielers im Netzwerk ist Standardmäßig die graphische Ausgabe aktiviert. Dies kann ebenfalls über die `-output {graphic, text, none}` Einstellung geändert werden
####2. Spieler finden
Möchte man einen im Netzwerk angebotenen Spieler finden, so muss mindestens für einen der beiden Spieler Einstellungen der Spielertyp `remote` sein (Er kann auch für beide `remote` sein).
Über die Einstellungen
`-host <hostname oder ip>`
`-port <port>` und
`-name <Name des Spielers>` kann ein im Netzwerk angebotener Spieler gefunden werden. Diese drei Parameter sind jedoch optional.
Wird kein Host Name angegeben wird automatisch auf dem Lokalhost nach einem Spieler gesucht. Beim Weglassen des Port Parameters wird der standard Java RMI Port 1099 genutzt. Lässt der Benutzer ebenfalls den Namens Parameter weg, so wird auf dem spezifizierten Host (bzw. im default Fall dem localhost) nach allen möglichen Spielern gesucht, deren Namen dem Spieler ausgegeben und er wird interaktiv nach dem Spieler gefragt gegen den er sich messen möchte.
Sucht man nach Spielern, so läuft im nachfolgenden Spiel die gesamte Spiellogik auf dem eigenen Rechner ab. Dies bedeutet auch, dass derjenige der einen oder mehrere Remote Spieler sucht, dafür verantwortlich ist die Spielfeldgröße, den Delay, oder die Turnierparameter festzulegen.
#### Aufgeben eines Spiels
Einem menschlichen Spieler ist es möglich das Spiel aufzugeben. In der graphischen Oberfläche geschieht dies über den Surrender Button in der oberen rechten Ecke des Fensters.
In der Text Ein-/Ausgabe wird das Aufgeben dadurch realisiert, dass entweder `surrender` oder ein leerer Zug eingeben wird. Im zweiten Fall wird der Benutzer aufgefordert das Aufgeben zu bestätigen um ungewünschtes Aufgeben zu vermeiden.
### Speichern und Laden eines Spiels
#### Speichern
Das Spiel bietet eine Speicher- und Lademechanik, die es ermöglicht, ein Spiel in eine Textdatei zu speichern.
Spielt man AgeOfTowers mit der Graphik-Ausgabe, so kann man einfach auf `Save and Exit` klicken. Dann öffnet sich
ein Dialog, in dem der Textdatei noch ein Name gegeben werden muss. Ist dies erfolgt, so wird dies mit `Save` bestätigt.
Nach einem abschließenden Zug wird das Spiel beendet.
In der Konsolenausgabe ist der Pfad zur Speicherdatei im `.aot`-Format zu lesen. Dieser führt in das Home-Verzeichnis des Users mit dem Unterordner `AOT_Saves`.
Dies ist auch wärend eines Bot-Spiels möglich.
In der Text Ein-/Ausgabe kann nur gespeichert, wenn ein menschlicher Spieler beteiligt ist. Dieser muss, wenn er am Zug ist statt eines normalen Zuges `save` eingeben. Nach einer Rückfrage des Programms muss wieder der Name der zu erstellenden Speicherdatei eingegeben werden. Enter bestätigt den Speichervorgang, beendet das Spiel und gibt wieder den Pfad zu Datei aus.
#### Laden
Die Lademechanik wird beim aufrufen der `.jar` -Datei benutzt. Man übergibt den Namen einer `.aot` - Datei hinter der Setting `-load`. Dabei ist zu beachten, dass nun keine Setting `-size` mehr gemacht werden muss, da die Größe des gespeicherten Boards geladen wird.
## Quick Reference
Parameter | Optionen | Beschreibung
------------------------|-----------------------------------------------------------|------------------
`-size` |Zahl von 4 bis einschließlich 26 |- Setzt die Feldgröße auf den spezifizierten Wert
| |
`-red` |Einer der Spielertypen beschrieben unter Spielertypen |- Setzt den roten Spieler auf den spezifizierten Typ
| |
`-blue` |SpielerTyp des blauen Spielers |- Setzt den blauen Spieler auf den spezifizierten Spieler Typ
| |
**Optional** | |
| |
`-delay` |Verzögerung in Millisekunden |- Zeit die zwischen den Zügen der Spieler vergehen soll
| |
`-output` |none, text, graphic |- Art der Ausgabe des Spiels
| |
`-timeout` |Zuganzahl |- Anzahl der maximalen Züge pro Spiel bevor dieses abgebrochen wird
| |- Kann für normale Spiele sowie für Turniere angegeben werden
`-games` |Anzahl (n > 1) an Spielen im Turnier |- Startet ein Turnier mit der angegebenen Anzahl an Spielen
| |
`--statistic` |Flag |- Kontinuierliche Anzeige des Turnierstatus während eines Turniers
| |
`-load` |Name der Datei, die geladen werden soll "Name.aot" |- Lädt die angegebene Save-File als Spielstand
| |
| |
**Remote** | |
| |
`-offer` |Angebotener Spieler Typ |- Bietet einen Spieler dieses Types im Netzwek an
| |
`-name` |Name des Netzwerkspielers |- Spezifiziert den Namen unter dem ein Netzwerkspieler angeboten werden soll
| |
`-port` |Gültiger Port |- Port auf dem entweder ein Netzwerkspieler angeboten oder gesucht werden soll
| |
`-host` |Host (Bsp. CIP-Rechner Adresse oder IP) |- Host auf dem nach einem Netzwerkspieler gesucht werden soll
| |
**Debug** | |
| |
`--debug` |Flag |- Wenn gesetzt werden alle LEVEL1 Debug Ausgaben ausgegeben
| |
`-dlevel` |Debug Level von 1 bis 7 (Zahl) |- Wenn gesetzt werden alle Debug Nachrichten die dem gesetzten Level oder niedriger ausgegeben
| |
`-dsource` |Ort der Debug Nachrichten: board, io, main, network, player|- Wenn gesetzt werden alle Debug Nachrichten aus dem spezifizierten Bereich ausgegeben
| |- Kann in Verbindung mit `-dlevel` genutzt werden um Debug aus einem Bereich mit einem spezifizierten Level oder niedriger zu erhalten
| |
**Monty Carlo Player** | |
| |
`-thinktime` |Zeit pro Zug in ms |- Setzt die Zeit die die erweiterte KI pro Runde verwenden wird um den bis dahin besten Zug zu berechnen
`--fair` |Flag |- Wenn gesetzt wird die KI immer so viel Zeit für die Berechnung ihres Zuges verwenden wie der Gegner zuvor gebraucht hat
| |
**Advanced AI Settings**| |
| |
`-pstrategy` |PlayOut Strategie: light (l), heavy (h), dynamic (d) |- PlayOut Strategie die der MCTS Algorithmus in der Simulationsphase verwendet
| |
`-tstrategy` |TreeSelection Strategie: max (m), robus (r) |- TreeSelection Strategie welche der MCTS Algorithmus verwendet um den bestmöglichen Zug auszuwählen
| |- Max ist der Zug mit der höchsten win / game ratio und robust der Zug mit den meisten simulierten Spielen
`-parallel` |Ungefähre maximale Anzahl an nebenläufigen Threads der KI |- Kann gesetzt werden, um der KI es zu ermöglichen eine höhere Anzahl an Threads zur Simulierung von Spielen zu verwenden
| |
`-bias` |Bias Faktor in der UCB1 Formel |- Kann gesetzt werden um den bias Faktor zur Berechnung der UCB1 Werte von Nodes im MCTS zu verändern (Erfahrungsgemäß sollten Werte zwischen 0,4 und 2,5 gewählt werden)
| |
......@@ -10,19 +10,17 @@
</delete>
<mkdir dir="${build.dir}"/>
</target>
<target name="build" description="Compile project" depends="init">
<javac destdir="${build.dir}" includeantruntime="false" debug="true">
<src path="${src.dir}"/>
<exclude name="**/package-info.java"/>
</javac>
</target>
<target name="doc" description="Create JavaDoc files" depends="build">
<delete includeemptydirs="true" quiet="true">
<fileset dir="${doc.dir}"/>
</delete>
<mkdir dir="${doc.dir}"/>
<javadoc
sourcepath="${src.dir}"
destdir="${doc.dir}"
......@@ -35,14 +33,12 @@
docencoding="UTF-8"
windowtitle="APP">
</javadoc>
</target>
<target name ="jar" description="Creates Jar-File" depends="build">
<jar destfile="${build.dir}/AgeOfTowers.jar" basedir="${build.dir}">
<target name ="jar" description="Creates Jar-File" depends="doc">
<jar destfile="AgeOfTowers.jar" basedir="${build.dir}">
<manifest>
<attribute name="Main-Class" value="towerwarspp.main.AgeOfTowers"/>
</manifest >
</jar >
</target >
</project>
\ No newline at end of file
</project>
......@@ -2,10 +2,10 @@
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_131) on Tue Jul 11 14:58:30 CEST 2017 -->
<!-- Generated by javadoc (1.8.0_131) on Mon Jul 17 12:51:57 CEST 2017 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>All Classes (APP)</title>
<meta name="date" content="2017-07-11">
<meta name="date" content="2017-07-17">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<script type="text/javascript" src="script.js"></script>
</head>
......@@ -21,41 +21,50 @@
<li><a href="towerwarspp/player/BasePlayer.html" title="class in towerwarspp.player" target="classFrame">BasePlayer</a></li>
<li><a href="towerwarspp/board/Board.html" title="class in towerwarspp.board" target="classFrame">Board</a></li>
<li><a href="towerwarspp/board/BViewer.html" title="class in towerwarspp.board" target="classFrame">BViewer</a></li>
<li><a href="towerwarspp/io/Center.html" title="class in towerwarspp.io" target="classFrame">Center</a></li>
<li><a href="towerwarspp/board/Change.html" title="class in towerwarspp.board" target="classFrame">Change</a></li>
<li><a href="towerwarspp/board/ChangeType.html" title="enum in towerwarspp.board" target="classFrame">ChangeType</a></li>
<li><a href="towerwarspp/io/Corner.html" title="class in towerwarspp.io" target="classFrame">Corner</a></li>
<li><a href="towerwarspp/util/debug/Debug.html" title="class in towerwarspp.util.debug" target="classFrame">Debug</a></li>
<li><a href="towerwarspp/util/debug/DebugLevel.html" title="enum in towerwarspp.util.debug" target="classFrame">DebugLevel</a></li>
<li><a href="towerwarspp/util/debug/DebugSource.html" title="enum in towerwarspp.util.debug" target="classFrame">DebugSource</a></li>
<li><a href="towerwarspp/board/Entity.html" title="class in towerwarspp.board" target="classFrame">Entity</a></li>
<li><a href="towerwarspp/board/Evaluator.html" title="class in towerwarspp.board" target="classFrame">Evaluator</a></li>
<li><a href="towerwarspp/main/game/Game.html" title="class in towerwarspp.main.game" target="classFrame">Game</a></li>
<li><a href="towerwarspp/io/GraphicIO.html" title="class in towerwarspp.io" target="classFrame">GraphicIO</a></li>
<li><a href="towerwarspp/board/Hexagon.html" title="class in towerwarspp.board" target="classFrame">Hexagon</a></li>
<li><a href="towerwarspp/io/Hexagon.html" title="class in towerwarspp.io" target="classFrame">Hexagon</a></li>
<li><a href="towerwarspp/io/HexagonGrid.html" title="class in towerwarspp.io" target="classFrame">HexagonGrid</a></li>
<li><a href="towerwarspp/player/HumanPlayer.html" title="class in towerwarspp.player" target="classFrame">HumanPlayer</a></li>
<li><a href="towerwarspp/io/IO.html" title="interface in towerwarspp.io" target="classFrame"><span class="interfaceName">IO</span></a></li>
<li><a href="towerwarspp/main/game/LoadParserException.html" title="class in towerwarspp.main.game" target="classFrame">LoadParserException</a></li>
<li><a href="towerwarspp/player/mcts/Mcts.html" title="class in towerwarspp.player.mcts" target="classFrame">Mcts</a></li>
<li><a href="towerwarspp/preset/Move.html" title="class in towerwarspp.preset" target="classFrame">Move</a></li>
<li><a href="towerwarspp/preset/MoveFormatException.html" title="class in towerwarspp.preset" target="classFrame">MoveFormatException</a></li>
<li><a href="towerwarspp/board/MoveResult.html" title="enum in towerwarspp.board" target="classFrame">MoveResult</a></li>
<li><a href="towerwarspp/board/MoveScore.html" title="class in towerwarspp.board" target="classFrame">MoveScore</a></li>
<li><a href="towerwarspp/player/NetPlayer.html" title="class in towerwarspp.player" target="classFrame">NetPlayer</a></li>
<li><a href="towerwarspp/player/mcts/Node.html" title="class in towerwarspp.player.mcts" target="classFrame">Node</a></li>
<li><a href="towerwarspp/player/mcts/OldNode.html" title="class in towerwarspp.player.mcts" target="classFrame">OldNode</a></li>
<li><a href="towerwarspp/main/OutputType.html" title="enum in towerwarspp.main" target="classFrame">OutputType</a></li>
<li><a href="towerwarspp/main/ParameterInput.html" title="class in towerwarspp.main" target="classFrame">ParameterInput</a></li>
<li><a href="towerwarspp/preset/Player.html" title="interface in towerwarspp.preset" target="classFrame"><span class="interfaceName">Player</span></a></li>
<li><a href="towerwarspp/preset/PlayerColor.html" title="enum in towerwarspp.preset" target="classFrame">PlayerColor</a></li>
<li><a href="towerwarspp/player/PlayerState.html" title="enum in towerwarspp.player" target="classFrame">PlayerState</a></li>
<li><a href="towerwarspp/preset/PlayerType.html" title="enum in towerwarspp.preset" target="classFrame">PlayerType</a></li>
<li><a href="towerwarspp/player/PlayStrategy.html" title="enum in towerwarspp.player" target="classFrame">PlayStrategy</a></li>
<li><a href="towerwarspp/preset/Position.html" title="class in towerwarspp.preset" target="classFrame">Position</a></li>
<li><a href="towerwarspp/preset/PositionFormatException.html" title="class in towerwarspp.preset" target="classFrame">PositionFormatException</a></li>
<li><a href="towerwarspp/network/Remote.html" title="class in towerwarspp.network" target="classFrame">Remote</a></li>
<li><a href="towerwarspp/preset/Requestable.html" title="interface in towerwarspp.preset" target="classFrame"><span class="interfaceName">Requestable</span></a></li>
<li><a href="towerwarspp/main/game/Result.html" title="class in towerwarspp.main.game" target="classFrame">Result</a></li>
<li><a href="towerwarspp/player/RndPlayer.html" title="class in towerwarspp.player" target="classFrame">RndPlayer</a></li>
<li><a href="towerwarspp/main/game/Save.html" title="class in towerwarspp.main.game" target="classFrame">Save</a></li>
<li><a href="towerwarspp/player/mcts/ScoredNode.html" title="class in towerwarspp.player.mcts" target="classFrame">ScoredNode</a></li>
<li><a href="towerwarspp/board/SimpleBoard.html" title="class in towerwarspp.board" target="classFrame">SimpleBoard</a></li>
<li><a href="towerwarspp/player/SimplePlayer.html" title="class in towerwarspp.player" target="classFrame">SimplePlayer</a></li>
<li><a href="towerwarspp/preset/Status.html" title="enum in towerwarspp.preset" target="classFrame">Status</a></li>
<li><a href="towerwarspp/player/mcts/Task.html" title="enum in towerwarspp.player.mcts" target="classFrame">Task</a></li>
<li><a href="towerwarspp/io/TextIO.html" title="class in towerwarspp.io" target="classFrame">TextIO</a></li>
<li><a href="towerwarspp/main/tournament/Tournament.html" title="class in towerwarspp.main.tournament" target="classFrame">Tournament</a></li>
<li><a href="towerwarspp/player/mcts/TreeSelectionStrategy.html" title="enum in towerwarspp.player.mcts" target="classFrame">TreeSelectionStrategy</a></li>
<li><a href="towerwarspp/main/tournament/TResult.html" title="class in towerwarspp.main.tournament" target="classFrame">TResult</a></li>
<li><a href="towerwarspp/main/tournament/TSave.html" title="class in towerwarspp.main.tournament" target="classFrame">TSave</a></li>
<li><a href="towerwarspp/player/mcts/UpdateTree.html" title="class in towerwarspp.player.mcts" target="classFrame">UpdateTree</a></li>
<li><a href="towerwarspp/io/View.html" title="interface in towerwarspp.io" target="classFrame"><span class="interfaceName">View</span></a></li>
<li><a href="towerwarspp/preset/Viewable.html" title="interface in towerwarspp.preset" target="classFrame"><span class="interfaceName">Viewable</span></a></li>
<li><a href="towerwarspp/preset/Viewer.html" title="interface in towerwarspp.preset" target="classFrame"><span class="interfaceName">Viewer</span></a></li>
......
......@@ -2,10 +2,10 @@
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_131) on Tue Jul 11 14:58:30 CEST 2017 -->
<!-- Generated by javadoc (1.8.0_131) on Mon Jul 17 12:51:57 CEST 2017 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>All Classes (APP)</title>
<meta name="date" content="2017-07-11">
<meta name="date" content="2017-07-17">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<script type="text/javascript" src="script.js"></script>
</head>
......@@ -21,41 +21,50 @@
<li><a href="towerwarspp/player/BasePlayer.html" title="class in towerwarspp.player">BasePlayer</a></li>
<li><a href="towerwarspp/board/Board.html" title="class in towerwarspp.board">Board</a></li>
<li><a href="towerwarspp/board/BViewer.html" title="class in towerwarspp.board">BViewer</a></li>
<li><a href="towerwarspp/io/Center.html" title="class in towerwarspp.io">Center</a></li>
<li><a href="towerwarspp/board/Change.html" title="class in towerwarspp.board">Change</a></li>
<li><a href="towerwarspp/board/ChangeType.html" title="enum in towerwarspp.board">ChangeType</a></li>
<li><a href="towerwarspp/io/Corner.html" title="class in towerwarspp.io">Corner</a></li>
<li><a href="towerwarspp/util/debug/Debug.html" title="class in towerwarspp.util.debug">Debug</a></li>
<li><a href="towerwarspp/util/debug/DebugLevel.html" title="enum in towerwarspp.util.debug">DebugLevel</a></li>
<li><a href="towerwarspp/util/debug/DebugSource.html" title="enum in towerwarspp.util.debug">DebugSource</a></li>
<li><a href="towerwarspp/board/Entity.html" title="class in towerwarspp.board">Entity</a></li>
<li><a href="towerwarspp/board/Evaluator.html" title="class in towerwarspp.board">Evaluator</a></li>
<li><a href="towerwarspp/main/game/Game.html" title="class in towerwarspp.main.game">Game</a></li>
<li><a href="towerwarspp/io/GraphicIO.html" title="class in towerwarspp.io">GraphicIO</a></li>
<li><a href="towerwarspp/board/Hexagon.html" title="class in towerwarspp.board">Hexagon</a></li>
<li><a href="towerwarspp/io/Hexagon.html" title="class in towerwarspp.io">Hexagon</a></li>
<li><a href="towerwarspp/io/HexagonGrid.html" title="class in towerwarspp.io">HexagonGrid</a></li>
<li><a href="towerwarspp/player/HumanPlayer.html" title="class in towerwarspp.player">HumanPlayer</a></li>
<li><a href="towerwarspp/io/IO.html" title="interface in towerwarspp.io"><span class="interfaceName">IO</span></a></li>
<li><a href="towerwarspp/main/game/LoadParserException.html" title="class in towerwarspp.main.game">LoadParserException</a></li>
<li><a href="towerwarspp/player/mcts/Mcts.html" title="class in towerwarspp.player.mcts">Mcts</a></li>
<li><a href="towerwarspp/preset/Move.html" title="class in towerwarspp.preset">Move</a></li>
<li><a href="towerwarspp/preset/MoveFormatException.html" title="class in towerwarspp.preset">MoveFormatException</a></li>
<li><a href="towerwarspp/board/MoveResult.html" title="enum in towerwarspp.board">MoveResult</a></li>
<li><a href="towerwarspp/board/MoveScore.html" title="class in towerwarspp.board">MoveScore</a></li>
<li><a href="towerwarspp/player/NetPlayer.html" title="class in towerwarspp.player">NetPlayer</a></li>
<li><a href="towerwarspp/player/mcts/Node.html" title="class in towerwarspp.player.mcts">Node</a></li>
<li><a href="towerwarspp/player/mcts/OldNode.html" title="class in towerwarspp.player.mcts">OldNode</a></li>
<li><a href="towerwarspp/main/OutputType.html" title="enum in towerwarspp.main">OutputType</a></li>
<li><a href="towerwarspp/main/ParameterInput.html" title="class in towerwarspp.main">ParameterInput</a></li>
<li><a href="towerwarspp/preset/Player.html" title="interface in towerwarspp.preset"><span class="interfaceName">Player</span></a></li>
<li><a href="towerwarspp/preset/PlayerColor.html" title="enum in towerwarspp.preset">PlayerColor</a></li>
<li><a href="towerwarspp/player/PlayerState.html" title="enum in towerwarspp.player">PlayerState</a></li>
<li><a href="towerwarspp/preset/PlayerType.html" title="enum in towerwarspp.preset">PlayerType</a></li>
<li><a href="towerwarspp/player/PlayStrategy.html" title="enum in towerwarspp.player">PlayStrategy</a></li>
<li><a href="towerwarspp/preset/Position.html" title="class in towerwarspp.preset">Position</a></li>
<li><a href="towerwarspp/preset/PositionFormatException.html" title="class in towerwarspp.preset">PositionFormatException</a></li>
<li><a href="towerwarspp/network/Remote.html" title="class in towerwarspp.network">Remote</a></li>
<li><a href="towerwarspp/preset/Requestable.html" title="interface in towerwarspp.preset"><span class="interfaceName">Requestable</span></a></li>
<li><a href="towerwarspp/main/game/Result.html" title="class in towerwarspp.main.game">Result</a></li>
<li><a href="towerwarspp/player/RndPlayer.html" title="class in towerwarspp.player">RndPlayer</a></li>
<li><a href="towerwarspp/main/game/Save.html" title="class in towerwarspp.main.game">Save</a></li>
<li><a href="towerwarspp/player/mcts/ScoredNode.html" title="class in towerwarspp.player.mcts">ScoredNode</a></li>
<li><a href="towerwarspp/board/SimpleBoard.html" title="class in towerwarspp.board">SimpleBoard</a></li>
<li><a href="towerwarspp/player/SimplePlayer.html" title="class in towerwarspp.player">SimplePlayer</a></li>
<li><a href="towerwarspp/preset/Status.html" title="enum in towerwarspp.preset">Status</a></li>
<li><a href="towerwarspp/player/mcts/Task.html" title="enum in towerwarspp.player.mcts">Task</a></li>
<li><a href="towerwarspp/io/TextIO.html" title="class in towerwarspp.io">TextIO</a></li>
<li><a href="towerwarspp/main/tournament/Tournament.html" title="class in towerwarspp.main.tournament">Tournament</a></li>
<li><a href="towerwarspp/player/mcts/TreeSelectionStrategy.html" title="enum in towerwarspp.player.mcts">TreeSelectionStrategy</a></li>
<li><a href="towerwarspp/main/tournament/TResult.html" title="class in towerwarspp.main.tournament">TResult</a></li>
<li><a href="towerwarspp/main/tournament/TSave.html" title="class in towerwarspp.main.tournament">TSave</a></li>
<li><a href="towerwarspp/player/mcts/UpdateTree.html" title="class in towerwarspp.player.mcts">UpdateTree</a></li>
<li><a href="towerwarspp/io/View.html" title="interface in towerwarspp.io"><span class="interfaceName">View</span></a></li>
<li><a href="towerwarspp/preset/Viewable.html" title="interface in towerwarspp.preset"><span class="interfaceName">Viewable</span></a></li>
<li><a href="towerwarspp/preset/Viewer.html" title="interface in towerwarspp.preset"><span class="interfaceName">Viewer</span></a></li>
......
......@@ -2,10 +2,10 @@
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_131) on Tue Jul 11 14:58:30 CEST 2017 -->
<!-- Generated by javadoc (1.8.0_131) on Mon Jul 17 12:51:56 CEST 2017 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Constant Field Values (APP)</title>
<meta name="date" content="2017-07-11">
<meta name="date" content="2017-07-17">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<script type="text/javascript" src="script.js"></script>
</head>
......@@ -97,6 +97,20 @@
</tr>
<tbody>
<tr class="altColor">
<td class="colFirst"><a name="towerwarspp.board.Board.DEFENCE">
<!-- -->
</a><code>private&nbsp;static&nbsp;final&nbsp;int</code></td>
<td><code><a href="towerwarspp/board/Board.html#DEFENCE">DEFENCE</a></code></td>
<td class="colLast"><code>-5000</code></td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a name="towerwarspp.board.Board.DEFEND">
<!-- -->
</a><code>private&nbsp;static&nbsp;final&nbsp;int</code></td>
<td><code><a href="towerwarspp/board/Board.html#DEFEND">DEFEND</a></code></td>
<td class="colLast"><code>5000</code></td>
</tr>
<tr class="altColor">
<td class="colFirst"><a name="towerwarspp.board.Board.LOSE">
<!-- -->
</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
......@@ -113,60 +127,6 @@
</tbody>
</table>
</li>
<li class="blockList">
<table class="constantsSummary" border="0" cellpadding="3" cellspacing="0" summary="Constant Field Values table, listing constant fields, and values">
<caption><span>towerwarspp.board.<a href="towerwarspp/board/Entity.html" title="class in towerwarspp.board">Entity</a></span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th scope="col">Constant Field</th>
<th class="colLast" scope="col">Value</th>
</tr>
<tbody>
<tr class="altColor">
<td class="colFirst"><a name="towerwarspp.board.Entity.ANSI_BLUE">
<!-- -->
</a><code>public&nbsp;static&nbsp;final&nbsp;java.lang.String</code></td>
<td><code><a href="towerwarspp/board/Entity.html#ANSI_BLUE">ANSI_BLUE</a></code></td>
<td class="colLast"><code>"\u001b[34m"</code></td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a name="towerwarspp.board.Entity.ANSI_CYAN">
<!-- -->
</a><code>public&nbsp;static&nbsp;final&nbsp;java.lang.String</code></td>
<td><code><a href="towerwarspp/board/Entity.html#ANSI_CYAN">ANSI_CYAN</a></code></td>
<td class="colLast"><code>"\u001b[36m"</code></td>
</tr>
<tr class="altColor">
<td class="colFirst"><a name="towerwarspp.board.Entity.ANSI_PURPLE">
<!-- -->
</a><code>public&nbsp;static&nbsp;final&nbsp;java.lang.String</code></td>
<td><code><a href="towerwarspp/board/Entity.html#ANSI_PURPLE">ANSI_PURPLE</a></code></td>
<td class="colLast"><code>"\u001b[35m"</code></td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a name="towerwarspp.board.Entity.ANSI_RED">
<!-- -->
</a><code>public&nbsp;static&nbsp;final&nbsp;java.lang.String</code></td>
<td><code><a href="towerwarspp/board/Entity.html#ANSI_RED">ANSI_RED</a></code></td>
<td class="colLast"><code>"\u001b[31m"</code></td>
</tr>
<tr class="altColor">
<td class="colFirst"><a name="towerwarspp.board.Entity.ANSI_WHITE">
<!-- -->
</a><code>public&nbsp;static&nbsp;final&nbsp;java.lang.String</code></td>
<td><code><a href="towerwarspp/board/Entity.html#ANSI_WHITE">ANSI_WHITE</a></code></td>
<td class="colLast"><code>"\u001b[37m"</code></td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a name="towerwarspp.board.Entity.ANSI_YELLOW">
<!-- -->
</a><code>public&nbsp;static&nbsp;final&nbsp;java.lang.String</code></td>
<td><code><a href="towerwarspp/board/Entity.html#ANSI_YELLOW">ANSI_YELLOW</a></code></td>
<td class="colLast"><code>"\u001b[33m"</code></td>
</tr>
</tbody>
</table>
</li>
</ul>
<a name="towerwarspp.io">
<!-- -->
......@@ -270,6 +230,34 @@
<ul class="blockList">
<li class="blockList">
<table class="constantsSummary" border="0" cellpadding="3" cellspacing="0" summary="Constant Field Values table, listing constant fields, and values">
<caption><span>towerwarspp.main.game.<a href="towerwarspp/main/game/Save.html" title="class in towerwarspp.main.game">Save</a></span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th scope="col">Constant Field</th>
<th class="colLast" scope="col">Value</th>
</tr>
<tbody>
<tr class="altColor">
<td class="colFirst"><a name="towerwarspp.main.game.Save.BLUE">
<!-- -->
</a><code>private&nbsp;static&nbsp;final&nbsp;boolean</code></td>
<td><code><a href="towerwarspp/main/game/Save.html#BLUE">BLUE</a></code></td>
<td class="colLast"><code>false</code></td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a name="towerwarspp.main.game.Save.RED">
<!-- -->
</a><code>private&nbsp;static&nbsp;final&nbsp;boolean</code></td>
<td><code><a href="towerwarspp/main/game/Save.html#RED">RED</a></code></td>
<td class="colLast"><code>true</code></td>
</tr>
</tbody>
</table>
</li>
</ul>
<ul class="blockList">
<li class="blockList">
<table class="constantsSummary" border="0" cellpadding="3" cellspacing="0" summary="Constant Field Values table, listing constant fields, and values">
<caption><span>towerwarspp.main.tournament.<a href="towerwarspp/main/tournament/TResult.html" title="class in towerwarspp.main.tournament">TResult</a></span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
......@@ -327,7 +315,7 @@
<ul class="blockList">
<li class="blockList">
<table class="constantsSummary" border="0" cellpadding="3" cellspacing="0" summary="Constant Field Values table, listing constant fields, and values">
<caption><span>towerwarspp.player.mcts.<a href="towerwarspp/player/mcts/Mcts.html" title="class in towerwarspp.player.mcts">Mcts</a></span><span class="tabEnd">&nbsp;</span></caption>
<caption><span>towerwarspp.player.<a href="towerwarspp/player/Adv2Player.html" title="class in towerwarspp.player">Adv2Player</a></span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th scope="col">Constant Field</th>
......@@ -335,18 +323,27 @@
</tr>
<tbody>
<tr class="altColor">
<td class="colFirst"><a name="towerwarspp.player.mcts.Mcts.DEF_SCORE">
<td class="colFirst"><a name="towerwarspp.player.Adv2Player.DEF_PARALLELIZATION">
<!-- -->
</a><code>static&nbsp;final&nbsp;int</code></td>
<td><code><a href="towerwarspp/player/mcts/Mcts.html#DEF_SCORE">DEF_SCORE</a></code></td>
<td class="colLast"><code>1</code></td>
</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
<td><code><a href="towerwarspp/player/Adv2Player.html#DEF_PARALLELIZATION">DEF_PARALLELIZATION</a></code></td>
<td class="colLast"><code>8</code></td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a name="towerwarspp.player.Adv2Player.DEF_TIME_PER_MOVE">
<!-- -->
</a><code>public&nbsp;static&nbsp;final&nbsp;long</code></td>
<td><code><a href="towerwarspp/player/Adv2Player.html#DEF_TIME_PER_MOVE">DEF_TIME_PER_MOVE</a></code></td>
<td class="colLast"><code>2000L</code></td>
</tr>
</tbody>
</table>
</li>
</ul>
<ul class="blockList">
<li class="blockList">
<table class="constantsSummary" border="0" cellpadding="3" cellspacing="0" summary="Constant Field Values table, listing constant fields, and values">
<caption><span>towerwarspp.player.mcts.<a href="towerwarspp/player/mcts/OldNode.html" title="class in towerwarspp.player.mcts">OldNode</a></span><span class="tabEnd">&nbsp;</span></caption>
<caption><span>towerwarspp.player.mcts.<a href="towerwarspp/player/mcts/Mcts.html" title="class in towerwarspp.player.mcts">Mcts</a></span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th scope="col">Constant Field</th>
......@@ -354,17 +351,17 @@
</tr>
<tbody>
<tr class="altColor">