29 lines
926 B
Haskell
29 lines
926 B
Haskell
module Main where
|
|
|
|
import Control.Monad.State (evalState)
|
|
import RandomChess (ChessBoard, emptyBoard, placeKings, getBoard,
|
|
placePawns, placeRemaining, toFen, BoardState (..))
|
|
import System.Random (newStdGen)
|
|
|
|
draw :: ChessBoard -> IO ()
|
|
draw b = do
|
|
showXAxis >> drawLine
|
|
mapM_ (\b@(p, (x,y)) ->
|
|
case x of 'h' -> putStr (" | " <> show p <> " | " <> show y <> "\n") >> drawLine
|
|
'a' -> putStr (show y <> " | " <> show p)
|
|
_ -> putStr (" | " <> show p)
|
|
)
|
|
b
|
|
showXAxis >> putStrLn "" >> putStrLn (toFen b)
|
|
|
|
where
|
|
drawLine = putStrLn (" " <> replicate 33 '-')
|
|
showXAxis = do
|
|
putStr " "
|
|
mapM_ (\(_, (x, _)) -> putStr $ " " <> [x]) (take 8 b)
|
|
putStrLn ""
|
|
|
|
main :: IO ()
|
|
main = BoardState emptyBoard <$> newStdGen >>= draw . evalState buildBoard
|
|
where
|
|
buildBoard = placeKings >> placePawns >> placeRemaining >> getBoard
|