User prompt
after 3 var texts are spawned, delete all var texts from scene
User prompt
There can always be only 1 texts variable visible in the game at a time in scoretext
User prompt
Score text should fadeout when it's disappearing
User prompt
When scoretext is deleted, make it go aways using fadeout over half a second
User prompt
When point is scored, flyingball is deleted until next round
User prompt
When point is scored, ballfying and ballflyingleft become invisibleuntil next round
User prompt
hide time limit timer
User prompt
Make particle effect when point is scored
User prompt
increase particle size by 100%
User prompt
Make fireparticle have much higher zindex
Code edit (3 edits merged)
Please save this source code
User prompt
Create a progression bar in the bottom of the screen that fills with every point scored
User prompt
make a progress bar in the game that fills with every score
User prompt
make progress bar need 20 points scored to fill full
Code edit (4 edits merged)
Please save this source code
User prompt
Remove the score counter number
User prompt
Hide the number that shows players points
User prompt
Fix Bug: 'TypeError: Cannot read properties of undefined (reading 'setText')' in this line: 'hoop.scoreLabel.setText(score.toString());' Line Number: 377
User prompt
Set limit that progressbarfg can't progress further than progressbarbg
Code edit (1 edits merged)
Please save this source code
Code edit (1 edits merged)
Please save this source code
User prompt
set zindex ballflying to 2000
User prompt
After player fills the progression bar play strong fireparticles near progression bar and restart progressionbar
User prompt
Fix Bug: 'Uncaught TypeError: Cannot read properties of undefined (reading 'expand')' in this line: 'var StrongFireParticle = Particle.expand(function () {' Line Number: 4
User prompt
Fix Bug: 'Uncaught TypeError: Cannot read properties of undefined (reading 'expand')' in this line: 'var StrongFireParticle = Particle.expand(function () {' Line Number: 4
/****
* Classes
****/
var ScoreText = Container.expand(function () {
var self = Container.call(this);
ScoreText.counter = (ScoreText.counter || 0) + 1;
var texts = ['Meow! <3', ':3', 'Purr-fectional!', 'Catastic!', 'Mew-nificent!', 'Pawsome!', 'Furr-tastic!', 'Meowgical!', 'Whiskerlicious!', 'Grr-eat!', 'Claw-some!', 'Purr-splendid!', 'Tail-endary!', 'Majestifur!', 'Meowvelous!', 'Pawsitively amazing!', 'Feline-tastic!'];
var textGraphics = new Text2(texts[Math.floor(Math.random() * texts.length)], {
size: 100,
fill: '#ffcccc',
stroke: '#34344f',
strokeThickness: 15
});
textGraphics.anchor.set(0.5, 0.5);
self.addChild(textGraphics);
var margin = 100; // Margin to ensure text is fully visible
var textWidth = textGraphics.width;
var textHeight = textGraphics.height;
self.x = Math.random() * (2048 - textWidth) + textWidth / 2 + margin;
self.y = Math.random() * (2732 - textHeight) + textHeight / 2 + margin;
self.lifeSpan = 60;
self.move = function () {
self.lifeSpan--;
self.alpha -= 1 / self.lifeSpan;
if (self.lifeSpan <= 0 || self.alpha <= 0) {
if (ScoreText.counter > 3) {
game.children.forEach(function (child) {
if (child instanceof ScoreText) {
child.destroy();
}
});
ScoreText.counter = 0;
} else {
self.destroy();
}
}
};
});
var HoopFlash = Container.expand(function () {
var self = Container.call(this);
var hoopFlashGraphics = self.createAsset('hoopFlash', 'Hoop Flash Effect', 0.5, 0.5);
self.addChild(hoopFlashGraphics);
});
var Particle = Container.expand(function () {
var self = Container.call(this);
self.interactive = false;
var particleGraphics = self.createAsset('fireParticle', 'Fire Particle', 0.5, 0.5);
particleGraphics.blendMode = 1;
self.lifeSpan = 300;
self.speed = {
x: (Math.random() - 0.5) * 2,
y: (Math.random() - 0.5) * 2
};
self.scale.set(Math.random() * 0.6 + 0.2);
self.rotation = Math.random() * Math.PI * 2;
self.move = function () {
self.x += self.speed.x;
self.y += self.speed.y;
self.alpha -= 0.03;
if (self.alpha <= 0) {
self.destroy();
}
};
});
var HoopRim = Container.expand(function () {
var self = Container.call(this);
var hoopRimGraphics = LK.getAsset('hoopRimSeparate', 'Basketball Hoop Rim Separate', .5, .5);
hoopRimGraphics.zIndex = 997;
self.addChild(hoopRimGraphics);
self.hoopFlash = self.addChild(new HoopFlash());
self.hoopFlash.y += 209;
self.hoopFlash.visible = false;
});
var Ball = Container.expand(function () {
var self = Container.call(this);
self.hasScored = false;
self.hasBounced = false;
var ballGraphics = LK.getAsset('ball', 'Basketball', .5, .5);
self.addChild(ballGraphics);
self.speed = {
x: 0,
y: 0
};
self.hasThrown = false;
self.move = function () {
self.speed.y += 3.2 * 1.3 * 1.15;
self.x += self.speed.x;
if (self.x < self.width / 2) {
self.x = self.width / 2;
self.speed.x *= -0.5;
} else if (self.x > 2048 - self.width / 2) {
self.x = 2048 - self.width / 2;
self.speed.x *= -0.5;
}
self.y += self.speed.y;
if (self.y < self.height / 2) {
self.y = self.height / 2;
self.speed.y *= -0.5;
}
if (self.hasThrown && !self.flyingAssetChanged) {
var assetName = self.x < 1024 ? 'ballFlyingLeft' : 'ballFlying';
self.removeChild(ballGraphics);
ballGraphics = LK.getAsset(assetName, 'Flying Basketball', .5, .5);
ballGraphics.zIndex = 999;
self.addChild(ballGraphics);
self.flyingAssetChanged = true;
} else if (!self.hasThrown && self.flyingAssetChanged) {
self.removeChild(ballGraphics);
ballGraphics = LK.getAsset('ball', 'Basketball', .5, .5);
self.addChild(ballGraphics);
self.flyingAssetChanged = false;
}
if (self.hasScored) {
self.alpha -= 0.15;
if (self.alpha <= 0) {
self.removeChild(ballGraphics);
ballGraphics = LK.getAsset('ball', 'Basketball', .5, .5);
self.addChild(ballGraphics);
self.alpha = 1;
self.hasScored = false;
}
} else {
self.alpha += 0.15;
if (self.alpha > 1) {
self.alpha = 1;
}
}
};
self.bounceOffPoint = function (x, y, elasticity) {
var dx = self.x - x;
var dy = self.y - y;
var angle = Math.atan2(dy, dx);
var speed = Math.sqrt(self.speed.x * self.speed.x + self.speed.y * self.speed.y);
self.speed.x = Math.cos(angle) * speed * elasticity;
self.speed.y = Math.sin(angle) * speed * elasticity;
};
self.angleTo = function (x, y) {
var dx = self.x - x;
var dy = self.y - y;
return Math.atan2(dy, dx);
};
self.distanceTo = function (x, y) {
var dx = self.x - x;
var dy = self.y - y;
return Math.sqrt(dx * dx + dy * dy);
};
self.moveToDistance = function (x, y, distance) {
var angle = self.angleTo(x, y);
self.x = x + Math.cos(angle) * (distance * 1.05);
self.y = y + Math.sin(angle) * (distance * 1.05);
};
});
var Hoop = Container.expand(function () {
var self = Container.call(this);
self.setScore = function (score) {
self.scoreLabel.setText(score.toString());
};
self.moveTo = function (newX, newY, hoopRim) {
var dx = (newX - self.x) / 60;
var dy = (newY - self.y) / 60;
var steps = 0;
var interval = LK.setInterval(function () {
self.x += dx;
self.y += dy;
hoopRim.x = self.x;
hoopRim.y = self.y + self.children[1].y - 250;
steps++;
if (steps >= 60) {
LK.clearInterval(interval);
}
});
};
var backboardGraphics = LK.getAsset('backboard', 'Basketball Backboard', .5, .5);
backboardGraphics.y -= 250;
self.addChild(backboardGraphics);
self.hoopRimGraphics = LK.getAsset('hoopRim', 'Basketball Hoop Rim', .5, .5);
self.hoopRimGraphics.y = backboardGraphics.height / 2 - 550 + 20 + 120 + 150 + 100;
self.hoopRimGraphics.alpha = 0;
self.addChild(self.hoopRimGraphics);
// Add HoopTop asset below HoopRim
self.hoopTopGraphics = LK.getAsset('hoopTop', 'Basketball Hoop Top', .5, 1);
self.hoopTopGraphics.y = self.hoopRimGraphics.y + self.hoopRimGraphics.height / 2 + 291;
self.hoopTopGraphics.x -= 2;
self.hoopTopGraphics.alpha = 1;
self.addChild(self.hoopTopGraphics);
self.leftElement = LK.getAsset('leftElement', 'Left Side Element', .5, .5);
self.leftElement.x = self.hoopRimGraphics.x - self.hoopRimGraphics.width / 2 + self.leftElement.width / 2 - 50;
self.leftElement.y = self.hoopRimGraphics.y - 250;
self.leftElement.alpha = 0;
self.addChild(self.leftElement);
self.rightElement = LK.getAsset('rightElement', 'Right Side Element', .5, .5);
self.rightElement.x = self.hoopRimGraphics.x + self.hoopRimGraphics.width / 2 - self.rightElement.width / 2 + 50;
self.rightElement.y = self.hoopRimGraphics.y - 250;
self.rightElement.alpha = 0;
self.addChild(self.rightElement);
self.hoopOutlineGraphics = LK.getAsset('hoopOutline', 'Basketball Hoop Outline', 1, .5);
self.hoopOutlineGraphics.y = self.hoopRimGraphics.y - 230;
self.hoopOutlineGraphics.alpha = 0;
self.hoopOutlineGraphics.tint = 0xbb502e;
self.hoopOutlineGraphics.rotation = Math.PI / 2;
self.addChild(self.hoopOutlineGraphics);
self.multiplierLabel = new Text2('', {
size: 200,
fill: '#8d4529',
font: 'Impact'
});
self.multiplierLabel.anchor.set(.5, 1);
self.multiplierLabel.x = self.hoopRimGraphics.x;
self.multiplierLabel.y = self.hoopRimGraphics.y - 250 - 50 + 30;
self.addChild(self.multiplierLabel);
self.scoreLabel = new Text2('0', {
size: 270,
fill: '#6e3b3b',
font: 'Impact'
});
self.scoreLabel.anchor.set(.5, .5);
self.scoreLabel.x = self.hoopRimGraphics.x;
self.scoreLabel.y = self.hoopRimGraphics.y - 250 - 20 - 420;
self.addChild(self.scoreLabel);
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0xFFCBCB
});
/****
* Game Code
****/
var bg = LK.getAsset('background', 'Background Image', 0.5, 0.5);
bg.x = 2048 / 2;
bg.y = 2732 / 2 + 150;
bg.alpha = 0.7;
game.addChild(bg);
var timerTxt = new Text2('00:00', {
size: 150,
fill: "#ffffff"
});
timerTxt.anchor.set(0, 0);
timerTxt.x = 50;
timerTxt.y = 50;
LK.gui.topLeft.addChild(timerTxt);
var gameTime = 1800;
var timerInterval = LK.setInterval(function () {
gameTime--;
if (gameTime <= 0) {
LK.clearInterval(timerInterval);
LK.showGameOver();
return;
}
var minutes = Math.floor(gameTime / 60);
var seconds = gameTime % 60;
timerTxt.setText((minutes < 10 ? '0' : '') + minutes + ':' + (seconds < 10 ? '0' : '') + seconds);
}, 1000);
var hoop = game.addChild(new Hoop());
var score = 0;
var scoreMultiplier = 1;
var ball = game.addChild(new Ball());
var hoopRim = game.addChild(new HoopRim());
ball.hitElement = '';
hoop.x = 2048 / 2;
hoop.y = 2732 / 2;
hoopRim.x = hoop.x;
hoopRim.y = hoop.y + hoop.children[1].y - 250;
ball.x = 2048 / 2;
ball.on('down', function (obj) {
if (!ball.hasThrown) {
var event = obj.event;
dragStart = event.getLocalPosition(game);
}
});
var dragStart = null;
game.on('move', function (obj) {
var event = obj.event;
var pos = event.getLocalPosition(game);
if (dragStart !== null && ball.distanceTo(pos.x, pos.y) > 400) {
game.fireBall(obj);
}
});
game.fireBall = function (obj) {
if (dragStart !== null) {
var event = obj.event;
var pos = event.getLocalPosition(game);
var dx = pos.x - dragStart.x;
var dy = pos.y - dragStart.y;
var angle = Math.atan2(dy, dx);
ball.speed.x = Math.cos(angle) * 72 * 1.76 * 0.9 / 3;
ball.speed.y = Math.sin(angle) * 72 * 1.76 * 0.9;
ball.hasThrown = true;
ball.hitElement = '';
game.removeChild(ball);
game.addChild(ball);
dragStart = null;
}
};
game.on('up', function (obj) {
if (dragStart !== null) {
var event = obj.event;
var pos = event.getLocalPosition(game);
var distance = Math.sqrt(Math.pow(pos.x - dragStart.x, 2) + Math.pow(pos.y - dragStart.y, 2));
if (distance > 150) {
game.fireBall(obj);
}
}
dragStart = null;
});
var floorY = 2732 - 40 + 900 * (ball.scale.y - 1);
ball.y = floorY - ball.height;
LK.on('tick', function () {
if (scoreMultiplier === 3) {
for (var i = 0; i < 2; i++) {
var particle = new Particle();
particle.alpha = ball.alpha;
var angle = Math.random() * Math.PI * 2;
var radius = ball.width * 0.5 * Math.sqrt(Math.random());
particle.x = ball.x + Math.cos(angle) * radius;
particle.y = ball.y + Math.sin(angle) * radius;
game.addChild(particle);
}
}
game.children.forEach(function (child) {
if (child instanceof Particle) {
child.move();
}
});
var floorY = 2732 - 40 + 900 * (ball.scale.y - 1);
ball.move();
if (ball.speed.y > 0) {
game.removeChild(hoopRim);
game.addChild(hoopRim);
if (ball.distanceTo(hoop.x + hoop.leftElement.x, hoop.y + hoop.leftElement.y) < ball.width / 2 + hoop.leftElement.width / 2) {
ball.moveToDistance(hoop.x + hoop.leftElement.x, hoop.y + hoop.leftElement.y, ball.width / 2 + hoop.leftElement.width / 2 + 1);
ball.bounceOffPoint(hoop.x + hoop.leftElement.x, hoop.y + hoop.leftElement.y, 0.5);
ball.hitElement = 'left';
}
if (ball.distanceTo(hoop.x + hoop.rightElement.x, hoop.y + hoop.rightElement.y) < ball.width / 2 + hoop.rightElement.width / 2) {
ball.moveToDistance(hoop.x + hoop.rightElement.x, hoop.y + hoop.rightElement.y, ball.width / 2 + hoop.rightElement.width / 2 + 1);
ball.bounceOffPoint(hoop.x + hoop.rightElement.x, hoop.y + hoop.rightElement.y, 0.5);
ball.hitElement = 'right';
}
}
if (ball.y + ball.height > floorY) {
ball.y = floorY - ball.height;
ball.speed.y *= -0.75;
if (ball.hasThrown && !ball.hasScored) {
ball.hasBounced = true;
ball.x = 2048 / 2;
ball.y = floorY - ball.height;
ball.speed.x = 0;
ball.speed.y = 0;
ball.hasThrown = false;
ball.hasBounced = false;
ball.scale.x = 1;
ball.scale.y = 1;
ball.alpha = 1;
scoreMultiplier = 1;
hoop.multiplierLabel.setText('');
hoop.moveTo(Math.random() * (2048 - 1000) + 500, Math.random() * (2732 - 2000) + 1000, hoopRim);
} else if (ball.hasScored) {
ball.x = 2048 / 2;
ball.y = 2532 - ball.height;
ball.speed.x = 0;
ball.speed.y = 0;
ball.hasThrown = false;
ball.hasScored = false;
ball.hasBounced = false;
ball.scale.x = 1;
ball.scale.y = 1;
if (ball.hitElement === '') {
if (scoreMultiplier < 3) {
scoreMultiplier++;
}
} else {
scoreMultiplier = 1;
}
if (scoreMultiplier > 1) {
hoop.multiplierLabel.setText('x' + scoreMultiplier);
} else {
hoop.multiplierLabel.setText('');
}
ball.hitElement = '';
hoop.moveTo(Math.random() * (2048 - 1000) + 500, Math.random() * (2732 - 2000) + 1000, hoopRim);
}
} else if (ball.hasThrown && ball.intersects(hoop.hoopRimGraphics) && ball.speed.y > 0 && !ball.hasScored && !ball.hasBounced && ball.x > hoop.x + hoop.leftElement.x && ball.x < hoop.x + hoop.rightElement.x) {
ball.hasScored = true;
score += scoreMultiplier * 2;
hoopRim.hoopFlash.visible = true;
LK.setTimeout(function () {
hoopRim.hoopFlash.visible = false;
}, 500);
if (score === 2024) {
LK.showGameOver();
} else {
hoop.scoreLabel.setText(score.toString());
hoop.setScore(score);
if (Math.random() < 0.3) {
var scoreText = new ScoreText();
game.addChild(scoreText);
}
}
}
});
4:3 Simple rectangle white outline. Black background
Very cute cat looking into camera. Full body cat. Cartoon art style. Ginger cat. No UI elements in the picture like popups, close buttons etc.. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
background
Head of a cute ginger cat peeking from a box
heart. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.