-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDataTypes.hs
More file actions
69 lines (52 loc) · 1.22 KB
/
DataTypes.hs
File metadata and controls
69 lines (52 loc) · 1.22 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
{-# LANGUAGE DeriveGeneric #-}
module DataTypes where
import GHC.Generics (Generic)
import Data.Aeson (ToJSON, FromJSON)
-- Guess Game
data GuessState = GuessState
{ secret :: Int
, attempts :: Int
} deriving (Show, Eq, Generic)
instance ToJSON GuessState
instance FromJSON GuessState
data GuessResult
= TooLow
| TooHigh
| Correct
deriving (Show, Eq, Generic)
instance ToJSON GuessResult
instance FromJSON GuessResult
-- Tic Tac Toe
data Player = X | O
deriving (Show, Eq, Generic)
instance ToJSON Player
instance FromJSON Player
type Board = [Maybe Player]
data TTTState = TTTState
{ board :: Board
, current :: Player
} deriving (Show, Eq, Generic)
instance ToJSON TTTState
instance FromJSON TTTState
data TTTResult
= Win Player
| Draw
| Ongoing
deriving (Show, Eq, Generic)
instance ToJSON TTTResult
instance FromJSON TTTResult
-- Hangman
data HangmanState = HangmanState
{ word :: String
, guessed :: [Char]
, lives :: Int
} deriving (Show, Eq, Generic)
instance ToJSON HangmanState
instance FromJSON HangmanState
data HangmanResult
= HangmanWin
| HangmanLose
| HangmanOngoing
deriving (Show, Eq, Generic)
instance ToJSON HangmanResult
instance FromJSON HangmanResult