From 7e78fe5b0dca9b6f1903e9869085f6d8375607fb Mon Sep 17 00:00:00 2001 From: Enrique Delgado Date: Fri, 9 May 2025 18:59:17 +0900 Subject: [PATCH] Double Down and Reveal Suit powers implemented --- src/App.svelte | 83 ++++++++++++++++++++++++++++++++++--------- src/lib/Deck.svelte | 10 ++++++ src/lib/HiLo.svelte | 85 +++++++++++++++++++++++++++++++++++++++++---- 3 files changed, 154 insertions(+), 24 deletions(-) diff --git a/src/App.svelte b/src/App.svelte index c182e9d..0f27809 100644 --- a/src/App.svelte +++ b/src/App.svelte @@ -3,50 +3,99 @@ import HiLo from './lib/HiLo.svelte'; const windowRatio = 0.9; - const width = window.innerWidth * windowRatio * 0.8; + const width = window.innerWidth * windowRatio * 0.7; const height = window.innerHeight * windowRatio; const imageRatio = 3 / 2; const cardImageWidth = height * 0.6; const canvasXMargin = height * 0.03; - const canvasYMargin = height * 0.07; + const canvasYMargin = height * 0.02; const textXMargin = width * 0.01; - const textSize = width * 0.03; + const textSize = width * 0.025; + const blackBackground = [0, 0, 0]; + const greenBackground = [10, 150, 10]; + const redBackground = [150, 10, 10]; + const animationInterval = 300; + let outP5; + let backImage; let gameLogic; - let currentCard; + let doubleUsed = false; const sketch = (p5) => { p5.preload = function() { + outP5 = p5; gameLogic.initiateGame(p5); } p5.setup = function(){ p5.createCanvas(width, height); - p5.background(60); + p5.background(blackBackground); + backImage = gameLogic.getBackCardImage(); }; p5.draw = function() { - if(gameLogic.getRecentScore() > 0) { - p5.background(10, 150, 10); - } - else if(gameLogic.getRecentScore() < 0){ - p5.background(150, 10, 10); - } - p5.image(gameLogic.getCurrentCard().getImage(), canvasXMargin, canvasYMargin, cardImageWidth, cardImageWidth*imageRatio); - p5.image(gameLogic.getBackCardImage(), (canvasXMargin * 2) + cardImageWidth, canvasYMargin, cardImageWidth, cardImageWidth*imageRatio); - p5.fill(255); p5.textSize(textSize) p5.textAlign(p5.TOP, p5.TOP); - p5.text("Score: " + gameLogic.getScore(), (canvasXMargin * 2) + (cardImageWidth * 2) + textXMargin, canvasYMargin); + + p5.image(gameLogic.getCurrentCard().getImage(), canvasXMargin, canvasYMargin, cardImageWidth, cardImageWidth*imageRatio); + p5.image(backImage, (canvasXMargin * 2) + cardImageWidth, canvasYMargin, cardImageWidth, cardImageWidth*imageRatio); + // p5.text("Current:", canvasXMargin, canvasYMargin * 0.5) + // p5.text("Deck:", (canvasXMargin * 2) + cardImageWidth, canvasYMargin * 0.5); + + p5.text("Score: " + gameLogic.getScore(), canvasXMargin, (canvasYMargin *2) + cardImageWidth*imageRatio); p5.fill(220); - p5.text(gameLogic.getScoreMessage(), (canvasXMargin * 8) + (cardImageWidth * 2) + textXMargin, (canvasYMargin) + textSize) + p5.textSize(textSize * 0.9); + p5.text(gameLogic.getScoreMessage(), canvasXMargin * 7, (canvasYMargin *2) + cardImageWidth*imageRatio + (textSize * 0.5)); + + p5.text("Remaining: " + gameLogic.getRemaining() + "/52", (canvasXMargin * 2) + cardImageWidth, (canvasYMargin *2) + cardImageWidth*imageRatio); } } + + const backgroundAnimation = (event) => { + const recentScore = event.detail.recentScore; + backImage = gameLogic.getBackCardImage(); + + let background; + + if(recentScore > 0) { + background = greenBackground; + } + else if(recentScore < 0){ + background = redBackground; + } + else { + background = blackBackground; + } + + outP5.background(background); + + let animationMultiplier = 2; + if(doubleUsed) { + animationMultiplier += 2; + } + + for(let i = 1; i > 0; i -= 0.1) { + setTimeout(function() { + outP5.background(background.map((n) => n * i)) + }, animationInterval * (1 - i) * animationMultiplier) + } + + doubleUsed = false; + }; + + const doubleDownEffect = (event) => { + outP5.background(0); + doubleUsed = true; + }; + + const revealSuit = (event) => { + backImage = event.detail.backImage + }
- +
diff --git a/src/lib/Deck.svelte b/src/lib/Deck.svelte index e872b02..5c6b159 100644 --- a/src/lib/Deck.svelte +++ b/src/lib/Deck.svelte @@ -149,6 +149,16 @@ { return images["Back"]; } + + export function getSpecificImage(imageName) + { + return images[imageName]; + } + + export function getTopCardSuit() + { + return deck[deck.length - 1].getSuit(); + } diff --git a/src/lib/HiLo.svelte b/src/lib/HiLo.svelte index 699c547..595fcb6 100644 --- a/src/lib/HiLo.svelte +++ b/src/lib/HiLo.svelte @@ -2,12 +2,24 @@
- - + + + +
\ No newline at end of file