public class Arena
extends java.lang.Object
main
-Methode ein Spiel beginnt.
Aufrufsyntax des Programms Arena:
java -classpath . reversi.Arena [options] GameName package1.myclass1 package2.myclass2
Der obige Aufruf startet ein Spiel zwischen zwei Computerspielern package1.myclass1 und package2.myclass2. Dabei bezeichnet myclassX die Klasse, die das Interface ReversiPlayer implementiert. packageX bezeichnet das Package, in dem die Spielerklasse implementiert ist.
GameName ist ein beliebiger Name für das Spiel. Der Name wird beim Schreiben von Spielinformationen in eine Log-Datei verwendet. Das erlaubt das spätere Wiederfinden von einzelnen Spielen in einer Log-Datei, die mehrere Spiele enthält.
Folgende Optionen können verwendet werden:-h Hilfe anzeigen -t timeout Maximale Zugdauer in Millisekunden (0 für unbeschränkt) -d delay Verzögerung zwischen Zügen; wichtig nur zur Animation -e exittime Verzögerung, bis das Programm nach Spielende stoppt -l logfile Name der Log-Datei für das Protokollieren des Spiels -c keine graphische Oberfläche anzeigen -f keine graphischen Animationen -s startPosNr Start Position (0: Standart, 1-6 Alternative Startpositionen, siehe Startpositionen.pdf)
Modifier and Type | Field and Description |
---|---|
(package private) java.lang.StringBuffer |
backlog |
protected static int |
BOARD_LENGTH |
(package private) int[] |
direction |
(package private) java.lang.String |
logFile |
(package private) java.util.Vector<java.io.PrintWriter> |
logStreams |
(package private) java.lang.String |
matchId |
(package private) java.lang.String |
name_green |
(package private) java.lang.String |
name_red |
protected reversi.ProgramParameters |
params |
protected java.lang.Thread |
performerThread |
(package private) ReversiPlayer |
player_green |
(package private) ReversiPlayer |
player_red |
(package private) reversi.GameState |
state |
(package private) java.lang.String |
statusText |
protected static int |
TIME_TOLERANCE |
(package private) int |
timeBeforeExit |
(package private) long |
timeOut |
(package private) boolean |
verbose |
(package private) reversi.Visualization |
visualization |
Constructor and Description |
---|
Arena(reversi.ProgramParameters params,
reversi.Visualization vis) |
Modifier and Type | Method and Description |
---|---|
(package private) void |
addLogStream(java.io.PrintWriter pw) |
(package private) void |
cheatedFinish(int player,
int reason,
reversi.TextGameBoard board) |
(package private) void |
computePossibleMoves(reversi.TextGameBoard board,
int player,
int[][] possibleMoves) |
(package private) void |
computeTokensToFlip(GameBoard gb,
Coordinates pos,
int color,
int[][] toFlip)
This routine computes which positions on the board have to be flipped
when a certain move is made.
|
(package private) java.lang.String |
getBacklog() |
(package private) reversi.ProgramParameters |
getParams() |
(package private) static ReversiPlayer |
instantiatePlayer(java.lang.String name) |
(package private) static ReversiPlayer |
instantiatePlayerJar(java.lang.String name,
java.lang.String path) |
static void |
main(java.lang.String[] args)
Arena main method.
|
(package private) Coordinates |
makeMove(ReversiPlayer player,
GameBoard board)
Make a move under supervised conditions.
|
(package private) boolean |
onBoard(int r,
int c) |
(package private) void |
performMatch()
Perform a match between two players.
|
(package private) Coordinates |
performMove(int player,
reversi.TextGameBoard board) |
(package private) void |
regularFinish(int redStones,
int greenStones) |
void |
setStartingPosition(int s,
reversi.TextGameBoard board) |
void |
setTimeBeforeExit(int t) |
void |
startMatch() |
(package private) void |
writeToLog(java.lang.String s) |
java.lang.StringBuffer backlog
protected static final int BOARD_LENGTH
int[] direction
java.lang.String logFile
java.util.Vector<java.io.PrintWriter> logStreams
java.lang.String matchId
java.lang.String name_green
java.lang.String name_red
protected reversi.ProgramParameters params
protected java.lang.Thread performerThread
ReversiPlayer player_green
ReversiPlayer player_red
reversi.GameState state
java.lang.String statusText
protected static final int TIME_TOLERANCE
int timeBeforeExit
long timeOut
boolean verbose
reversi.Visualization visualization
void addLogStream(java.io.PrintWriter pw)
void cheatedFinish(int player, int reason, reversi.TextGameBoard board)
void computePossibleMoves(reversi.TextGameBoard board, int player, int[][] possibleMoves)
void computeTokensToFlip(GameBoard gb, Coordinates pos, int color, int[][] toFlip)
pos
and the player color color
. The array
flipped
will be filled with the result. A "0" indicates no
flip, while a "1" indicates that the stone at this position will be
flipped when the corresponding move is made.java.lang.String getBacklog()
reversi.ProgramParameters getParams()
static ReversiPlayer instantiatePlayer(java.lang.String name)
static ReversiPlayer instantiatePlayerJar(java.lang.String name, java.lang.String path) throws java.lang.Exception
java.lang.Exception
public static void main(java.lang.String[] args)
Coordinates makeMove(ReversiPlayer player, GameBoard board) throws java.lang.Throwable
java.lang.Throwable
boolean onBoard(int r, int c)
void performMatch()
Coordinates performMove(int player, reversi.TextGameBoard board) throws reversi.IrregularFinishException
reversi.IrregularFinishException
void regularFinish(int redStones, int greenStones)
public void setStartingPosition(int s, reversi.TextGameBoard board)
public void setTimeBeforeExit(int t)
public void startMatch()
void writeToLog(java.lang.String s)