From ebb27755d283f24a06085f64590a15de2ce6158e Mon Sep 17 00:00:00 2001 From: Kiana Sheibani Date: Wed, 25 Jan 2023 15:49:30 -0500 Subject: [PATCH] Implmement display system --- src/Game/Display.hs | 24 ++++++++++++++++++++++++ src/Game/Engine.hs | 3 ++- 2 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 src/Game/Display.hs diff --git a/src/Game/Display.hs b/src/Game/Display.hs new file mode 100644 index 0000000..99d3be7 --- /dev/null +++ b/src/Game/Display.hs @@ -0,0 +1,24 @@ +{-# LANGUAGE Arrows #-} +{-# LANGUAGE OverloadedRecordDot #-} +{-# LANGUAGE ViewPatterns #-} + +module Game.Display where + +import Control.Monad +import Control.Monad.Trans.MSF.Reader +import Control.Monad.Trans.MSF.Writer +import Data.Maybe +import Data.MonadicStreamFunction +import Game.State +import Game.Utils +import Graphics.Gloss +import Graphics.Gloss.Interface.IO.Game + +getSquare :: (Int, Int) -> Picture +getSquare (toEnum -> x, toEnum -> y) = + translate (x * 25) (y * 25) $ rectangleSolid 25 25 + +displayState :: Monad m => MSF (DrawerT m) GameState () +displayState = proc state -> do + draw -< mconcat $ color green . getSquare <$> state.snakePos + draw -< color red $ getSquare state.berryPos diff --git a/src/Game/Engine.hs b/src/Game/Engine.hs index 741f7b3..67d4807 100644 --- a/src/Game/Engine.hs +++ b/src/Game/Engine.hs @@ -59,4 +59,5 @@ mainSF = proc () -> do -- undefined is safe here because the first frame is guaranteed to be a tick state <- hold undefined -< state' - returnA -< () + -- Display the current state + displayState -< state