Hello there!
As a newbie, and in order to learn elm, I started to write a tic tac toe
game. I wanted to start by drawing the game area but I'm stuck with one
thing. I decided that my area was a list of list of Box : List (List Box).
A box is defined by an id and maybe a player (so that I can track if a box
was filled by a player or not). With procedural languages, I can do
something like this:
for(var i = 0; i < 3; i++ {
for (var j = 0; j < 3,; j++) {
drawBox(area[i][j]);
}
}
But I can't figure out how to do this in elm... It does not even compile,
but that's because I don't fully understand List.map...
Here is the code I started writing. If someone can help me, I would really
appreciate!
import Html.App as App
import Html exposing (..)
import Html.Attributes exposing(..)
main =
App.program { init = init, update = update, view = view, subscriptions
= \_ -> Sub.none}
type alias Player =
{
name: String
,shape: String
,score: Int
}
type alias Model =
{
player1: Player
,player2: Player
}
type alias Box =
{
id: Int
,shape: Maybe Player
}
area: List (List Box)
area =
[
[Box 1 Nothing, Box 2 Nothing, Box 3 Nothing]
,[Box 4 Nothing, Box 5 Nothing, Box 6 Nothing]
,[Box 7 Nothing, Box 8 Nothing, Box 9 Nothing]
]
init: (Model, Cmd Msg)
init =
(Model {name = "Player 1", shape = "X", score = 0 } {name = "Player 2",
shape = "O", score = 0}, Cmd.none)
type Msg = None
update: Msg -> Model -> (Model, Cmd Msg)
update msg model =
case msg of
None ->
(model, Cmd.none)
view: Model -> Html Msg
view model =
div []
[
span[style [("font-weight", "bold")]][text model.player1.name]
,span[style [("text-decoration", "underline")]] [text
(toString(model.player1.score))]
,span[style [("margin-right", "15px")]][]
,span[style [("text-decoration", "underline")]] [text
(toString(model.player2.score))]
,span[style [("font-weight", "bold")]][text model.player2.name]
,div[]
[
area
|> List.map
|> List.map (\box -> span[id box.id, style [("border", "1px solid
black")]][])
|> div[style [("border", "1px solid black")]]
]
]
--
You received this message because you are subscribed to the Google Groups "Elm
Discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.