Safe Haskell | None |
---|---|
Language | Haskell2010 |
Game.Labyrinth
Synopsis
- newtype Board = Board Word64
- data Coord
- boardIndex :: (Coord, Coord) -> Int
- isCellFixed :: (Coord, Coord) -> Bool
- boardGet :: Board -> (Coord, Coord) -> Bool
- boardSet :: Bool -> (Coord, Coord) -> Board
- singleCell :: (Coord, Coord) -> Board
- listsFromBoard :: Board -> [[Bool]]
- allEnums :: (Enum a, Bounded a) => [a]
- rowMask :: Word64
- columnMask :: Word64
- boardMask :: Word64
- rowKMask :: Coord -> Word64
- columnKMask :: Coord -> Word64
- (.-.) :: Bits a => a -> a -> a
- shiftBoardLeft :: Board -> Board
- shiftBoardRight :: Board -> Board
- shiftBoardUp :: Board -> Board
- shiftBoardDown :: Board -> Board
- splitBoard :: Board -> Board -> (Board, Board)
- shiftRowLeft :: Coord -> (Bool, Board) -> (Bool, Board)
- shiftRowRight :: Coord -> (Bool, Board) -> (Bool, Board)
- shiftColumnUp :: Coord -> (Bool, Board) -> (Bool, Board)
- shiftColumnDown :: Coord -> (Bool, Board) -> (Bool, Board)
- cycleBoardLeft :: Board -> Board
- cycleBoardRight :: Board -> Board
- cycleBoardUp :: Board -> Board
- cycleBoardDown :: Board -> Board
- cycleGen :: (Board -> Board) -> (Coord -> Word64) -> Coord -> Board -> Board
- cycleRowLeft :: Coord -> Board -> Board
- cycleRowRight :: Coord -> Board -> Board
- cycleColumnUp :: Coord -> Board -> Board
- cycleColumnDown :: Coord -> Board -> Board
- cycleStripe :: Border -> Coord -> Board -> Board
- rotateMasked :: (Directions Board -> Directions Board) -> Board -> Directions Board -> Directions Board
- rotateDir90 :: Directions a -> Directions a
- rotateDir180 :: Directions a -> Directions a
- randomRotate :: RandomGen g => Directions Board -> State g (Directions Board)
- data Directions a = Directions {}
- transposeDirections :: Directions [[a]] -> [[Directions a]]
- boolChar :: Char -> Bool -> Char
- formatBoard :: Board -> String
- wallChar :: Char
- wayChar :: Char
- selectWallWayChar :: Bool -> Bool -> Char
- boxTable :: [[Box]] -> Box
- formatCell :: EnumSet Player -> Directions Bool -> Char -> Directions Bool -> Box
- format :: Directions Board -> Box
- formatWays :: Directions Board -> Board -> Box
- connectReachable :: Directions Board -> Board -> Directions Board
- arrows :: Directions Char
- arrowFrame :: Maybe (Border, Coord) -> Box -> Box
- constMap :: Ord k => [k] -> a -> Map k a
- shiftCharMap :: Directions (Map Coord Char)
- arrowMap :: Map Char (Border, Coord)
- coordinateFrame :: Box -> Box
- rowMap :: Map Char Coord
- columnMap :: Map Char Coord
- data Shape
- type InitTile = (Shape, Maybe Char)
- data Rotation
- dirsFromShape :: Shape -> Directions Bool
- defaultBoardDirs :: [[Directions Bool]]
- defaultBoard :: Directions Board
- randomChoose :: RandomGen g => StateT [a] (State g) a
- shuffle :: RandomGen g => State g (InitTile, [InitTile])
- singleCellShape :: (Coord, Coord) -> Shape -> Directions Board
- grid :: [a] -> [(a, a)]
- layoutMoveableCells :: [InitTile] -> (Directions Board, SymbolMap)
- randomBoard :: RandomGen g => State g (InitTile, (Directions Board, SymbolMap))
- shuffleTargets :: RandomGen g => State g [Char]
- associateTargets :: T [] Player -> [Char] -> T Seq (Player, T [] Char)
- bfsStep :: Directions Board -> Board -> Board
- bfs :: Directions Board -> Board -> Board
- data Player
- playerChar :: Bool -> Player -> Char
- moveableSymbols :: [Char]
- playerSymbols :: [Char]
- fixedSymbols :: [Char]
- type SymbolMap = Map (Coord, Coord) Char
- fixedSymbolMap :: SymbolMap
- randomSymbolMap :: RandomGen g => State g SymbolMap
- removeFromMap :: Ord k => k -> Map k a -> (Maybe a, Map k a)
- insertMaybeMap :: Ord k => k -> Maybe a -> Map k a -> Map k a
- shiftRowLeftMap :: Coord -> (Maybe Char, SymbolMap) -> (Maybe Char, SymbolMap)
- shiftRowRightMap :: Coord -> (Maybe Char, SymbolMap) -> (Maybe Char, SymbolMap)
- shiftColumnUpMap :: Coord -> (Maybe Char, SymbolMap) -> (Maybe Char, SymbolMap)
- shiftColumnDownMap :: Coord -> (Maybe Char, SymbolMap) -> (Maybe Char, SymbolMap)
- formatWithSymbols :: BoardState -> Board -> Box
- type PlayerMap = EnumMap Player (Coord, Coord)
- shiftPlayersGen :: Eq a => (b -> a) -> (b -> b) -> a -> EnumMap k b -> EnumMap k b
- shiftRowLeftPlayers :: Coord -> PlayerMap -> PlayerMap
- shiftRowRightPlayers :: Coord -> PlayerMap -> PlayerMap
- shiftColumnUpPlayers :: Coord -> PlayerMap -> PlayerMap
- shiftColumnDownPlayers :: Coord -> PlayerMap -> PlayerMap
- data BoardState = BoardState {}
- type Tile = (Directions Bool, Maybe Char)
- cyclicPred :: (Eq a, Enum a, Bounded a) => a -> a
- cyclicSucc :: (Eq a, Enum a, Bounded a) => a -> a
- shiftStateGen :: (Coord -> (Bool, Board) -> (Bool, Board)) -> (Coord -> (Maybe Char, SymbolMap) -> (Maybe Char, SymbolMap)) -> (Coord -> PlayerMap -> PlayerMap) -> Coord -> (Tile, BoardState) -> (Tile, BoardState)
- data Border
- borderSet :: Directions Border
- singleBorder :: Border -> a -> Directions a -> Directions a
- lookupBorder :: Border -> Directions a -> a
- flipBorder :: Border -> Border
- shiftState :: Border -> Coord -> (Tile, BoardState) -> (Tile, BoardState)
- reachableFromPlayer :: Player -> BoardState -> Board
- shapeRotations :: Eq a => Directions a -> [(Rotation, Directions a)]
- reachable1Single :: Board -> (Border, Coord) -> Tile -> BoardState -> Bool
- reachable1 :: (Tile, BoardState) -> [((Border, Coord), ([Rotation], Bool))]
- reachable2Single :: Board -> (Border, Coord) -> Tile -> BoardState -> Int
- reachable2 :: (Tile, BoardState) -> [(((Border, Coord), Rotation), Int)]
- formatRotation :: Rotation -> String
- formatShift :: ((Border, Coord), Rotation) -> String
- formatShifts :: ((Border, Coord), ([Rotation], Bool)) -> String
- parseShift :: Maybe (Border, Coord) -> String -> Exceptional String ((Border, Coord), Rotation)
- parsePosition :: Board -> String -> Exceptional String (Coord, Coord)
- inputLoop :: (String -> Exceptional String a) -> IO a
- playerCharSet :: EnumSet Char
- inversePlayerChar :: Char -> String
- printBox :: Box -> IO ()
- main :: IO ()
Documentation
>>>
import qualified Game.Labyrinth as Labyrinth
listsFromBoard :: Board -> [[Bool]] Source #
columnMask :: Word64 Source #
columnKMask :: Coord -> Word64 Source #
shiftBoardLeft :: Board -> Board Source #
shiftBoardRight :: Board -> Board Source #
shiftBoardUp :: Board -> Board Source #
shiftBoardDown :: Board -> Board Source #
shiftRowLeft :: Coord -> (Bool, Board) -> (Bool, Board) Source #
\k b -> b == Labyrinth.shiftRowLeft k (Labyrinth.shiftRowRight k b)
\k b -> b == Labyrinth.shiftRowRight k (Labyrinth.shiftRowLeft k b)
shiftColumnUp :: Coord -> (Bool, Board) -> (Bool, Board) Source #
\k b -> b == Labyrinth.shiftColumnUp k (Labyrinth.shiftColumnDown k b)
\k b -> b == Labyrinth.shiftColumnDown k (Labyrinth.shiftColumnUp k b)
cycleBoardLeft :: Board -> Board Source #
cycleBoardRight :: Board -> Board Source #
cycleBoardUp :: Board -> Board Source #
cycleBoardDown :: Board -> Board Source #
cycleRowLeft :: Coord -> Board -> Board Source #
\k b -> b == Labyrinth.cycleRowLeft k (Labyrinth.cycleRowRight k b)
\k b -> b == Labyrinth.cycleRowRight k (Labyrinth.cycleRowLeft k b)
cycleColumnUp :: Coord -> Board -> Board Source #
\k b -> b == Labyrinth.cycleColumnUp k (Labyrinth.cycleColumnDown k b)
\k b -> b == Labyrinth.cycleColumnDown k (Labyrinth.cycleColumnUp k b)
rotateMasked :: (Directions Board -> Directions Board) -> Board -> Directions Board -> Directions Board Source #
rotateDir90 :: Directions a -> Directions a Source #
rotateDir180 :: Directions a -> Directions a Source #
randomRotate :: RandomGen g => Directions Board -> State g (Directions Board) Source #
data Directions a Source #
Constructors
Directions | |
Instances
transposeDirections :: Directions [[a]] -> [[Directions a]] Source #
formatBoard :: Board -> String Source #
formatCell :: EnumSet Player -> Directions Bool -> Char -> Directions Bool -> Box Source #
formatWays :: Directions Board -> Board -> Box Source #
connectReachable :: Directions Board -> Board -> Directions Board Source #
arrows :: Directions Char Source #
shiftCharMap :: Directions (Map Coord Char) Source #
coordinateFrame :: Box -> Box Source #
Instances
Bounded Rotation Source # | |
Enum Rotation Source # | |
Eq Rotation Source # | |
Ord Rotation Source # | |
Defined in Game.Labyrinth |
dirsFromShape :: Shape -> Directions Bool Source #
defaultBoardDirs :: [[Directions Bool]] Source #
singleCellShape :: (Coord, Coord) -> Shape -> Directions Board Source #
layoutMoveableCells :: [InitTile] -> (Directions Board, SymbolMap) Source #
randomBoard :: RandomGen g => State g (InitTile, (Directions Board, SymbolMap)) Source #
moveableSymbols :: [Char] Source #
playerSymbols :: [Char] Source #
fixedSymbols :: [Char] Source #
formatWithSymbols :: BoardState -> Board -> Box Source #
data BoardState Source #
Constructors
BoardState | |
Fields |
shiftStateGen :: (Coord -> (Bool, Board) -> (Bool, Board)) -> (Coord -> (Maybe Char, SymbolMap) -> (Maybe Char, SymbolMap)) -> (Coord -> PlayerMap -> PlayerMap) -> Coord -> (Tile, BoardState) -> (Tile, BoardState) Source #
singleBorder :: Border -> a -> Directions a -> Directions a Source #
lookupBorder :: Border -> Directions a -> a Source #
flipBorder :: Border -> Border Source #
shiftState :: Border -> Coord -> (Tile, BoardState) -> (Tile, BoardState) Source #
reachableFromPlayer :: Player -> BoardState -> Board Source #
shapeRotations :: Eq a => Directions a -> [(Rotation, Directions a)] Source #
reachable1Single :: Board -> (Border, Coord) -> Tile -> BoardState -> Bool Source #
reachable1 :: (Tile, BoardState) -> [((Border, Coord), ([Rotation], Bool))] Source #
reachable2Single :: Board -> (Border, Coord) -> Tile -> BoardState -> Int Source #
reachable2 :: (Tile, BoardState) -> [(((Border, Coord), Rotation), Int)] Source #
formatRotation :: Rotation -> String Source #
parseShift :: Maybe (Border, Coord) -> String -> Exceptional String ((Border, Coord), Rotation) Source #
parsePosition :: Board -> String -> Exceptional String (Coord, Coord) Source #
inversePlayerChar :: Char -> String Source #