Package edu.wisc.game.sql
Class Episode
java.lang.Object
edu.wisc.game.sql.Episode
- Direct Known Subclasses:
EpisodeInfo
,ReplayedEpisode
An Episode is a single instance of a Game played by a person or
machine with our game server. It describes the current state of
the game, and has methods for processing player's actions. The
episode object contains the top-level controls describing the
current state of the rule set associated with this episode.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic class
Return codes for the /move and /display API web API calls, and for the MOVE command in the captive game server.class
Can be sent to the web client in JSON format, where it would be used to display the current state of the episodestatic class
static class
A Move instance describes an [attempted] act of picking a piece and dropping it into a bucket.static enum
static class
A Pick instance describes the act of picking a piece, without specifying its destination -
Field Summary
FieldsModifier and TypeFieldDescriptionThis is used to assign episode IDs, which are unique within a given server run.static final int
static final RandomRG
protected edu.wisc.game.sql.Episode.RuleLine
protected int
Which row of rules do we look at now? (0-based)static final DateFormat
static final DateFormat
with millisecondsstatic final String
The current version of the application -
Constructor Summary
ConstructorsModifierConstructorDescriptionEpisode()
Dummy constructor; only used for error code production, and maybe also by JPA when restoring a player's info (with all episodes) from the database.Episode
(Game game, Episode.OutputMode _outputMode, Reader _in, PrintWriter _out) Creates a new Episode for a given Game (which defines rules and the properties of the initial board).protected
Episode
(Game game, Episode.OutputMode _outputMode, Reader _in, PrintWriter _out, String _episodeId) -
Method Summary
Modifier and TypeMethodDescriptionprotected int
accept
(Episode.Pick move) One normally should not use this method directly; use doPick() or doMove() instead.doMove
(int y, int x, int by, int bx, int _attemptCnt) Evaluate a move attemptdoPick
(int y, int x, int _attemptCnt) Evaluate a pick attemptShows the current board (without removed [dropped] pieces)int
int
Piece[]
static String
FIXME: this shows up in Reflection, as if it's a property of each objectGraphic display of the boardgraphicDisplay
(boolean html) Generates an HTML table displaying the current board state,static String
graphicDisplayAscii
(Piece[] pieces, int lastMovePos, boolean weShowAllMovables, boolean[] isMoveable, boolean html) Retired from the web game server; still used in Captive Game Server.Builds a Display objecy to be sent out over the web UI upon a /display call (rather than a /move or /pick)static BitSet
boolean
playGame
(GameGenerator gg, int gameCnt) Lets this episode play out until either all pieces are cleared, or a stalemate is reached, or the player gives up (sends an EXIT or NEW command).boolean[]
static String
randomWord
(int len) Creates a word made out of random letters and digitsreport()
Concise report, handy for debuggingvoid
setEpisodeId
(String _episodeId) void
setNPiecesStart
(int _nPiecesStart) void
setStartTime
(Date _startTime) boolean
The basic mode tells the player where all movable pieces are, but EpisodeInfo will override it if the para set mandates "free" mode.
-
Field Details
-
episodeId
This is used to assign episode IDs, which are unique within a given server run. The IDs are not meant to be persistent. -
NBU
public static final int NBU -
ruleLineNo
protected int ruleLineNoWhich row of rules do we look at now? (0-based) -
ruleLine
protected edu.wisc.game.sql.Episode.RuleLine ruleLine -
sdf
-
sdf2
with milliseconds -
random
-
version
The current version of the application- See Also:
-
-
Constructor Details
-
Episode
public Episode()Dummy constructor; only used for error code production, and maybe also by JPA when restoring a player's info (with all episodes) from the database. -
Episode
Creates a new Episode for a given Game (which defines rules and the properties of the initial board). Depending on what the Game is, the episode may use a pre-created board stored in the Game object, or a random board created on the fly.- Parameters:
_in
- The input stream for commands; it will be null in the web app_out
- Will be null in the web app.
-
Episode
protected Episode(Game game, Episode.OutputMode _outputMode, Reader _in, PrintWriter _out, String _episodeId)
-
-
Method Details
-
getEpisodeId
-
setEpisodeId
-
getStartTime
-
setStartTime
-
getPieces
-
randomWord
Creates a word made out of random letters and digits -
getNPiecesStart
public int getNPiecesStart() -
setNPiecesStart
public void setNPiecesStart(int _nPiecesStart) -
onBoard
-
getLastMovePos
public int getLastMovePos() -
accept
One normally should not use this method directly; use doPick() or doMove() instead. -
weShowAllMovables
public boolean weShowAllMovables()The basic mode tells the player where all movable pieces are, but EpisodeInfo will override it if the para set mandates "free" mode. -
graphicDisplay
Graphic display of the board -
graphicDisplay
Generates an HTML table displaying the current board state,- Parameters:
html
- If false, call the ASCII-graphics routine instead (for printing on terminal, instead of a web browser)
-
graphicDisplayAscii
public static String graphicDisplayAscii(Piece[] pieces, int lastMovePos, boolean weShowAllMovables, boolean[] isMoveable, boolean html) Retired from the web game server; still used in Captive Game Server. -
getCurrentBoard
Shows the current board (without removed [dropped] pieces) -
getVersion
FIXME: this shows up in Reflection, as if it's a property of each object -
mkDisplay0
Builds a Display objecy to be sent out over the web UI upon a /display call (rather than a /move or /pick) -
doPick
Evaluate a pick attempt- Throws:
IOException
-
doMove
Evaluate a move attempt- Parameters:
y
- the y-coordinate of the game piece the player tries to movex
- the x-coordinate (1 thru 6) of the game piece the player tries to moveby
- the y-coordinate of the destination bucket (0 or 7)bx
- the x-coordinate of the destination bucket (0 or 7)- Throws:
IOException
-
playGame
Lets this episode play out until either all pieces are cleared, or a stalemate is reached, or the player gives up (sends an EXIT or NEW command). The episode takes commands from the reader, as in the Captive Game Server.- Parameters:
gameCnt
- The sequential number of the current episode. This is only used in a message.game
- This is passed just so that we can access the feature list for the FEATURES command- Returns:
- true if another episode is requested, i.e. the player has entered a NEW command. false is returned if the player enters an EXIT command, or simply closes the input stream.
- Throws:
IOException
-
report
Concise report, handy for debugging -
positionsOfMoveablePieces
public boolean[] positionsOfMoveablePieces()
-