Skip to content

Commit

Permalink
#7 Add randomization of upcoming tetroid on startup.
Browse files Browse the repository at this point in the history
  • Loading branch information
TobiasWen committed Aug 14, 2019
1 parent 87bfe65 commit 5d4f673
Show file tree
Hide file tree
Showing 6 changed files with 43 additions and 28 deletions.
7 changes: 4 additions & 3 deletions src/Main.elm
Original file line number Diff line number Diff line change
@@ -1,16 +1,17 @@
module Tetris exposing (main)

import Browser
import Messages exposing (Msg)
import Model exposing (Model, initialModel)
import Update exposing (Msg, update)
import Update exposing (update)
import View exposing (view)


main : Program () Model Msg
main =
Browser.element
{ init = \_ -> ( initialModel, Cmd.none )
{ init = \_ -> initialModel
, subscriptions = \_ -> Sub.none
, view = View.view
, update = \msg model -> ( Update.update msg model, Cmd.none )
, update = \msg model -> update msg model
}
3 changes: 2 additions & 1 deletion src/Messages.elm
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,12 @@ module Messages exposing (Msg(..))

import Movement exposing (Direction)
import Rotation exposing (Axis)
import Tetroids exposing (Tetroid)


type Msg
= NoOp
| Start
| Start Tetroid
| Stop
| Tick Float
| FastFallDown Bool
Expand Down
24 changes: 14 additions & 10 deletions src/Model.elm
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@ module Model exposing (Model, initialModel)

import Dimensions exposing (WorldDimensions)
import Grid exposing (Cell, Color, Grid, Position)
import Messages exposing (Msg(..))
import Random exposing (..)
import Tetroids exposing (..)


Expand All @@ -16,8 +18,8 @@ type GameState

type alias Model =
{ dimensions : WorldDimensions
, activeTetroid : Tetroid
, upcomingTetroid : Tetroid
, activeTetroid : Maybe Tetroid
, upcomingTetroid : Maybe Tetroid
, grid : Grid
, gameState : GameState
, fastFallDown : Bool
Expand All @@ -32,12 +34,14 @@ initialWorldDimensions =
}


initialModel : Model
initialModel : ( Model, Cmd Msg )
initialModel =
{ dimensions = initialWorldDimensions
, activeTetroid = createBlueTetroid
, upcomingTetroid = createGreenTetroid
, grid = []
, gameState = Running
, fastFallDown = False
}
( { dimensions = initialWorldDimensions
, activeTetroid = Nothing
, upcomingTetroid = Nothing
, grid = []
, gameState = Running
, fastFallDown = False
}
, Random.generate Start tetroidGenerator
)
13 changes: 12 additions & 1 deletion src/Tetroids.elm
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
module Tetroids exposing (Tetroid, createBlueTetroid, createGreenTetroid, createOrangeTetroid, createPinkTetroid, createYellowTetroid, tetroids)
module Tetroids exposing (Tetroid, createBlueTetroid, createGreenTetroid, createOrangeTetroid, createPinkTetroid, createYellowTetroid, tetroidGenerator, tetroids)

import Grid exposing (Color, Grid, Position)
import Random exposing (..)



Expand Down Expand Up @@ -46,6 +47,16 @@ pink =
-- Tetroid creation


tetroidGenerator : Generator Tetroid
tetroidGenerator =
case tetroids of
x :: xs ->
Random.uniform x xs

[] ->
Random.uniform createBlueTetroid []


createTetroid : Color -> Position -> List Position -> Tetroid
createTetroid color center positions =
{ grid = List.map (\position -> { color = color, position = position }) positions
Expand Down
20 changes: 9 additions & 11 deletions src/Update.elm
Original file line number Diff line number Diff line change
@@ -1,16 +1,14 @@
module Update exposing (Msg(..), update)
module Update exposing (update)

import Messages exposing (Msg(..))
import Model exposing (Model)



-- Just placeholder. Will be placed in Messages.elm asap.


type Msg
= NoOp


update : Msg -> Model -> Model
update : Msg -> Model -> ( Model, Cmd Msg )
update msg model =
model
case msg of
Start tetroid ->
( { model | upcomingTetroid = Just tetroid }, Cmd.none )

_ ->
( model, Cmd.none )
4 changes: 2 additions & 2 deletions src/View.elm
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ module View exposing (view)
import Html exposing (Html, br, button, div, p, span, text)
import Html.Attributes exposing (class, disabled, style)
import Html.Events exposing (onClick)
import Messages exposing (Msg)
import Model exposing (Model)
import Update exposing (Msg)



Expand All @@ -15,5 +15,5 @@ import Update exposing (Msg)
view : Model -> Html Msg
view model =
div [ Html.Attributes.style "display" "flex", Html.Attributes.style "justify-content" "center" ]
[ Html.text "Hallo Welt!"
[ Html.text (Debug.toString model)
]

0 comments on commit 5d4f673

Please sign in to comment.