|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectde.caff.maze.MazePropertyOwner
de.caff.maze.AbstractBasicMaze
de.caff.maze.RectangularMaze
public class RectangularMaze
A rectangular maze with square cells. This is what I used to draw on checkered paper when I was a child. Some of my friends loved to solve them and asked for bigger ones, so one day I made a really large one by using 8 DIN A4 papers with 5mm squares, resulting in a maze with approximately 18000 cells. Nobody was able to solve it, until 25 years later my own son took the time to do it. Drawing took some hours, but solving it took it lot more. Now you can do both (creating and solving) in mere seconds with this and other programs but I'm not convinced that this is really a progress.
![]() |
![]() |
![]() |
![]() |
Nested Class Summary |
---|
Nested classes/interfaces inherited from class de.caff.maze.AbstractBasicMaze |
---|
AbstractBasicMaze.DoubleDelayedPropertyInformation, AbstractBasicMaze.IntegerDelayedPropertyInformation |
Nested classes/interfaces inherited from class de.caff.maze.MazePropertyOwner |
---|
MazePropertyOwner.BooleanPropertyInformation, MazePropertyOwner.EnumPropertyInformation, MazePropertyOwner.InfoPropertyDisplay, MazePropertyOwner.IntegerPropertyInformation, MazePropertyOwner.PaintPropertyInformation |
Field Summary | |
---|---|
static java.lang.String |
MAZE_TYPE
The type of this maze (for storage). |
static java.lang.String |
PROPERTY_HORIZONTAL_CELLS
Property key for the settable number of horizontal cells property. |
static java.lang.String |
PROPERTY_VERTICAL_CELLS
Property key for the settable number of vertical cells property. |
Fields inherited from class de.caff.maze.AbstractBasicMaze |
---|
BOX_SIZE, PROPERTY_CREATION_TIME, PROPERTY_MAZE, PROPERTY_NUMBER_CELLS, PROPERTY_SEED, PROPERTY_SOLUTION_LENGTH, PROPERTY_WAY, PROPERTY_WAY_POINTS |
Constructor Summary | |
---|---|
RectangularMaze(int horizontalCells,
int verticalCells)
Constructor. |
Method Summary | |
---|---|
protected void |
doDraw(MazePainter painter,
MazePaintPropertiesProvider properties)
Do the actual drawing. |
MazeCell |
getCellAt(java.awt.geom.Point2D position)
Get the cell at a given point. |
MazeCell |
getCellByID(int id)
Get the cell with the given id. |
MazeCell[] |
getCells()
Get the cells of this maze. |
protected AbstractBasicMaze |
getGeometryClone()
Get a deep copy of this maze geometry. |
java.awt.Insets |
getInsets(MazePaintPropertiesProvider properties,
float scaling)
Get the necessary insets depending on the paint properties. |
java.lang.String |
getMazeType()
Get a internally used string describing the maze type. |
protected java.awt.Shape |
getOuterBorder()
Get the borders of the maze as a shape. |
float |
getPreferredAspectRatio()
Get the preferred aspect ratio of this maze. |
java.util.Collection<PropertyInformation> |
getPropertyInformations()
Get the property setters and displays for this maze. |
void |
loadPersistentData(DataStorage systemAccess)
Load extra data defining the maze from the system access. |
static void |
main(java.lang.String[] args)
Test code. |
protected void |
recreateFromDelayedSetters()
This is called during the call of AbstractBasicMaze.setFromSetters()
and should be used to recreate the geometry of the maze from
the setters of the geometric properties. |
void |
reset()
Resets the internal data. |
void |
setDefaultWayPoints()
Set some useful default way points. |
void |
storePersistentData(DataStorage systemAccess)
Store extra data defining the maze to the system access. |
Methods inherited from class de.caff.maze.AbstractBasicMaze |
---|
addMazeFinishedListener, arg2int, createMaze, createMaze, createMaze, draw, drawBackgroundAndWay, getClone, getCreationTimeMillis, getInfo, getSeed, getWay, getWayEnd, getWayStart, isDuringRecreation, loadSeedWayAndVersion, recreateMaze, removeMazeFinishedListener, setFromSetters, setProgressShower, setWayEnd, setWayPoints, setWayStart, solve, storeSeedWayAndVersion |
Methods inherited from class de.caff.maze.MazePropertyOwner |
---|
addPropertyChangeListener, firePropertyChange, removePropertyChangeListener |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
public static final java.lang.String MAZE_TYPE
public static final java.lang.String PROPERTY_HORIZONTAL_CELLS
public static final java.lang.String PROPERTY_VERTICAL_CELLS
Constructor Detail |
---|
public RectangularMaze(int horizontalCells, int verticalCells)
horizontalCells
- number of horizontal cellsverticalCells
- number of vertical cellsMethod Detail |
---|
public void reset()
reset
in interface Maze
reset
in class AbstractBasicMaze
protected AbstractBasicMaze getGeometryClone()
getGeometryClone
in class AbstractBasicMaze
public java.lang.String getMazeType()
getMazeType
in class AbstractBasicMaze
public MazeCell[] getCells()
public MazeCell getCellByID(int id)
id
- cell id
null
if there is no such cellMazeCell.getID()
protected void doDraw(MazePainter painter, MazePaintPropertiesProvider properties)
MazePainter.startPaintingMaze(Maze)
and
MazePainter.endPaintingMaze()
.
doDraw
in class AbstractBasicMaze
painter
- painter to draw toproperties
- access to properties for drawing (colors etc)public float getPreferredAspectRatio()
public java.awt.Insets getInsets(MazePaintPropertiesProvider properties, float scaling)
properties
- paint propertiesscaling
- scaling used when painting
public void setDefaultWayPoints()
setDefaultWayPoints
in class AbstractBasicMaze
public java.util.Collection<PropertyInformation> getPropertyInformations()
getPropertyInformations
in class AbstractBasicMaze
protected void recreateFromDelayedSetters()
AbstractBasicMaze.setFromSetters()
and should be used to recreate the geometry of the maze from
the setters of the geometric properties.
recreateFromDelayedSetters
in class AbstractBasicMaze
protected java.awt.Shape getOuterBorder()
getOuterBorder
in class AbstractBasicMaze
public MazeCell getCellAt(java.awt.geom.Point2D position)
getCellAt
in interface Maze
getCellAt
in class AbstractBasicMaze
position
- cell position
null
if there is no cell at the given positionpublic void loadPersistentData(DataStorage systemAccess)
systemAccess
- system accesspublic void storePersistentData(DataStorage systemAccess)
systemAccess
- system accesspublic static void main(java.lang.String[] args)
args
- unused
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |