Code cleanup: firstOfThree
Functie firstOfThree toegevoegd om zo heel wat lambda's weg te werken en betere leesbaarheid
This commit is contained in:
parent
1f236ede83
commit
4a4aedbe20
1 changed files with 10 additions and 5 deletions
15
src/Main.hs
15
src/Main.hs
|
@ -97,7 +97,7 @@ match (_, c1, _) (_, c2, _) = c1 == c2
|
|||
-- Wanneer een kaart gevonden is, wordt deze teruggegeven. Anders wordt
|
||||
-- een error teruggegeven.
|
||||
find :: Coordinate -> [Card] -> Card
|
||||
find c0 cards = head $ filter (\(c1,_,_) -> c1 == c0) cards
|
||||
find c0 cards = head $ filter ((c0 ==).firstOfThree) cards
|
||||
|
||||
-- Geef een permutatie van een gegeven lijst terug.
|
||||
-- Hint: Kijk zeker eens naar de System.Random en
|
||||
|
@ -115,14 +115,14 @@ generateShuffledCards :: Int -> [Card]
|
|||
-- TODO Dit moet nog verder uitgeklaard worden !!
|
||||
-- TODO Hoe bepalen we de coördinaten van de kaarten?
|
||||
generateShuffledCards n = map (\(x,y) -> (x,y,Hidden)) $ zip (zip [1..n] [1..n]) colors
|
||||
where colors = shuffleList $ colorsOnce ++ colorsOnce
|
||||
where colors = shuffleList $ colorsOnce ++ colorsOnce
|
||||
colorsOnce = generateColors (n `div` 2)
|
||||
|
||||
-- Controleer of een positie op het spelbord een kaart bevat.
|
||||
-- Om de kaarten van het huidige speelbord op te vragen, gebruik
|
||||
-- 'cards initBoard'
|
||||
hasCard :: Coordinate -> Bool
|
||||
hasCard c0 = any (\(c1,_,_) -> c1 == c0) $ cards initBoard
|
||||
hasCard c0 = any ((c0 ==).firstOfThree) $ cards initBoard
|
||||
|
||||
-- Controleer of de selector vanaf een gegeven locatie in een
|
||||
-- gegeven richting kan bewegen.
|
||||
|
@ -162,12 +162,12 @@ flipCard :: Coordinate -> Board -> Board
|
|||
-- flipCard target board = board{turned (1,1),generateColor 1.1,Hidden):[]}
|
||||
flipCard target board
|
||||
-- TODO Maak deze lamdba mooier.
|
||||
| target `elem` (map (\(a,_,_) -> a) (turned board)) = board -- Controleer al omgedraaid?
|
||||
| target `elem` (map firstOfThree (turned board)) = board -- Controleer al omgedraaid?
|
||||
| otherwise = board {
|
||||
cards = showCard target $ cards board -- Toon de kaart in de lijst van kaarten.
|
||||
, turned = flipped ++ turned board -- Voeg toe aan 'omgedraaide kaarten'.
|
||||
}
|
||||
where flipped = filter (\(a,_,_) -> a == target) $ cards board
|
||||
where flipped = filter ((target ==).firstOfThree) $ cards board
|
||||
|
||||
-- Reset de laatste omgedraaide kaarten terug naar de `Hidden` status.
|
||||
resetTurned :: Board -> Board
|
||||
|
@ -253,3 +253,8 @@ generateColor hue = makeColor r g b 1
|
|||
-- Update het bord in elke stap.
|
||||
step :: Float -> Board -> Board
|
||||
step _ b = b
|
||||
|
||||
-- Haal het eerste element uit een drietupel, bijvoorbeeld om de
|
||||
-- coördinaten uit een kaart-object te halen.
|
||||
firstOfThree :: (a,b,c) -> a
|
||||
firstOfThree (a,_,_) = a
|
||||
|
|
Reference in a new issue