1
Fork 0

Meer input handling

Ook WASD en Vim keybinds toegevoegd
This commit is contained in:
Tibo De Peuter 2022-10-16 12:33:05 +02:00
parent 747ed6ea67
commit 04b03ec728

View file

@ -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