Added a deck of cards functionality
This commit is contained in:
		
							parent
							
								
									58f9a03123
								
							
						
					
					
						commit
						7a4ef79bf9
					
				
					 5 changed files with 76 additions and 15 deletions
				
			
		
							
								
								
									
										46
									
								
								lib/CardDeck.hs
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								lib/CardDeck.hs
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,46 @@ | |||
| module CardDeck ( | ||||
|     generateCards, | ||||
|     generateShuffledCards | ||||
| ) where | ||||
| 
 | ||||
| import Shuffle | ||||
| 
 | ||||
| -- Colors of cards | ||||
| data CardType = Clubs | ||||
|               | Diamonds | ||||
|               | Hearts | ||||
|               | Spades | ||||
|               | NoneType | ||||
|               deriving (Show, Enum, Eq) | ||||
| 
 | ||||
| -- Values of cards | ||||
| data CardValue = Ace | ||||
|                | Two | ||||
|                | Three | ||||
|                | Four | ||||
|                | Five | ||||
|                | Six | ||||
|                | Seven | ||||
|                | Eight | ||||
|                | Nine | ||||
|                | Ten | ||||
|                | Jack | ||||
|                | Queen | ||||
|                | King | ||||
|                | NoneValue | ||||
|                deriving (Show, Enum, Eq) | ||||
| 
 | ||||
| -- A card has a type and a value | ||||
| type Card = (CardType, CardValue) | ||||
| 
 | ||||
| -- A deck of cards | ||||
| type Deck = [Card] | ||||
| 
 | ||||
| generateCards :: Deck | ||||
| generateCards = [(cType, cValue) | cType <- types, cValue <- values] | ||||
|     where types  = init $ enumFrom Clubs | ||||
|           values = init $ enumFrom Ace  | ||||
| 
 | ||||
| generateShuffledCards :: Deck | ||||
| generateShuffledCards = shuffle generateCards | ||||
| 
 | ||||
							
								
								
									
										24
									
								
								lib/Shuffle.hs
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								lib/Shuffle.hs
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,24 @@ | |||
| module Shuffle ( | ||||
|     shuffle | ||||
| ) where | ||||
| 
 | ||||
| import Data.List | ||||
| import System.Random | ||||
| 
 | ||||
| seed = 20 | ||||
| 
 | ||||
| -- Shuffle a list of values. | ||||
| shuffle :: [a] -> [a] | ||||
| shuffle l = map (l !!) $ generateIndices $ length l | ||||
| 
 | ||||
| -- Generate indices to map the elements of a list over so that they  | ||||
| -- are randomly shuffled. | ||||
| generateIndices :: Int -> [Int] | ||||
| generateIndices size = take size uniqueList | ||||
|     where randomList = randomRs (0, size - 1) randomGen | ||||
|           uniqueList = nub randomList | ||||
| 
 | ||||
| -- Generate a random generator | ||||
| -- TODO Écht random maken? | ||||
| randomGen :: StdGen | ||||
| randomGen = mkStdGen seed | ||||
|  | @ -1,10 +0,0 @@ | |||
| module VoorbeeldModule | ||||
|   ( hoi -- oplijsting van de publieke functies - als je deze lijst en de haakjes weglaat, wordt alles publiek | ||||
|   , hallo | ||||
|   ) where | ||||
| 
 | ||||
| hoi :: String | ||||
| hoi = "Hoi" | ||||
| 
 | ||||
| hallo :: String | ||||
| hallo = "Hallo" | ||||
		Reference in a new issue