a one dimensional cellular automata, using comonads
選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

35 行
706B

  1. module Main where
  2. import Comonad
  3. import Automata
  4. import BrickStuff
  5. import Options
  6. import Spaces.Space2
  7. import Brick
  8. import Brick.BChan
  9. import Control.Monad
  10. import Control.Applicative
  11. import Control.Monad.IO.Class
  12. import Control.Concurrent
  13. import qualified Graphics.Vty as V
  14. ---------------
  15. -- main loop --
  16. ---------------
  17. main :: IO ()
  18. main = do
  19. options <- parseArgs
  20. let w = (optWidth options)
  21. let h = (optHeight options)
  22. chan <- newBChan 1
  23. forkIO $ forever $ do
  24. writeBChan chan Tick
  25. threadDelay $ (optTime options) * 10000
  26. g <- initGame
  27. let buildVty = V.mkVty V.defaultConfig
  28. initialVty <- buildVty
  29. void $ customMain initialVty buildVty (Just chan) (app h w) (clamp2 w h g)