
Maze/Labyrinth raw format extension .raw

 Model of labyrinth storing only paths not walls. wall are regenerated later on based on adjacent paths. 
 each position (x,y) stores what move can be done from here to go do deeper path.
 a node is tagged OPEN and contained in openList if all moves from its position have not been resolved
 a node is tagged CLOSED when fully processed

position is (x,y)

See org.artisanlogiciel.games.WallsProvider

file starts with
'LAB0'
32bits Width
32bits Height

Width * ( 16bits )
*
Height.


    /** WARNING don't change those values, they are used as it is for optimisation */
    private final static short FLAGLENGTH=7;
    private final static short CLEAR=0; // mandatory 0 since array creation is initialized with 0.
    private final static short HORIZONTAL=1;
    private final static short VERTICAL=2;
    private final static short DIRECTION=4; // could we get rid of that to free one bit for other purpose ?
    private final static short POSITIVE=8;
    private final static short NEGATIVE=16;
    private final static short OPEN=32;     // can be reused once generation is completed
    private final static short CLOSED=64;   // can be reused once generation is completed
    private final static short LEFT=Brick.LEFT<<FLAGLENGTH|DIRECTION|HORIZONTAL|NEGATIVE;
    private final static short DOWN=Brick.DOWN<<FLAGLENGTH|DIRECTION|VERTICAL|POSITIVE;
    private final static short RIGHT=Brick.RIGHT<<FLAGLENGTH|DIRECTION|HORIZONTAL|POSITIVE;
    private final static short UP=Brick.UP<<FLAGLENGTH|DIRECTION|VERTICAL|NEGATIVE;
    private final static short ENTRY=Brick.ENTRY<<FLAGLENGTH; // flag when a wall should be open to access this.
    private final static short GOAL=Brick.GOAL<<FLAGLENGTH; // flag when a wall should be open to access this.
    private final static short SOLVED=64<<FLAGLENGTH; // flag when solution is on this path.
    private final static short FREE=128<<FLAGLENGTH; // free flag