
module GameSkeleton where



{-- Part 1: Model the user input ----------------------------------------------

What information do you need to represent all relevant user input?

Task: Redefine `UserInput` to include all of the information you need.
      Redifene `userInput` to be a signal that correctly models the user
      input as described by `UserInput`.

------------------------------------------------------------------------------}

data UserInput = UserInput

userInput = constant UserInput

data Input = Input Float UserInput



{-- Part 2: Model the game ----------------------------------------------------

What information do you need to represent the entire game?

Tasks: Redefine `GameState` to represent your particular game.
       Redefine `defaultGame` to represent your initial game state.

For example, if you want to represent many objects that just have a position,
your GameState might just be a list of coordinates and your default game might
be an empty list (no objects at the start):

    data GameState = GameState [(Float,Float)]
    defaultGame = GameState []

------------------------------------------------------------------------------}

data GameState = GameState

defaultGame = GameState



{-- Part 3: Update the game ---------------------------------------------------

How does the game step from one state to another based on user input?

Task: redefine `stepGame` to use the UserInput and GameState
      you defined in parts 1 and 2. Maybe use some helper functions
      to break up the work, stepping smaller parts of the game.

------------------------------------------------------------------------------}

stepGame (Input delta (UserInput)) (GameState) = GameState



{-- Part 4: Display the game --------------------------------------------------

How should the GameState be displayed to the user?

Task: redefine `display` to use the GameState you defined in part 2.

------------------------------------------------------------------------------}

display (w,h) gameState = asText gameState



{-- That's all folks! ---------------------------------------------------------

The following code puts it all together and show it on screen.

------------------------------------------------------------------------------}

delta = fps 60
input = sampleOn delta (lift2 Input delta userInput)

gameState = foldp stepGame defaultGame input

main = lift2 display Window.dimensions gameState

Add Game Skeleton for easy game making.
Add Game Skeleton for easy game making.
