User prompt
do not display miniballs if ball intersects with teammae
User prompt
Please fix the bug: 'TypeError: defender.pause is not a function' in or related to this line: 'defender.pause(); // Pause defender movement' Line Number: 674
User prompt
if ball intersects with teammate pause defender and shoot ball from where teammate is standing
User prompt
have teammate move randomly along bottom third of screen
User prompt
display teammate on bottom left or right side of screen
User prompt
display teammate randomly on bottom screen
User prompt
shoot ball in opposite direction of where ball is dragged
User prompt
do not display ball before miniballs dissapear
User prompt
if there is a succesful score reset ball on floor
User prompt
if ball goes through hoop do not make ball dissapear
User prompt
if ball lands on top of platform allow user to shoot ball from here
User prompt
make platform asset non transparent
User prompt
display platform asset randomly on screen
User prompt
Please fix the bug: 'TypeError: Cannot read properties of undefined (reading 'height')' in or related to this line: 'powerBar4.y = 2732 - powerBar4.height - powerBar3.height - powerBar2.height - powerBar1.height / 2 - 60; // Position above powerBar3' Line Number: 575
User prompt
display platform asset on left or right side of screen
User prompt
all ball to pass underneath backboard
User prompt
if ball intersects with defender on right side of screen display miniballs across right side of screen, if ball intersects with defender on left side of screen display miniballs on left side of screen
User prompt
have 5 miniballs total
User prompt
spread miniballs out across entire width of screen
User prompt
display 4 times less miniballs
User prompt
do not stop miniballs in midair
User prompt
have miniballs drop to the floor before dissapearing
User prompt
have quarter amount of mini balls appear on screen
User prompt
have ball be invisible for 1.5 seconds before reapparing
User prompt
display 8 miniballs when ball dissapears
/**** * Classes ****/ var Ball = Container.expand(function () { var self = Container.call(this); self.hasScored = false; self.hasBounced = false; self.throwSpeed = 0; var ballGraphics = LK.getAsset('ball', { anchorX: 0.5, anchorY: 0.5 }); self.addChild(ballGraphics); self.speed = { x: 0, y: 0 }; self.hasThrown = false; self.move = function () { self.speed.y += 3.2; self.x += self.speed.x; if (self.x < self.width / 2) { self.x = self.width / 2; } else if (self.x > 2048 - self.width / 2) { self.x = 2048 - self.width / 2; } self.y += self.speed.y; if (self.y < self.height / 2) { self.y = self.height / 2; self.speed.y *= -0.5; } self.rotation += self.speed.x * 0.01; if (self.hasThrown) { var targetScale = 0.8; self.scale.x += (targetScale - self.scale.x) * 0.05; self.scale.y += (targetScale - self.scale.y) * 0.05; } if (self.hasScored) { self.alpha -= 0.15; } 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 Defender = Container.expand(function () { var self = Container.call(this); var defenderGraphics = self.attachAsset('defender', { anchorX: 0.5, anchorY: 0.5 }); self.targetX = 1600; self.targetY = 833; self.targetCorner = 0; self.distanceFromTarget = function () { self.distanceX = self.targetX - self.x; self.distanceY = self.targetY - self.y; }; self.pickNewTarget = function () { // Gradually move defender within 200 pixel radius of 'hoopRimSeparate' asset self.targetCorner = (self.targetCorner + 1) % 4; self.targetX = hoopRim.x - 550 + (self.targetCorner + 1) % 4 % 3 * 3 % 5 % 2 * 1100; self.targetY = hoopRim.y - 550 + (self.targetCorner + 0) % 4 % 3 * 3 % 5 % 2 * 833; //self.targetX = hoopRim.x + (Math.random() - 0.5) * 800; //self.targetY = hoopRim.y + (Math.random() - 0.5) * 800; self.distanceFromTarget(); }; self.move = function () { self.x += self.distanceX * 0.01; self.y += self.distanceY * 0.01; }; }); var ExplosionParticle = Container.expand(function () { var self = Container.call(this); self.interactive = false; var shapes = ['leftElement', 'rightElement', 'ballShadow']; var shapeIndex = Math.floor(Math.random() * shapes.length); var explosionGraphics = self.attachAsset(shapes[shapeIndex], { anchorX: 0.5, anchorY: 0.5 }); explosionGraphics.blendMode = 1; self.lifeSpan = 30 + Math.random() * 20; // Random lifespan between 30 to 50 ticks self.speed = { x: (Math.random() - 0.5) * 10, y: (Math.random() - 0.5) * 10 }; self.scale.set(Math.random() * 0.5 + 0.5); // Random scale between 0.5 to 1 self.rotation = Math.random() * Math.PI * 2; self.move = function () { self.x += self.speed.x; self.y += self.speed.y; self.lifeSpan--; if (self.lifeSpan <= 0) { self.destroy(); } }; }); var Flower = Container.expand(function () { var self = Container.call(this); self.interactive = false; var flowerTypes = ['leftElement', 'rightElement', 'ballShadow']; // Reuse existing shapes for flowers var flowerIndex = Math.floor(Math.random() * flowerTypes.length); var flowerGraphics = self.attachAsset(flowerTypes[flowerIndex], { anchorX: 0.5, anchorY: 0.5 }); flowerGraphics.scaleX = flowerGraphics.scaleY = Math.random() * 0.5 + 0.5; // Random scale for variety self.speed = { x: (Math.random() - 0.5) * 2, y: Math.random() * 5 + 2 // Falling speed }; self.move = function () { self.x += self.speed.x; self.y += self.speed.y; if (self.y > 2732 + 100) { // Remove flower when it goes off screen self.destroy(); } }; }); 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', { anchorX: 0.5, anchorY: 0.5 }); backboardGraphics.y -= 250; self.addChild(backboardGraphics); self.hoopRimGraphics = LK.getAsset('hoopRim', { anchorX: 0.5, anchorY: 0.5 }); self.hoopRimGraphics.y = backboardGraphics.height / 2 - 550 + 20 + 120 + 150 + 100; self.hoopRimGraphics.alpha = 0; self.addChild(self.hoopRimGraphics); self.leftElement = LK.getAsset('leftElement', { anchorX: 0.5, anchorY: 0.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', { anchorX: 0.5, anchorY: 0.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', { anchorX: 1, anchorY: 0.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); }); var HoopRim = Container.expand(function () { var self = Container.call(this); var hoopRimGraphics = LK.getAsset('hoopRimSeparate', { anchorX: 0.5, anchorY: 0.5 }); self.addChild(hoopRimGraphics); }); var Particle = Container.expand(function () { var self = Container.call(this); self.interactive = false; var particleGraphics = self.attachAsset('rainbowParticle', { anchorX: 0.5, anchorY: 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 PowerBall = Container.expand(function () { var self = Container.call(this); var powerBallGraphics = self.attachAsset('ball', { anchorX: 0.5, anchorY: 0.5 }); self.scale.set(0.5); // Smaller size for the power ball self.interactive = true; // Make the power ball interactive self.powerLevel = 0; // Initialize power level at 0 self.maxPower = 10; // Maximum power level self.updatePower = function (delta) { self.powerLevel += delta; if (self.powerLevel > self.maxPower) { self.powerLevel = self.maxPower; } else if (self.powerLevel < 0) { self.powerLevel = 0; } // Update the visual representation of power level here if needed }; self.on('down', function () { // Increase power level when the power ball is pressed self.updatePower(1); }); }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x000000 }); /**** * Game Code ****/ var teammate = game.addChild(new Container()); var teammateGraphics = teammate.attachAsset('Teammate', { anchorX: 0.5, anchorY: 0.5 }); teammate.y = 2732 - 2732 / 3; // Position teammate in the bottom third of the screen teammate.moveRandomly = function () { var minX = 0 + teammateGraphics.width / 2; var maxX = 2048 - teammateGraphics.width / 2; var randomX = Math.random() * (maxX - minX) + minX; teammate.x = randomX; }; LK.setInterval(function () { teammate.moveRandomly(); }, 2000); // Move teammate randomly every 2 seconds // Randomly decide to place the platform on the left or right side of the screen var platformSide = Math.random() < 0.5 ? 'left' : 'right'; var platform = LK.getAsset('platform', { anchorX: platformSide === 'left' ? 0.0 : 1.0, anchorY: 0.5, // Center vertically alpha: 1 // Make non-transparent }); // Position the platform randomly on the screen platform.x = platformSide === 'left' ? 0 : 2048; platform.y = Math.random() * (2732 - platform.height) + platform.height / 2; game.addChild(platform); var currentPowerBar = 1; var cyclePowerBars = function cyclePowerBars() { var powerBarAsset = 'powerBar' + currentPowerBar; var powerBar = LK.getAsset(powerBarAsset, { anchorX: 0.5, anchorY: 0.5 }); powerBar.x = 2048 - powerBar.width / 2; // Position in bottom right corner powerBar.y = 2732 - powerBar.height / 2; game.addChild(powerBar); LK.setTimeout(function () { game.removeChild(powerBar); currentPowerBar = currentPowerBar === 8 ? 1 : currentPowerBar + 1; cyclePowerBars(); }, 500); }; // cyclePowerBars(); // Removed to stop automatic powerBar cycling var longestStreak = 0; var currentStreak = 0; var mouseDownTime = 0; var screenClicks = 0; var powerBar1Displayed = false; var powerBar1 = LK.getAsset('powerBar1', { anchorX: 0.5, anchorY: 0.5 }); powerBar1.x = 2048 - powerBar1.width / 2; powerBar1.y = 2732 - powerBar1.height / 2; var powerBar2Displayed = false; var powerBar2 = LK.getAsset('powerBar2', { anchorX: 0.5, anchorY: 0.5 }); var powerBar3Displayed = false; var powerBar4Displayed = false; LK.on('tick', function () { if (Math.abs(defender.x - defender.targetX) <= 5 && Math.abs(defender.y - defender.targetY) <= 5) { defender.pickNewTarget(); defender.distanceFromTarget(); defender.move(); } else { defender.move(); } //defender.move(); if (ball.hasThrown) { // Create a fire particle only when there is a multiplier if (scoreMultiplier == 2) { var particle = new Particle(); particle.alpha = 0.8; // Set fire particle color to yellow for x2 multiplier particle.tint = 0xFFFF00; // Yellow color 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); } else if (scoreMultiplier >= 3) { var particle = new Particle(); particle.alpha = 0.8; // Set fire particle color to red and increase size for x3 or higher multiplier particle.tint = 0xFF0000; // Red color particle.scale.set(1.5); // Increase size var angle = Math.random() * Math.PI * 2; var radius = ball.width * 0.75 * Math.sqrt(Math.random()); // Increase radius for bigger particles particle.x = ball.x + Math.cos(angle) * radius; particle.y = ball.y + Math.sin(angle) * radius; game.addChild(particle); } } }); var bg = LK.getAsset('background2', { anchorX: 0.5, anchorY: 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); // Initialize streak counter text display var streakCounterTxt = new Text2('Streak: 0', { size: 150, fill: "#ffffff" }); streakCounterTxt.anchor.set(1, 0); // Anchor to the top right streakCounterTxt.x = 2048 - 50; // Position to the right, with a margin streakCounterTxt.y = 50; // Same vertical position as timer LK.gui.topRight.addChild(streakCounterTxt); var gameTime = 100; var isGamePaused = false; var pauseGame = function pauseGame() { isGamePaused = true; }; var resumeGame = function resumeGame() { isGamePaused = false; }; // Cycle between direction1 and direction9 every .5 seconds var currentDirection = 1; var cycleDirections = function cycleDirections() { var directionAsset = 'direction' + currentDirection; var direction = LK.getAsset(directionAsset, { anchorX: 0.5, anchorY: 0.5 }); direction.x = direction.width / 2; // Position in bottom left corner direction.y = 2732 - direction.height / 2; game.addChild(direction); LK.setTimeout(function () { game.removeChild(direction); currentDirection = currentDirection === 9 ? 1 : currentDirection + 1; cycleDirections(); }, 500); }; cycleDirections(); // Commented out to pause cycling when basketball is clicked var timerInterval = LK.setInterval(function () { if (!isGamePaused) { gameTime--; if (gameTime <= 0) { LK.clearInterval(timerInterval); LK.showGameOver(); return; } timerTxt.setText(gameTime.toString()); } }, 1000); // Add event listener to toggle game pause state game.on('down', function (obj) { screenClicks++; // Increment screenClicks on every click // cycleDirections(); // Pause cycling when basketball is clicked if (obj.event.target === pauseButton) { if (isGamePaused) { resumeGame(); } else { pauseGame(); } } }); var pauseButton = LK.getAsset('pauseButton', { anchorX: 0.5, anchorY: 0.5 }); pauseButton.x = 2048 - 100; // Position on the top right of the screen pauseButton.y = 100; LK.gui.topRight.addChild(pauseButton); var hoop = game.addChild(new Hoop()); var defender = game.addChild(new Defender()); defender.x = 2048 / 2; defender.y = 2732 / 2 - 500; // Position above the hoop defender.distanceFromTarget(); var score = 0; var scoreMultiplier = 1; var ballShadow = LK.getAsset('ballShadow', { anchorX: 0.5, anchorY: 0.5 }); ballShadow.alpha = 0.5; game.addChild(ballShadow); var ball = game.addChild(new Ball()); var powerBall = game.addChild(new PowerBall()); powerBall.x = ball.x + ball.width / 2 + powerBall.width / 2 + 20; // Position powerball to the right of the ball powerBall.y = ball.y; // Align horizontally with the 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) { mouseDownTime = Date.now(); powerBar1Displayed = false; //var event = obj.event; //dragStart = event.getLocalPosition(game); // Display powerBar when basketball is clicked cyclePowerBars(); } }); ball.on('up', 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 (!powerBar1Displayed && mouseDownTime > 0 && Date.now() - mouseDownTime >= 200) { game.addChild(powerBar1); powerBar1Displayed = true; ball.speed.y = -80; // Shoot ball in the air 80 pixels } if (!powerBar3Displayed && mouseDownTime > 0 && Date.now() - mouseDownTime >= 600) { var powerBar3 = LK.getAsset('powerBar3', { anchorX: 0.5, anchorY: 0.5 }); powerBar3.x = 2048 - powerBar3.width / 2; powerBar3.y = 2732 - powerBar3.height - powerBar1.height / 2 - 20; // Position above powerBar1 game.addChild(powerBar3); powerBar3Displayed = true; } if (!powerBar4Displayed && mouseDownTime > 0 && Date.now() - mouseDownTime >= 800) { var powerBar2 = LK.getAsset('powerBar2', { anchorX: 0.5, anchorY: 0.5 }); powerBar2.x = 2048 - powerBar2.width / 2; powerBar2.y = 2732 - powerBar2.height / 2; var powerBar4 = LK.getAsset('powerBar4', { anchorX: 0.5, anchorY: 0.5 }); powerBar4.x = 2048 - powerBar4.width / 2; // Ensure powerBar2 is defined and use its height safely // Ensure all powerBars are defined and use their heights safely if (typeof powerBar2 !== 'undefined' && powerBar2 && typeof powerBar3 !== 'undefined' && powerBar3 && typeof powerBar1 !== 'undefined' && powerBar1) { powerBar4.y = 2732 - powerBar4.height - powerBar3.height - powerBar2.height - powerBar1.height / 2 - 60; // Position above powerBar3 } else { // Fallback position if any powerBar is not defined powerBar4.y = 2732 - powerBar4.height / 2 - 60; } game.addChild(powerBar4); powerBar4Displayed = true; ball.speed.y = -160; // Shoot ball in the air 160 pixels } 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 + powerBall.powerLevel / 10) / 3 * 1.5; ball.speed.y = Math.sin(angle) * 72 * 1.76 * (0.9 + powerBall.powerLevel / 10) * 1.5; 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); ball.throwSpeed = (Date.now() - mouseDownTime) / 1000; mouseDownTime = 0; 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 = 2632 + 900 * (ball.scale.y - 1); ball.y = floorY - ball.height; LK.on('tick', function () { if (scoreMultiplier > 1 && !ball.hasThrown) { 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 = 2632 + 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'; } } ballShadow.x = ball.x; ballShadow.y = 1800 + ball.height / 2 + 500 * ball.scale.x; var scale = (1 - 2 * (ball.y - 2732 + ball.height) / 2732) * ball.scale.x; ballShadow.scale.set(scale); ballShadow.alpha = (1 - scale + 1) / 2 * ball.alpha; // Removed code that makes ball go in opposite direction if it intersects with hands // Check for intersection with defender and make ball disappear for 1 second if (ball.intersects(teammate) && !ball.hasScored || ball.intersects(defender) && !ball.hasScored && !ball.hasThrown) { if (ball.intersects(teammate)) { // Currently, there's no pause method in the Defender class, so this line is commented out as a placeholder for future implementation or alternative logic. // defender.pause(); // Placeholder comment: Pause defender movement logic needs implementation or alternative approach ball.x = teammate.x; // Shoot ball from teammate's position ball.y = teammate.y; ball.hasThrown = true; // Ensure the ball is considered thrown } ball.visible = false; // Make ball invisible // Display miniball assets while ball is invisible // Display 8 miniballs while the main ball is invisible var miniballPositions = []; if (defender.x > 2048 / 2) { // Defender is on the right side for (var i = 0; i < 5; i++) { miniballPositions.push({ x: 2048 / 2 + 2048 / 10 * i, // Spread across the right half of the screen y: ball.y - 50 }); } } else { // Defender is on the left side for (var i = 0; i < 5; i++) { miniballPositions.push({ x: 2048 / 10 * i, // Spread across the left half of the screen y: ball.y - 50 }); } } LK.setTimeout(function () { ball.visible = true; // Make ball visible after delay }, 1500); } // Check if ball lands on the platform or the floor and hasn't scored yet if ((ball.y + ball.height > floorY || ball.intersects(platform) && ball.speed.y > 0) && !ball.hasScored) { ball.y = floorY - ball.height; ball.speed.y *= -0.75; ballShadow.x = ball.x; ballShadow.visible = true; if (ball.hasThrown && !ball.hasScored) { ball.hasBounced = true; ball.x = 2048 / 2; currentStreak = 0; 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.x += 5; if (hoop.x > 2048 - hoop.width / 2) { hoop.x = hoop.width / 2; } hoopRim.x = hoop.x; } else if (ball.hasScored) { ball.x = 2048 / 2; ball.y = floorY - 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; currentStreak += 1; if (currentStreak > longestStreak) { longestStreak = currentStreak; } // Generate flowers falling from the sky for (var i = 0; i < 10; i++) { // Generate 10 flowers var flower = new Flower(); flower.x = Math.random() * 2048; // Random x position across the screen width flower.y = -100; // Start just above the screen game.addChild(flower); } // Reset ball position and state after scoring ball.x = 2048 / 2; ball.y = floorY - 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; ball.alpha = 1; scoreMultiplier = 1; hoop.multiplierLabel.setText(''); hoop.x += 5; if (hoop.x > 2048 - hoop.width / 2) { hoop.x = hoop.width / 2; } hoopRim.x = hoop.x; if (score === 2024) { LK.showGameOver(); } else { hoop.scoreLabel.setText(score.toString()); hoop.setScore(score); } } });
===================================================================
--- original.js
+++ change.js
@@ -654,35 +654,10 @@
y: ball.y - 50
});
}
}
- var miniballs = miniballPositions.map(function (pos) {
- var miniball = LK.getAsset('MiniBall', {
- anchorX: 0.5,
- anchorY: 0.5
- });
- miniball.x = pos.x;
- miniball.y = pos.y;
- miniball.speedY = 5; // Set initial downward speed
- game.addChild(miniball);
- return miniball;
- });
LK.setTimeout(function () {
- // Delay making the ball visible until all miniballs have been removed
- LK.setTimeout(function () {
- ball.visible = true; // Make ball visible after miniballs disappear
- }, 3000); // Adjusted time to ensure miniballs have disappeared
- miniballs.forEach(function (miniball) {
- var dropInterval = LK.setInterval(function () {
- miniball.y += miniball.speedY; // Drop miniball
- miniball.speedY += 0.5; // Simulate gravity
- if (miniball.y > 2732 - miniball.height / 2) {
- // Check if miniball hits the floor
- LK.clearInterval(dropInterval);
- game.removeChild(miniball); // Remove miniball after hitting the floor
- }
- }, 16.67); // Approximately 60FPS
- });
+ ball.visible = true; // Make ball visible after delay
}, 1500);
}
// Check if ball lands on the platform or the floor and hasn't scored yet
if ((ball.y + ball.height > floorY || ball.intersects(platform) && ball.speed.y > 0) && !ball.hasScored) {
Basketball, cartoon style Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
4:3 Simple rectangle white outline. Black background
Paris. Paris basketball backgroung. Eiffel Tower. Eurosport logo. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
rainbow sparkle. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
two white palms facing forward no background. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows. HD Color
POV basketball court in forest. Full screen. Background. High detail
basketball barn background. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
basketball dungeon background. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
heaven background. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
pow effect. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
left hand. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Wide Single Orange metal bar lying down Single Game Texture. In-Game asset. 2d. Pixelart. White background. Blank background. Low detail. High contrast. —ar 2:1
https://kagi.com/proxy/basketball_backboard.png?c=iNrrnnUOe99nVfDGJsYBLujiaX2Hu-zxBFRkvLEyXdRnJ8cU3RjcAYbR-o12E923qVNGy1CEGrQG87ogCD3yUarJdZYt5R03mmEMb7Jrh-8%3D blank backboard Single Game Texture. In-Game asset. 2d. Pixelart. White background. Blank background. Low detail. High contrast.