diff options
| author | Mikkel Thestrup <mithe24@student.sdu.dk> | 2025-12-27 15:22:38 +0100 |
|---|---|---|
| committer | Mikkel Thestrup <mithe24@student.sdu.dk> | 2025-12-27 19:46:40 +0100 |
| commit | 48d5c26eece77ee46be346ef35da88d7e8ead6ec (patch) | |
| tree | ba1597433d068dfd3c2ae1edc1c49a4b4b1c66a0 | |
| parent | 3dde4cbbc6ba818b7cda57a68db9c2036a4480ab (diff) | |
| download | scratchy-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.
| -rw-r--r-- | CHANGELOG.md | 6 | ||||
| -rwxr-xr-x | app/Snakey/TwoSnakes.hs | 41 | ||||
| -rw-r--r-- | scratchy.cabal | 2 |
3 files changed, 30 insertions, 19 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index 76b7413..0f0c77b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Revision history for scratchy +## 1.1.0.0 -- 2025-12-27 +* 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. + ## 1.0.0.0 -- 2025-12-25 * MVP for Scratchy DSL and Snakey game. * TODO! Centralize collision detection, 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 diff --git a/scratchy.cabal b/scratchy.cabal index 739df53..83bb824 100644 --- a/scratchy.cabal +++ b/scratchy.cabal @@ -20,7 +20,7 @@ name: scratchy -- PVP summary: +-+------- breaking API changes -- | | +----- non-breaking API additions -- | | | +--- code changes with no API change -version: 0.1.0.0 +version: 1.1.0.0 -- A short (one-line) description of the package. -- synopsis: |