Meer input handling
Ook WASD en Vim keybinds toegevoegd
This commit is contained in:
parent
747ed6ea67
commit
04b03ec728
1 changed files with 30 additions and 10 deletions
40
src/Main.hs
40
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
|
||||
|
|
Reference in a new issue