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
|
-- Wanneer een kaart gevonden is, wordt deze teruggegeven. Anders wordt
|
||||||
-- een error teruggegeven.
|
-- een error teruggegeven.
|
||||||
find :: Coordinate -> [Card] -> Card
|
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.
|
-- Geef een permutatie van een gegeven lijst terug.
|
||||||
-- Hint: Kijk zeker eens naar de System.Random en
|
-- Hint: Kijk zeker eens naar de System.Random en
|
||||||
|
@ -115,14 +115,14 @@ generateShuffledCards :: Int -> [Card]
|
||||||
-- TODO Dit moet nog verder uitgeklaard worden !!
|
-- TODO Dit moet nog verder uitgeklaard worden !!
|
||||||
-- TODO Hoe bepalen we de coördinaten van de kaarten?
|
-- 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
|
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)
|
colorsOnce = generateColors (n `div` 2)
|
||||||
|
|
||||||
-- Controleer of een positie op het spelbord een kaart bevat.
|
-- Controleer of een positie op het spelbord een kaart bevat.
|
||||||
-- Om de kaarten van het huidige speelbord op te vragen, gebruik
|
-- Om de kaarten van het huidige speelbord op te vragen, gebruik
|
||||||
-- 'cards initBoard'
|
-- 'cards initBoard'
|
||||||
hasCard :: Coordinate -> Bool
|
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
|
-- Controleer of de selector vanaf een gegeven locatie in een
|
||||||
-- gegeven richting kan bewegen.
|
-- 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 = board{turned (1,1),generateColor 1.1,Hidden):[]}
|
||||||
flipCard target board
|
flipCard target board
|
||||||
-- TODO Maak deze lamdba mooier.
|
-- 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 {
|
| otherwise = board {
|
||||||
cards = showCard target $ cards board -- Toon de kaart in de lijst van kaarten.
|
cards = showCard target $ cards board -- Toon de kaart in de lijst van kaarten.
|
||||||
, turned = flipped ++ turned board -- Voeg toe aan 'omgedraaide 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.
|
-- Reset de laatste omgedraaide kaarten terug naar de `Hidden` status.
|
||||||
resetTurned :: Board -> Board
|
resetTurned :: Board -> Board
|
||||||
|
@ -253,3 +253,8 @@ generateColor hue = makeColor r g b 1
|
||||||
-- Update het bord in elke stap.
|
-- Update het bord in elke stap.
|
||||||
step :: Float -> Board -> Board
|
step :: Float -> Board -> Board
|
||||||
step _ b = b
|
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