Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- module Main where
- import FRP.BearRiver
- import Control.Monad.Trans.MSF.Reader
- type Game = Ball
- type Ball = Int
- type GameEnv = ReaderT GameSettings
- data GameSettings
- = GameSettings
- { leftPlayerPos :: Int
- , rightPlayerPos :: Int
- }
- ballToRight :: Monad m => MSF (GameEnv m) () Ball
- ballToRight =
- count >>> arrM addToLeftPlayerPos
- where
- addToLeftPlayerPos =
- (n -> (n +) <$> asks leftPlayerPos)
- hitRight :: Monad m => MSF (GameEnv m) Ball Bool
- hitRight = arrM (i -> (i >=) <$> asks rightPlayerPos)
- module Main where
- import FRP.BearRiver
- import Control.Monad
- import Control.Monad.Trans.MSF.Reader
- import Control.Monad.Trans.MSF.Writer
- type Game = Ball
- type Ball = Int
- type GameEnv m =
- WriterT [String] (ReaderT GameSettings m)
- data GameSettings
- = GameSettings
- { leftPlayerPos :: Int
- , rightPlayerPos :: Int
- }
- ballToRight :: Monad m => MSF (GameEnv m) () Ball
- ballToRight =
- count >>> arrM addLeftPlayerPos >>> arrM checkHitR
- where
- addLeftPlayerPos =
- (n -> (n +) <$> asks leftPlayerPos)
- checkHitR n = do
- rp <- asks rightPlayerPos
- when (rp > n) $ tell ["Ball is at " ++ (show n)]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement