User prompt
move hoop flash 8 pixels higher
User prompt
move hoopflash 5 pixels higher
User prompt
move hoopflash 3 pixels higher
User prompt
move hoopflash 2 pixels higher
User prompt
move hoopflash 2 pixels higher
User prompt
move hoopflash 2 pixels higher
User prompt
move hoopflash 1 pixel lower
User prompt
Make hoopoutline invisible
User prompt
make the score counter color #C27070
User prompt
Change the score counter color to #6e3b3b
User prompt
When player scores a point, spawn particles similar to fireparticles in the hoop location.
User prompt
When player scores a point, there's a 30% chance that "Meow! <3", or ":3" will appear somewhere on the screen
User prompt
This text should stay on screen for 5 seconds after being spawned and then disappearing
User prompt
Add to Scoretext 'Meow! <3', ':3' also word: Purr-fectional! Catastic! Mew-nificent! Pawsome! Furr-tastic! Meowgical! Whiskerlicious! Grr-eat! Claw-some! Purr-splendid! Tail-endary! Majestifur! Meowvelous! Pawsitively amazing! Feline-tastic!
User prompt
scoretext that appears should fadeout and disappear 5 seconds after sapwning
User prompt
Every single texts variant of scoretext should disappear 4 seconds after appearing
User prompt
After 5 texts variants of scoretext are spawned, remove them from scene
Code edit (1 edits merged)
Please save this source code
User prompt
give ScoreText texts outline of #ffcccc color - 4 pixels thick
User prompt
give scoretext black outline 20 pixels thick
Code edit (2 edits merged)
Please save this source code
User prompt
When ScoreText is spawned, it should move up for 100 pixels for 4 seconds and then fade out and disappear
User prompt
scoretext should always spawn so it's not outside of camera bounds
User prompt
after 5 var texts are spawned, delete all var texts from scene
User prompt
after 3 var texts are spawned, delete all var texts from scene
/****
* Classes
****/
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 = 60;
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 += 222;
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 = 1;
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: '#4b190c',
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);
}
}
});
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.