Anonymous user
Generate random chess position: Difference between revisions
m
→{{header|Haskell}}
Line 704:
replaceSquareByPos ((ChessPiece King Black), p2) b)
placePawns ::
placePawns
where go :: ChessBoard -> Int -> IO ChessBoard
go b'' 0 = pure b''
go b'' n = do
pawn@(ChessPiece _ color) <- randomPawn
if promoted
|| enpassant color == snd pos || firstPos color == snd pos
then go b'' n
else
go (replaceSquareByPos (
promoted White = 8
promoted Black = 1
Line 723 ⟶ 724:
num :: IO Int
num = getStdRandom (randomR (1,
randomPawn :: IO Square
randomPawn = ChessPiece Pawn <$> rColor
where rColor :: IO PieceColor
rColor = getStdRandom (random)
placeRemaining :: ChessBoard -> IO ChessBoard
Line 786 ⟶ 792:
main =
placeKings emptyBoard >>=
placePawns
placeRemaining >>=
draw</lang>
|