You will need to add another if-else condition to your physics function, where you compare b.x with w1x and w2x.
On Mon, Jun 20, 2016 at 8:47 PM, <[email protected]> wrote: > Below is my whole code. The wall is moving. I wonder know how to determine > whether the bird touch the two walls. The bird will die if it touch the > walls when the walls stop moving. > > > > > import Color exposing (..) > import Graphics.Collage exposing (..) > import Graphics.Element exposing (..) > import Keyboard > import Text > import Time exposing (..) > import Window > > -- SIGNALS > > bird = { x=0, y=0, vx=0, vy=0 } > > -- moves the walls only > physics t (b, w1, w2, w1x, w2x) = if w1x < w2x then > ({ b | y = b.y + t*b.vy , x = b.x + t*b.vx }, > w1 |> move (5,0), > w2 |> move (-5,0), > w1x + 5, > w2x - 5 > ) > else > (b, w1, w2, w1x, w2x) > > -- moves the bird only > walk {x,y} (b, w1, w2, w1x, w2x) = ({ b | vx = toFloat x, vy = toFloat y > }, w1, w2, w1x, w2x) > > step (dt, keys) = > walk keys >> physics dt > > (gameWidth,gameHeight) = (500,500) > > > wall1 = toForm (collage gameWidth gameHeight > [ rect 100 100 |> filled (rgb 250 230 0) |> move (50-gameWidth/2, > gameHeight/2-50) > ,rect 80 100 |> filled (rgb 250 230 0) |> move (40-gameWidth/2, > gameHeight/2-150) > , rect 50 100 |> filled (rgb 250 230 0) |> move (25-gameWidth/2, > gameHeight/2-250) > , rect 100 100 |> filled (rgb 250 230 0) |> move (50-gameWidth/2, > gameHeight/2-350) > , rect 80 100 |> filled (rgb 250 230 0) |> move (40-gameWidth/2, > gameHeight/2-450) > > ]) > > wall2 = toForm (collage gameWidth gameHeight > [ rect 100 100 |> filled (rgb 250 230 0) |> move (gameWidth/2-50, > gameHeight/2-50) > , rect 120 100 |> filled (rgb 250 230 0) |> move (gameWidth/2-60, > gameHeight/2-150) > , rect 50 100 |> filled (rgb 250 230 0) |> move (gameWidth/2-25, > gameHeight/2-250) > , rect 100 100 |> filled (rgb 250 230 0) |> move (gameWidth/2-50, > gameHeight/2-350) > , rect 120 100 |> filled (rgb 250 230 0) |> move (gameWidth/2-60, > gameHeight/2-450)]) > > > render (w',h') (bird, wall1, wall2, w1x, w2x) = > let (w,h) = (toFloat w', toFloat h') > src = "bee.PNG" > in collage w' h' > > [ rect gameWidth gameHeight |> filled (rgb 174 238 238) > , toForm (image 50 50 src) |> move (bird.x, bird.y) > , wall1 > , wall2 > -- text (Text.fromString (toString (w1x, w2x))) > ] > > > -- bird > input = let delta = Signal.map (\t -> t/10) (fps 10) > in Signal.sampleOn delta (Signal.map2 (,) delta Keyboard.arrows) > > main = Signal.map2 render Window.dimensions (Signal.foldp step (bird, > wall1, wall2, -gameWidth/2 + 100, gameWidth/2 - 100) input) > > -- > 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. > -- 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.
