User prompt
we need to know in advance of spawning the value of the next card.
User prompt
suit should be displayed befor the swipe.
User prompt
before the next card is swiped in, we need to show the player the suit of that card.
User prompt
console log next card value and suit
User prompt
Hint should be displayed after the previousbcard swipe
User prompt
Show hint of next card suit asset before swipe
User prompt
Cards can only move once per frame. Do not stack movement.
User prompt
Card movement can only happen once per frame
User prompt
move cards left text 70 pixels right
User prompt
move correct and wrong message 50 pixels higher
User prompt
move correct and wrong message 200 pixels higher
User prompt
increaste stroke to 16 for wrong and correct message
Code edit (1 edits merged)
Please save this source code
User prompt
add shadow to the scroe text
Code edit (1 edits merged)
Please save this source code
User prompt
change font of messages to casino
User prompt
on game start also add the minicard of the current card. it should be spawned in the position where minicards should start spawning
User prompt
current card should also be created as a mini card after the first swipe. It should start in the same position it was set for the first minicard to spawn.
User prompt
Clearing Ticks for cardmove function
User prompt
when the first mini card spawns, add 1 before that will be the current card from the game start.
User prompt
add current card as the first mini card on game start. however hide it until the first swipe happens
User prompt
card positions should not be updated multiples times per tick. only once.
User prompt
remove tick event listeners after they have been used once
User prompt
remove movecard function from tick event after the card has reached its destination to prevent creating multiple instances of movecard.
User prompt
on tick re set speed of cards to 50
/**** * Classes ****/ var StartMessageDisplay = Container.expand(function () { var self = Container.call(this); var background = self.createAsset('start_message_background', 'Start Message Background', 0.5, 0.5); background.x = 1024 + 500; background.y = 1266; self.addChildAt(background, 0); var messageText = new Text2(' Swipe Up\n for Higher!\n\n or\n\n Swipe Down\n for Lower!', { size: 100, fill: '#0000000', stroke: '#000000', strokeThickness: 0, anchor: { x: 0.5, y: 0 } }); self.addChild(messageText); messageText.y = 800; messageText.x = 1150; self.showMessage = function (message) { messageText.setText(message); messageText.x = 2000; self.addChild(messageText); LK.setTimeout(function () { messageText.setText(''); }, 2000); }; }); var MessageDisplay = Container.expand(function () { var self = Container.call(this); var messageText = new Text2('', { size: 150, fill: '#ffffff', stroke: '#000000', strokeThickness: 8, anchor: { x: 0.5, y: 0 } }); self.addChild(messageText); messageText.y = 550 - messageText.height; self.showMessage = function (message) { messageText.setText(message); messageText.x = 2048 / 2 - messageText.width / 2; self.addChild(messageText); LK.setTimeout(function () { messageText.setText(''); }, 2000); }; }); var Card = Container.expand(function () { var self = Container.call(this); self.setSuit = function (suit) { self.suit = suit; var suitAsset = self.createAsset('suit_' + suit, 'Suit Asset', 0.5, 0.5); suitAsset.x = 0; suitAsset.y = 0; self.addChild(suitAsset); }; var cardGraphics = self.createAsset('card', 'Card Graphics', 0.5, 0.5); cardGraphics.anchor.set(0.5, 0.5); var valueText = new Text2('', { size: 120, fill: '#000000', font: 'bold', anchor: { x: 0, y: 0 } }); valueText.anchor.set(0, 0); valueText.x = -cardGraphics.width / 2 + 50; valueText.y = -cardGraphics.height / 2 + 30; var valueText2 = new Text2('', { size: 120, fill: '#000000', font: 'bold', anchor: { x: 1, y: 1 } }); valueText2.anchor.set(0, 0); valueText2.x = cardGraphics.width / 2 - 50; valueText2.y = cardGraphics.height / 2 - 30; valueText2.scale.y = -1; valueText2.scale.x = -1; self.addChild(valueText2); self.setValue = function (value) { self.value = value; valueText.setText(value.toString()); valueText2.setText(value.toString()); }; self.addChild(valueText); self.addChild(valueText2); var suitText = new Text2('', { size: 120, fill: '#000000', anchor: { x: 0.5, y: 1 } }); suitText.y = 0; self.addChild(suitText); self.setValue = function (value) { self.value = value; var displayValue = value; if (value === 11) { displayValue = 'J'; } else if (value === 12) { displayValue = 'Q'; } else if (value === 13) { displayValue = 'K'; } else if (value === 1) { displayValue = 'A'; } valueText.setText(displayValue.toString()); valueText2.setText(displayValue.toString()); }; self.value = 0; }); var Player = Container.expand(function () { var self = Container.call(this); var playerGraphics = self.createAsset('player', 'Player Graphics', .5, .5); self.score = 0; self.updateScore = function (score) { self.score = score; }; }); var MiniCard = Container.expand(function () { var self = Container.call(this); self.setSuit = function (suit) { self.suit = suit; var suitAsset = self.createAsset('suit_' + suit, 'Mini Suit Asset', 0.5, 0.5); suitAsset.scale.x = 0.125; suitAsset.scale.y = 0.125; suitAsset.x = 0; suitAsset.y = 0; self.addChild(suitAsset); }; var cardGraphics = self.createAsset('card', 'Mini Card Graphics', 0.5, 0.5); cardGraphics.scale.x = 0.125; cardGraphics.scale.y = 0.125; cardGraphics.anchor.set(0.5, 0.5); var valueText = new Text2('', { size: 60, fill: '#000000', font: 'bold', anchor: { x: 0, y: 0 } }); valueText.anchor.set(0, 0); valueText.x = -cardGraphics.width / 16 + 6.25; valueText.y = -cardGraphics.height / 16 + 3.75; self.addChild(valueText); self.setValue = function (value) { self.value = value; var displayValue = value; if (value === 11) { displayValue = 'J'; } else if (value === 12) { displayValue = 'Q'; } else if (value === 13) { displayValue = 'K'; } else if (value === 1) { displayValue = 'A'; } valueText.setText(displayValue.toString()); }; self.value = 0; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x000000 }); /**** * Game Code ****/ var player = new Player(); var background = game.createAsset('background', 'Background Asset', 0.5, 0.5); background.x = 2048 / 2; background.y = 2732 / 2; game.addChild(background); var canSwipe = true; game.on('up', function (obj) { if (!canSwipe) { return; } canSwipe = false; LK.setTimeout(function () { canSwipe = true; }, 1500); var endY = obj.event.getLocalPosition(game).y; if (startY === null || endY === null) { return; } var swipeDirection = startY - endY; var guess = swipeDirection > 0 ? 'higher' : 'lower'; if (deck.length === 0) { LK.showGameOver(); return; } nextCard = deck.pop(); if (!nextCard) { return; } // Decrease the cards left counter cardsLeftTxt.setText('Left: ' + deck.length); if (startMessageDisplay) { startMessageDisplay.destroy(); startMessageDisplay = null; } // Unhide the first mini card after the first swipe if (game.firstMiniCard) { game.firstMiniCard.visible = true; } console.log('Next Card:', 'Value:', nextCard.value, 'Suit:', nextCard.suit); game.addChild(nextCard); nextCard.x = 2048 / 2 + 500; nextCard.y = swipeDirection > 0 ? 2732 + nextCard.height - 100 : -nextCard.height - 100; var speed = 50; LK.on('tick', function () { if (nextCard) { if (swipeDirection > 0 && nextCard.y > 2732 / 2 - 100) { nextCard.y -= speed; } else if (swipeDirection < 0 && nextCard.y < 2732 / 2 - 100) { nextCard.y += speed; } } }); if (game.messageDisplay) { game.messageDisplay.destroy(); } game.messageDisplay = game.addChild(new MessageDisplay()); var correctGuess = guess === 'higher' && nextCard.value >= currentCard.value || guess === 'lower' && nextCard.value <= currentCard.value; LK.setTimeout(function () { if (correctGuess) { player.updateScore(player.score + 1); game.updateScoreDisplay(player.score); LK.setScore(player.score); game.messageDisplay.showMessage('Correct!'); } else { game.messageDisplay.showMessage('Wrong!'); } }, 1000); console.log('Current Card:', 'Value:', currentCard.value, 'Suit:', currentCard.suit); LK.on('tick', function moveCard() { if (Math.abs(nextCard.y - 2732 / 2 + 100) <= 20) { LK.setTimeout(function () { LK.on('tick', function moveCardLeft() { if (currentCard && currentCard.x > 2048 / 2 - 500) { currentCard.x -= 20; } else if (currentCard) { var miniCard = new MiniCard(); miniCard.setValue(currentCard.value); miniCard.setSuit(currentCard.suit); miniCard.x = (game.miniCardX || 110) + miniCard.width / 6; miniCard.y = 2732 - miniCard.height - 550 - (game.miniCardYOffset || 0); game.addChild(miniCard); game.miniCardCount = (game.miniCardCount || 0) + 1; if (game.miniCardCount % 13 === 0) { game.miniCardX = 110; game.miniCardYOffset = (game.miniCardYOffset || 0) - 200; } else { game.miniCardX = miniCard.x + miniCard.width + 20; } LK.off('tick', moveCardLeft); } }); currentCard = nextCard; nextCard = null; startY = null; currentCard.x = 2048 / 2; currentCard.y = 2732 / 2 - 100; }, 500); LK.off('tick', moveCard); } }); }); var scoreTxt = new Text2('0', { size: 112, fill: "#ffffff", stroke: '#000000', strokeThickness: 8, anchor: { x: .5, y: .5 } }); var cardsLeftTxt = new Text2('Left: 51', { size: 112, fill: "#ffffff", stroke: '#000000', strokeThickness: 8, anchor: { x: 0, y: .5 } }); scoreTxt.y = 50; scoreTxt.x = -1340; cardsLeftTxt.x = scoreTxt.x + scoreTxt.width + 800; cardsLeftTxt.y = 50; LK.gui.topRight.addChild(scoreTxt); LK.gui.topRight.addChild(cardsLeftTxt); game.updateScoreDisplay = function (score) { scoreTxt.setText('Score: ' + score.toString()); }; game.updateScoreDisplay(0); var startMessageDisplay = new StartMessageDisplay(); game.addChild(startMessageDisplay); var deck = []; var currentCard = null; var nextCard = null; var suits = ['hearts', 'diamonds', 'clubs', 'spades']; for (var s = 0; s < suits.length; s++) { for (var i = 1; i <= 13; i++) { var card = new Card(); card.setValue(i); card.setSuit(suits[s]); deck.push(card); } } deck.sort(function () { return 0.5 - Math.random(); }); currentCard = deck[Math.floor(Math.random() * deck.length)]; console.log('First Card:', 'Value:', currentCard.value, 'Suit:', currentCard.suit); var index = deck.indexOf(currentCard); deck.splice(index, 1); // Update the cards left counter cardsLeftTxt.setText('Left: ' + deck.length); // Create the first mini card for the current card but keep it hidden var firstMiniCard = new MiniCard(); firstMiniCard.setValue(currentCard.value); firstMiniCard.setSuit(currentCard.suit); firstMiniCard.x = 110; firstMiniCard.y = 2732 - firstMiniCard.height - 550; firstMiniCard.visible = false; // Hide the mini card initially game.addChild(firstMiniCard); // Store the first mini card in the game object for later reference game.firstMiniCard = firstMiniCard; var startY = null; game.on('down', function (obj) { startY = obj.event.getLocalPosition(game).y; });
===================================================================
--- original.js
+++ change.js
@@ -220,20 +220,27 @@
if (startMessageDisplay) {
startMessageDisplay.destroy();
startMessageDisplay = null;
}
+
+ // Unhide the first mini card after the first swipe
+ if (game.firstMiniCard) {
+ game.firstMiniCard.visible = true;
+ }
console.log('Next Card:', 'Value:', nextCard.value, 'Suit:', nextCard.suit);
game.addChild(nextCard);
nextCard.x = 2048 / 2 + 500;
nextCard.y = swipeDirection > 0 ? 2732 + nextCard.height - 100 : -nextCard.height - 100;
var speed = 50;
- if (nextCard) {
- if (swipeDirection > 0 && nextCard.y > 2732 / 2 - 100) {
- nextCard.y -= speed;
- } else if (swipeDirection < 0 && nextCard.y < 2732 / 2 - 100) {
- nextCard.y += speed;
+ LK.on('tick', function () {
+ if (nextCard) {
+ if (swipeDirection > 0 && nextCard.y > 2732 / 2 - 100) {
+ nextCard.y -= speed;
+ } else if (swipeDirection < 0 && nextCard.y < 2732 / 2 - 100) {
+ nextCard.y += speed;
+ }
}
- }
+ });
if (game.messageDisplay) {
game.messageDisplay.destroy();
}
game.messageDisplay = game.addChild(new MessageDisplay());
@@ -248,34 +255,40 @@
game.messageDisplay.showMessage('Wrong!');
}
}, 1000);
console.log('Current Card:', 'Value:', currentCard.value, 'Suit:', currentCard.suit);
- if (Math.abs(nextCard.y - 2732 / 2 + 100) <= 20) {
- LK.setTimeout(function () {
- if (currentCard && currentCard.x > 2048 / 2 - 500) {
- currentCard.x -= 20;
- } else if (currentCard) {
- var miniCard = new MiniCard();
- miniCard.setValue(currentCard.value);
- miniCard.setSuit(currentCard.suit);
- miniCard.x = (game.miniCardX || 110) + miniCard.width / 6;
- miniCard.y = 2732 - miniCard.height - 550 - (game.miniCardYOffset || 0);
- game.addChild(miniCard);
- game.miniCardCount = (game.miniCardCount || 0) + 1;
- if (game.miniCardCount % 13 === 0) {
- game.miniCardX = 110;
- game.miniCardYOffset = (game.miniCardYOffset || 0) - 200;
- } else {
- game.miniCardX = miniCard.x + miniCard.width + 20;
- }
+ LK.on('tick', function moveCard() {
+ if (Math.abs(nextCard.y - 2732 / 2 + 100) <= 20) {
+ LK.setTimeout(function () {
+ LK.on('tick', function moveCardLeft() {
+ if (currentCard && currentCard.x > 2048 / 2 - 500) {
+ currentCard.x -= 20;
+ } else if (currentCard) {
+ var miniCard = new MiniCard();
+ miniCard.setValue(currentCard.value);
+ miniCard.setSuit(currentCard.suit);
+ miniCard.x = (game.miniCardX || 110) + miniCard.width / 6;
+ miniCard.y = 2732 - miniCard.height - 550 - (game.miniCardYOffset || 0);
+ game.addChild(miniCard);
+ game.miniCardCount = (game.miniCardCount || 0) + 1;
+ if (game.miniCardCount % 13 === 0) {
+ game.miniCardX = 110;
+ game.miniCardYOffset = (game.miniCardYOffset || 0) - 200;
+ } else {
+ game.miniCardX = miniCard.x + miniCard.width + 20;
+ }
+ LK.off('tick', moveCardLeft);
+ }
+ });
currentCard = nextCard;
nextCard = null;
startY = null;
currentCard.x = 2048 / 2;
currentCard.y = 2732 / 2 - 100;
- }
- }, 500);
- }
+ }, 500);
+ LK.off('tick', moveCard);
+ }
+ });
});
var scoreTxt = new Text2('0', {
size: 112,
fill: "#ffffff",
@@ -326,13 +339,23 @@
currentCard = deck[Math.floor(Math.random() * deck.length)];
console.log('First Card:', 'Value:', currentCard.value, 'Suit:', currentCard.suit);
var index = deck.indexOf(currentCard);
deck.splice(index, 1);
-game.addChild(currentCard);
-currentCard.x = 2048 / 2 - 500;
-currentCard.y = 2732 / 2 - 100;
+
// Update the cards left counter
cardsLeftTxt.setText('Left: ' + deck.length);
+
+// Create the first mini card for the current card but keep it hidden
+var firstMiniCard = new MiniCard();
+firstMiniCard.setValue(currentCard.value);
+firstMiniCard.setSuit(currentCard.suit);
+firstMiniCard.x = 110;
+firstMiniCard.y = 2732 - firstMiniCard.height - 550;
+firstMiniCard.visible = false; // Hide the mini card initially
+game.addChild(firstMiniCard);
+
+// Store the first mini card in the game object for later reference
+game.firstMiniCard = firstMiniCard;
var startY = null;
game.on('down', function (obj) {
startY = obj.event.getLocalPosition(game).y;
});
\ No newline at end of file
Green casino baize. To be used as background. No shade. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
white rectangle flat. rounded corners. no background. no shadow. card shape.. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.