From b345e38e36377d9767ef68276f64884ece92c996 Mon Sep 17 00:00:00 2001 From: Mikkel Thestrup Date: Sat, 27 Dec 2025 19:11:26 +0100 Subject: Style(*): Changed code style to use 2 spcae indent and more. --- app/Snakey/TwoSnakes.hs | 116 ++++++++++++++++++++++++++---------------------- 1 file changed, 62 insertions(+), 54 deletions(-) (limited to 'app/Snakey') diff --git a/app/Snakey/TwoSnakes.hs b/app/Snakey/TwoSnakes.hs index 2f02a99..cb7d291 100755 --- a/app/Snakey/TwoSnakes.hs +++ b/app/Snakey/TwoSnakes.hs @@ -4,67 +4,75 @@ import Scratchy.Syntax -- Helper functions moveSnake :: SpritePtr -> [SpritePtr] -> Dir -> SProg () -moveSnake h tailSeg dir = - OnTargetReached h (\pos -> - let newPos = nextCell dir pos in - InspectCell newPos (\case - HasSprite -> - SetBackgroundColor black $ - After 1 (SetBackgroundColor white $ Pure ()) $ - Pure () - HasBarrier -> - SetBackgroundColor red $ - After 1 (SetBackgroundColor white $ Pure ()) $ - Pure () - IsFree -> - SetTarget h newPos $ - moveTail pos tailSeg $ - Pure () - ) - ) $ Pure () +moveSnake h t d = + OnTargetReached h (\pos -> + let newPos = nextCell d pos in + InspectCell newPos (\case + HasSprite -> + SetBackgroundColor black $ + After 1 (SetBackgroundColor white $ Pure ()) $ + Pure () + HasBarrier -> + SetBackgroundColor red $ + After 1 (SetBackgroundColor white $ Pure ()) $ + Pure () + IsFree -> + SetTarget h newPos $ + moveTail pos t $ + Pure () + ) + ) $ + Pure () -moveTail :: (Int, Int) -> [SpritePtr] -> SProg () -> SProg () +moveTail :: Cell -> [SpritePtr] -> SProg () -> SProg () moveTail _ [] cont = cont moveTail prevPos (t:ts) cont = - GetTarget t (\curPos -> - SetTarget t prevPos $ - moveTail curPos ts cont - ) + GetTarget t (\curPos -> + SetTarget t prevPos $ + moveTail curPos ts cont + ) twoSnakes :: SProg () twoSnakes = - -- Green snake - NewSprite (5, 5) (Color green $ circleSolid (cellSize * 0.6)) $ \greenH -> - NewSprite (4, 5) (Color green $ rectangleSolid (cellSize * 0.9) (cellSize * 0.9)) $ \greenT1 -> - NewSprite (3, 5) (Color green $ rectangleSolid (cellSize * 0.9) (cellSize * 0.9)) $ \greenT2 -> - NewSprite (2, 5) (Color green $ rectangleSolid (cellSize * 0.9) (cellSize * 0.9)) $ \greenT3 -> - NewSprite (1, 5) (Color green $ rectangleSolid (cellSize * 0.9) (cellSize * 0.9)) $ \greenT4 -> - NewSprite (0, 5) (Color green $ rectangleSolid (cellSize * 0.9) (cellSize * 0.9)) $ \greenT5 -> - NewSprite (0, 4) (Color green $ rectangleSolid (cellSize * 0.9) (cellSize * 0.9)) $ \greenT6 -> - NewSprite (0, 3) (Color green $ rectangleSolid (cellSize * 0.9) (cellSize * 0.9)) $ \greenT7 -> - let greenTail = [greenT1,greenT2,greenT3,greenT4,greenT5,greenT6,greenT7] in + let headRadius = cellSize * 0.6 + tailSize = cellSize * 0.9 + in - -- Blue snake - NewSprite (15, 15) (Color blue $ circleSolid (cellSize * 0.6)) $ \blueH -> - NewSprite (16, 15) (Color blue $ rectangleSolid (cellSize * 0.9) (cellSize * 0.9)) $ \blueT1 -> - NewSprite (17, 15) (Color blue $ rectangleSolid (cellSize * 0.9) (cellSize * 0.9)) $ \blueT2 -> - NewSprite (18, 15) (Color blue $ rectangleSolid (cellSize * 0.9) (cellSize * 0.9)) $ \blueT3 -> - NewSprite (19, 15) (Color blue $ rectangleSolid (cellSize * 0.9) (cellSize * 0.9)) $ \blueT4 -> - NewSprite (19, 16) (Color blue $ rectangleSolid (cellSize * 0.9) (cellSize * 0.9)) $ \blueT5 -> - NewSprite (19, 17) (Color blue $ rectangleSolid (cellSize * 0.9) (cellSize * 0.9)) $ \blueT6 -> - NewSprite (19, 18) (Color blue $ rectangleSolid (cellSize * 0.9) (cellSize * 0.9)) $ \blueT7 -> - let blueTail = [blueT1,blueT2,blueT3,blueT4,blueT5,blueT6,blueT7] in + -- Green snake + NewSprite (5, 5) (Color green $ circleSolid headRadius) $ \gHead -> + NewSprite (4, 5) (Color green $ rectangleSolid tailSize tailSize) $ \gt1 -> + NewSprite (3, 5) (Color green $ rectangleSolid tailSize tailSize) $ \gt2 -> + NewSprite (2, 5) (Color green $ rectangleSolid tailSize tailSize) $ \gt3 -> + NewSprite (1, 5) (Color green $ rectangleSolid tailSize tailSize) $ \gt4 -> + NewSprite (0, 5) (Color green $ rectangleSolid tailSize tailSize) $ \gt5 -> + NewSprite (0, 4) (Color green $ rectangleSolid tailSize tailSize) $ \gt6 -> + NewSprite (0, 3) (Color green $ rectangleSolid tailSize tailSize) $ \gt7 -> - -- Green snake movement - OnKeyEvent (Char 'w') (moveSnake greenH greenTail U) $ - OnKeyEvent (Char 's') (moveSnake greenH greenTail D) $ - OnKeyEvent (Char 'a') (moveSnake greenH greenTail L) $ - OnKeyEvent (Char 'd') (moveSnake greenH greenTail R) $ + -- Blue snake + NewSprite (15, 15) (Color blue $ circleSolid headRadius) $ \bHead -> + NewSprite (16, 15) (Color blue $ rectangleSolid tailSize tailSize) $ \bt1 -> + NewSprite (17, 15) (Color blue $ rectangleSolid tailSize tailSize) $ \bt2 -> + NewSprite (18, 15) (Color blue $ rectangleSolid tailSize tailSize) $ \bt3 -> + NewSprite (19, 15) (Color blue $ rectangleSolid tailSize tailSize) $ \bt4 -> + NewSprite (19, 16) (Color blue $ rectangleSolid tailSize tailSize) $ \bt5 -> + NewSprite (19, 17) (Color blue $ rectangleSolid tailSize tailSize) $ \bt6 -> + NewSprite (19, 18) (Color blue $ rectangleSolid tailSize tailSize) $ \bt7 -> - -- Blue snake movement - OnKeyEvent (Char 'i') (moveSnake blueH blueTail U) $ - OnKeyEvent (Char 'k') (moveSnake blueH blueTail D) $ - OnKeyEvent (Char 'j') (moveSnake blueH blueTail L) $ - OnKeyEvent (Char 'l') (moveSnake blueH blueTail R) $ + -- List of tail sprites + let bTail = [bt1, bt2, bt3, bt4, bt5, bt6, bt7] + gTail = [gt1, gt2, gt3, gt4, gt5, gt6, gt7] + in - Pure () + -- Green snake movement + OnKeyEvent (Char 'w') (moveSnake gHead gTail U) $ + OnKeyEvent (Char 's') (moveSnake gHead gTail D) $ + OnKeyEvent (Char 'a') (moveSnake gHead gTail L) $ + OnKeyEvent (Char 'd') (moveSnake gHead gTail R) $ + + -- Blue snake movement + OnKeyEvent (Char 'i') (moveSnake bHead bTail U) $ + OnKeyEvent (Char 'k') (moveSnake bHead bTail D) $ + OnKeyEvent (Char 'j') (moveSnake bHead bTail L) $ + OnKeyEvent (Char 'l') (moveSnake bHead bTail R) $ + + Pure () -- cgit v1.2.3-70-g09d2