module Pieces where import Data.Char -- alle mogelijke soorten stukken data Pieces = King |Queen |Rook |Bishop |Knight |Pawn deriving Eq -- Een vakje kan een stuk bevatten of kan leeg zijn. data Vakje = Vak Color Pieces | Empty -- de kleur kan wit of zwart zijn. data Color = White | Black deriving Eq -- Laat de corresponderede letter van het stuk zien. instance Show Pieces where show King = "K" show Queen = "Q" show Rook = "R" show Bishop = "B" show Knight = "N" show Pawn = "P" -- Als het vakje leeg is laat dan een spatie zien, is het een stuk? laat dan de hoofd letter of de kleine letter afhankelijk van de kleur zien. instance Show Vakje where show Empty = " " show (Vak color pieces) = if color == White then map toLower (show pieces) else show pieces isKleur :: Vakje -> Color -> Bool isKleur (Vak color piece) kleur = color == kleur kleurIs :: Vakje -> Color kleurIs (Vak color piece) = color isPiece :: Vakje -> Pieces isPiece (Vak color piece) = piece isVakje :: Vakje -> Vakje -> Bool isVakje v@(Vak a b) (Vak c d) = isKleur v c && (isPiece v )== d -- draait de kleur om. not :: Color -> Color not White = Black not Black = White