summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorMikkel Thestrup <mithe24@student.sdu.dk>2025-12-27 15:22:38 +0100
committerMikkel Thestrup <mithe24@student.sdu.dk>2025-12-27 19:46:40 +0100
commit48d5c26eece77ee46be346ef35da88d7e8ead6ec (patch)
treeba1597433d068dfd3c2ae1edc1c49a4b4b1c66a0 /app
parent3dde4cbbc6ba818b7cda57a68db9c2036a4480ab (diff)
downloadscratchy-48d5c26eece77ee46be346ef35da88d7e8ead6ec.tar.gz
scratchy-48d5c26eece77ee46be346ef35da88d7e8ead6ec.zip
Fix(Blinking effect): Fixed background blinking bug
The solution for stopping the blinking effect was not to centralize collision detection, but to add a timeout for the background color change, and not set it to white on every TargetReached of a free cell.
Diffstat (limited to '')
-rwxr-xr-xapp/Snakey/TwoSnakes.hs41
1 files changed, 23 insertions, 18 deletions
diff --git a/app/Snakey/TwoSnakes.hs b/app/Snakey/TwoSnakes.hs
index 7358eb5..2f02a99 100755
--- a/app/Snakey/TwoSnakes.hs
+++ b/app/Snakey/TwoSnakes.hs
@@ -8,17 +8,22 @@ moveSnake h tailSeg dir =
OnTargetReached h (\pos ->
let newPos = nextCell dir pos in
InspectCell newPos (\case
- HasBarrier -> SetBackgroundColor red $ Pure ()
- HasSprite -> SetBackgroundColor black $ Pure ()
+ HasSprite ->
+ SetBackgroundColor black $
+ After 1 (SetBackgroundColor white $ Pure ()) $
+ Pure ()
+ HasBarrier ->
+ SetBackgroundColor red $
+ After 1 (SetBackgroundColor white $ Pure ()) $
+ Pure ()
IsFree ->
- SetBackgroundColor white $
SetTarget h newPos $
moveTail pos tailSeg $
Pure ()
)
) $ Pure ()
-moveTail :: (Int,Int) -> [SpritePtr] -> SProg () -> SProg ()
+moveTail :: (Int, Int) -> [SpritePtr] -> SProg () -> SProg ()
moveTail _ [] cont = cont
moveTail prevPos (t:ts) cont =
GetTarget t (\curPos ->
@@ -30,24 +35,24 @@ twoSnakes :: SProg ()
twoSnakes =
-- Green snake
NewSprite (5, 5) (Color green $ circleSolid (cellSize * 0.6)) $ \greenH ->
- NewSprite (4, 5) (Color green $ rectangleSolid cellSize cellSize) $ \greenT1 ->
- NewSprite (3, 5) (Color green $ rectangleSolid cellSize cellSize) $ \greenT2 ->
- NewSprite (2, 5) (Color green $ rectangleSolid cellSize cellSize) $ \greenT3 ->
- NewSprite (1, 5) (Color green $ rectangleSolid cellSize cellSize) $ \greenT4 ->
- NewSprite (0, 5) (Color green $ rectangleSolid cellSize cellSize) $ \greenT5 ->
- NewSprite (0, 4) (Color green $ rectangleSolid cellSize cellSize) $ \greenT6 ->
- NewSprite (0, 3) (Color green $ rectangleSolid cellSize cellSize) $ \greenT7 ->
+ 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
-- Blue snake
NewSprite (15, 15) (Color blue $ circleSolid (cellSize * 0.6)) $ \blueH ->
- NewSprite (16, 15) (Color blue $ rectangleSolid cellSize cellSize) $ \blueT1 ->
- NewSprite (17, 15) (Color blue $ rectangleSolid cellSize cellSize) $ \blueT2 ->
- NewSprite (18, 15) (Color blue $ rectangleSolid cellSize cellSize) $ \blueT3 ->
- NewSprite (19, 15) (Color blue $ rectangleSolid cellSize cellSize) $ \blueT4 ->
- NewSprite (19, 16) (Color blue $ rectangleSolid cellSize cellSize) $ \blueT5 ->
- NewSprite (19, 17) (Color blue $ rectangleSolid cellSize cellSize) $ \blueT6 ->
- NewSprite (19, 18) (Color blue $ rectangleSolid cellSize cellSize) $ \blueT7 ->
+ 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 movement