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: *
|
-- * Opmerkingen: *
|
||||||
|
-- * 1. *
|
||||||
-- * Ik heb bij sommige functies de argumenten aangepast zodat ik *
|
-- * Ik heb bij sommige functies de argumenten aangepast zodat ik *
|
||||||
-- * aan pattern matching zou kunnen doen. *
|
-- * 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.
|
-- Geeft de richting van een zet aan.
|
||||||
|
@ -228,21 +233,36 @@ render board = pictures [
|
||||||
, renderCards $ cards board
|
, renderCards $ cards board
|
||||||
]
|
]
|
||||||
|
|
||||||
-- Hulpfunctie die nagaat of een bepaalde toets is ingedrukt.
|
-- Hulpfunctie die nagaat of een bepaalde speciale toets is ingedrukt.
|
||||||
isKey :: SpecialKey -> Event -> Bool
|
isSpecialKey :: SpecialKey -> Event -> Bool
|
||||||
isKey k1 (EventKey (SpecialKey k2) Down _ _) = k1 == k2
|
isSpecialKey k1 (EventKey (SpecialKey k2) Down _ _) = k1 == k2
|
||||||
isKey _ _ = False
|
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.
|
-- Handel alle toetsaanslagen af.
|
||||||
-- Hint: Je kan gebruikmaken van de isKey hulpfunctie.
|
-- Hint: Je kan gebruikmaken van de isKey hulpfunctie.
|
||||||
-- TODO unfinished
|
|
||||||
handleInput :: Event -> Board -> Board
|
handleInput :: Event -> Board -> Board
|
||||||
handleInput ev board
|
handleInput ev board
|
||||||
| isKey KeySpace ev || isKey KeyEnter ev = nextBoard board
|
| isSpecialKey KeySpace ev || isSpecialKey KeyEnter ev = nextBoard board
|
||||||
| isKey KeyUp ev = move board up
|
-- Pijltjes voor de doorsnee gebruikers
|
||||||
| isKey KeyDown ev = move board down
|
| isSpecialKey KeyUp ev = move board up
|
||||||
| isKey KeyLeft ev = move board left
|
| isSpecialKey KeyDown ev = move board down
|
||||||
| isKey KeyRight ev = move board right
|
| 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
|
| otherwise = board
|
||||||
|
|
||||||
-- Startpunt
|
-- Startpunt
|
||||||
|
|
Reference in a new issue