diff --git a/src/Main.hs b/src/Main.hs index 33a22c2..18b1242 100644 --- a/src/Main.hs +++ b/src/Main.hs @@ -8,8 +8,13 @@ import Data.Fixed (mod') -- ****************************************************************** -- * Opmerkingen: * +-- * 1. * -- * Ik heb bij sommige functies de argumenten aangepast zodat ik * -- * aan pattern matching zou kunnen doen. * +-- * 2. * +-- * Ik heb de functie isKey hernoemd naar isSpecialKey en ik heb * +-- * een extra functie isKey aangemaakt zodat ik ook andere letters * +-- * van het toetsenbord als input kan gebruiken. * -- ****************************************************************** -- Geeft de richting van een zet aan. @@ -228,21 +233,36 @@ render board = pictures [ , renderCards $ cards board ] --- Hulpfunctie die nagaat of een bepaalde toets is ingedrukt. -isKey :: SpecialKey -> Event -> Bool -isKey k1 (EventKey (SpecialKey k2) Down _ _) = k1 == k2 -isKey _ _ = False +-- Hulpfunctie die nagaat of een bepaalde speciale toets is ingedrukt. +isSpecialKey :: SpecialKey -> Event -> Bool +isSpecialKey k1 (EventKey (SpecialKey k2) Down _ _) = k1 == k2 +isSpecialKey _ _ = False + +-- Hulpfunctie die nagaat of een bepaalde normale toets is ingedrukt. +isKey :: Char -> Event -> Bool +isKey k1 (EventKey (Char k2) Down _ _) = k1 == k2 +isKey _ _ = False -- Handel alle toetsaanslagen af. -- Hint: Je kan gebruikmaken van de isKey hulpfunctie. --- TODO unfinished handleInput :: Event -> Board -> Board handleInput ev board - | isKey KeySpace ev || isKey KeyEnter ev = nextBoard board - | isKey KeyUp ev = move board up - | isKey KeyDown ev = move board down - | isKey KeyLeft ev = move board left - | isKey KeyRight ev = move board right + | isSpecialKey KeySpace ev || isSpecialKey KeyEnter ev = nextBoard board + -- Pijltjes voor de doorsnee gebruikers + | isSpecialKey KeyUp ev = move board up + | isSpecialKey KeyDown ev = move board down + | isSpecialKey KeyLeft ev = move board left + | isSpecialKey KeyRight ev = move board right + -- WASD voor de gamers + | isKey 'w' ev = move board up + | isKey 's' ev = move board down + | isKey 'a' ev = move board left + | isKey 'd' ev = move board right + -- Vim keybinds voor de nerds + | isKey 'k' ev = move board up + | isKey 'j' ev = move board down + | isKey 'h' ev = move board left + | isKey 'l' ev = move board right | otherwise = board -- Startpunt