Code edit (7 edits merged)
Please save this source code
Code edit (2 edits merged)
Please save this source code
User prompt
Please fix the bug: 'ReferenceError: totalTime is not defined' in or related to this line: 'totalTime += gameTime;' Line Number: 742
Code edit (4 edits merged)
Please save this source code
User prompt
Please fix the bug: 'ReferenceError: defender is not defined' in or related to this line: 'if (Math.abs(defender.x - defender.targetX) <= 5 && Math.abs(defender.y - defender.targetY) <= 5) {' Line Number: 561
User prompt
Please fix the bug: 'ReferenceError: defender is not defined' in or related to this line: 'if (Math.abs(defender.x - defender.targetX) <= 5 && Math.abs(defender.y - defender.targetY) <= 5) {' Line Number: 560
Code edit (1 edits merged)
Please save this source code
User prompt
Please fix the bug: 'ReferenceError: miniballPositions is not defined' in or related to this line: 'miniballPositions.push({' Line Number: 746
Code edit (1 edits merged)
Please save this source code
User prompt
Please fix the bug: 'ReferenceError: gameround is not defined' in or related to this line: 'if (gameround < 5) {' Line Number: 736
Code edit (1 edits merged)
Please save this source code
/**** * Classes ****/ var Ball = Container.expand(function () { var self = Container.call(this); self.hasScored = false; self.hasBounced = false; self.beingDunked = 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 (clockwiseMultiplier, xBias, yBias) { 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 - xBias + (self.targetCorner + 1) % 4 % 3 * 3 % 5 % 2 * 1100; self.targetY = hoopRim.y - yBias + clockwiseMultiplier * (self.targetCorner + 0) % 4 % 3 * 3 % 5 % 2 * 833; 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 = ['dust', 'dust', 'dust']; 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 Teammate = Container.expand(function (asset, xBias) { var self = Container.call(this); var handsWithGlovesGraphics = self.attachAsset(asset, { anchorX: 0.5, anchorY: 0.5 }); self.dunking = false; self.targetX = 475 + xBias; self.targetY = 833; self.rotationTarget = 0; self.targetCorner = 0; self.distanceFromTarget = function () { self.distanceX = self.targetX - self.x; self.distanceY = self.targetY - self.y; self.amountToRotate = self.rotationTarget - self.rotation; }; self.pickNewTarget = function () { self.targetCorner = (self.targetCorner + 1) % 2; self.targetX = hoopRim.x - 550 + xBias; self.targetY = hoopRim.y - 550 + self.targetCorner * 600; self.rotationTarget = 0; self.distanceFromTarget(); }; self.move = function () { self.x += self.distanceX * 0.01; self.y += self.distanceY * 0.01; self.rotation += self.amountToRotate * 0.01; }; self.dunk = function () { self.x += self.distanceX * 0.5; self.y += self.distanceY * 0.5; self.rotation += self.amountToRotate * 0.5; }; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x000000 }); /**** * Game Code ****/ var miniballPositions = []; // ********* // Variables // ********* var longestStreak = 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 gameRound = 1; var currentBackground; var timerTxt = new Text2('100', { size: 150, fill: "#ffffff" }); timerTxt.anchor.set(0, 0); timerTxt.x = 50; timerTxt.y = 50; var gameTime = 100; var score = 0; var scoreMultiplier = 1; var hoop = game.addChild(new Hoop()); var ballShadow = LK.getAsset('ballShadow', { anchorX: 0.5, anchorY: 0.5 }); ballShadow.alpha = 0.5; 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; var isGamePaused = false; var floorY = 2632 + 900 * (ball.scale.y - 1); ball.y = floorY - ball.height; powerBarIncrease = 0; var currentPowerBar = 0; var dragStart = null; var shotAboveRim = false; // ********* // Functions // ********* // This function resets/updates the assets at each round var newRoundFunc = function newRoundFunc(round) { // background game.removeChild(currentBackground); currentBackground = LK.getAsset('background' + round, { anchorX: 0.5, anchorY: 0.5 }); currentBackground.x = 2048 / 2; currentBackground.y = 2732 / 2 + 150; currentBackground.alpha = 0.7; game.addChild(currentBackground); // Timer text LK.gui.topLeft.addChild(timerTxt); // remove assets //game.removeChild(defender); //game.removeChild(teammate1); //game.removeChild(teammate2); // add assets in correct order game.addChild(hoop); if (round == 1) { var teammate1 = game.addChild(new Teammate('teammate1', 0)); teammate1.x = 2048 / 4; teammate1.y = 2000 - teammate1.height / 2; teammate1.distanceFromTarget(); var teammate2 = game.addChild(new Teammate('teammate2', 1100)); teammate2.x = 1575; teammate2.y = 2000 - teammate1.height / 2; teammate2.distanceFromTarget(); game.addChild(teammate1); game.addChild(teammate2); } if (round == 2) { //delete(teammate1); game.removeChild(teammate1); } if (round == 3) { //delete(teammate1); var defender = game.addChild(new Defender(1, 550, 550)); defender.x = 1575; defender.y = 2732 / 2 - 500; // Position above the hoop defender.distanceFromTarget(); game.addChild(defender); } if (round == 4) { game.removeChild(teammate2); } if (round == 5) { // Define defender variable in global scope var defender = null; var defender2 = game.addChild(new Defender(-1, 550, -320)); defender2.x = 1575; defender2.y = 2732 / 2 + 320; // Position above the hoop defender2.distanceFromTarget(); game.addChild(defender2); } game.addChild(ballShadow); game.addChild(ball); game.addChild(hoopRim); // Round text var roundText = new Text2('ROUND ' + round, { size: 200, fill: "#ffffff", alpha: 1 }); roundText.anchor.set(0.5, 0.5); // Center the text roundText.x = 2048 / 2; // Center horizontally roundText.y = 500; // Center vertically game.addChild(roundText); // Remove roundtext after 3 seconds LK.setTimeout(function () { game.removeChild(roundText); }, 3000); }; // updates the clock or something var timerInterval = LK.setInterval(function () { if (!isGamePaused) { gameTime--; if (gameTime <= 0) { LK.clearInterval(timerInterval); LK.showGameOver(); return; } timerTxt.setText(gameTime.toString()); } }, 1000); // Cycle through power bar assets var cyclePowerBars = function cyclePowerBars() { currentPowerBar = currentPowerBar % 8 + 1; 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); }, 300); ball.throwSpeed = 1 + currentPowerBar / 4; }; // star powering up the shot ball.on('down', function (obj) { if (!ball.hasThrown) { mouseDownTime = Date.now(); powerBar1Displayed = false; var event = obj.event; dragStart = event.getLocalPosition(game); } }); // something to do with dragging the ball 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); } }); // Release of shot 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 = -ball.throwSpeed * Math.cos(angle) * 25; ball.speed.y = -ball.throwSpeed * Math.sin(angle) * 40; ball.hasThrown = true; ball.hitElement = ''; game.removeChild(ball); game.addChild(ball); dragStart = null; } }; // initiate release of shot game.on('up', function (obj) { if (dragStart !== null) { mouseDownTime = 0; 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; }); // Start first round newRoundFunc(gameRound); // Tutorial text var tutorialText = new Text2(' Pull down to \n shoot or pass!', { size: 80, fill: "#000000", alpha: 1 }); tutorialText.anchor.set(0.5, 0.5); // Center the text tutorialText.x = 2048 / 2; // Center horizontally tutorialText.y = 2600; // Center vertically game.addChild(tutorialText); // Remove tutorialtext after 3 seconds LK.setTimeout(function () { game.removeChild(tutorialText); }, 3000); // ************** // MAIN GAME LOOP // ************** LK.on('tick', function () { if (ball.y < hoop.y) { shotAboveRim = true; } if (Math.abs(defender.x - defender.targetX) <= 5 && Math.abs(defender.y - defender.targetY) <= 5) { defender.pickNewTarget(); defender.distanceFromTarget(); defender.move(); } else { defender.move(); } if (Math.abs(defender2.x - defender2.targetX) <= 5 && Math.abs(defender2.y - defender2.targetY) <= 5) { defender2.pickNewTarget(); defender2.distanceFromTarget(); defender2.move(); } else { defender2.move(); } //teammate1.move(); if (ball.beingDunked == true && teammate1.dunking) { ball.x = teammate1.x; ball.y = teammate1.y; //teammate1.move(); } else if (Math.abs(teammate1.x - teammate1.targetX) <= 5 && Math.abs(teammate1.y - teammate1.targetY) <= 5) { teammate1.pickNewTarget(); teammate1.distanceFromTarget(); teammate1.move(); } else { teammate1.move(); } //teammate2.move(); if (ball.beingDunked == true && teammate2.dunking) { ball.x = teammate2.x; ball.y = teammate2.y; //teammate1.move(); } else if (Math.abs(teammate2.x - teammate2.targetX) <= 5 && Math.abs(teammate2.y - teammate2.targetY) <= 5) { teammate2.pickNewTarget(); teammate2.distanceFromTarget(); teammate2.move(); } else { teammate2.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); } } powerBarIncrease += 1; if (powerBarIncrease % 10 == 0) { if (mouseDownTime > 0) { cyclePowerBars(); } else { powerBarIncrease = 0; currentPowerBar = 0; } } 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 // Check if ball lands on the platform or the floor and hasn't scored yet if (ball.y + ball.height > floorY && ball.speed.y > 0) { shotAboveRim = false; 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; 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() * 1000 + 500, Math.random() * 1000 + 900, 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 && shotAboveRim == true) { ball.hasScored = true; ball.beingDunked = false; teammate1.dunking = false; teammate2.dunking = false; shotAboveRim = false; score += scoreMultiplier * 2; // 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); } if (hoop.x > 2048 - hoop.width / 2) { hoop.x = hoop.width / 2; } hoopRim.x = hoop.x; if (score >= 3) { if (gameRound < 5) { score = 0; // Reset score to 0 gameTime = 100; // Reset timer to 100 timerTxt.setText(gameTime.toString()); // Update timer display hoop.scoreLabel.setText(score.toString()); hoop.setScore(score); gameRound = gameRound + 1; newRoundFunc(gameRound); } else { for (var i = 0; i < 5; i++) { miniballPositions.push({ x: 2048 / 2 + 2048 / 10 * i, // Spread across the right half of the screen y: 1000 }); } } } else { hoop.scoreLabel.setText(score.toString()); hoop.setScore(score); } } if (ball.intersects(defender) && !ball.hasScored && ball.hasThrown && !ball.beingDunked) { scoreMultiplier = 1; // Reset multiplier var dust = new ExplosionParticle(); dust.x = defender.x + (Math.random() - 0.5) * defender.width; dust.y = defender.y + (Math.random() - 0.5) * defender.height; dust.alpha = 1; game.addChild(dust); LK.setTimeout(function () { game.removeChild(dust); }, 500); hoop.multiplierLabel.setText(''); // 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 }); } }*/ // Reset ball ball.x = 2048 / 2; ball.y = floorY - ball.height - 50; ball.speed.x = 0; ball.speed.y = 0; ball.hasThrown = false; ball.visible = true; // Ensure ball is visible after reset } else if (ball.intersects(defender2) && !ball.hasScored && ball.hasThrown && !ball.beingDunked) { scoreMultiplier = 1; // Reset multiplier var dust = new ExplosionParticle(); dust.x = defender2.x + (Math.random() - 0.5) * defender2.width; dust.y = defender2.y + (Math.random() - 0.5) * defender.height; dust.alpha = 1; game.addChild(dust); LK.setTimeout(function () { game.removeChild(dust); }, 500); hoop.multiplierLabel.setText(''); // Reset ball ball.x = 2048 / 2; ball.y = floorY - ball.height - 50; ball.speed.x = 0; ball.speed.y = 0; ball.hasThrown = false; ball.visible = true; // Ensure ball is visible after reset } else if (ball.intersects(teammate1) && !ball.hasScored && !ball.hasBounced && ball.hasThrown) { if (ball.beingDunked == false) { ball.beingDunked = true; teammate1.dunking = true; teammate1.targetX = hoopRim.x + 500; teammate1.targetY = hoopRim.y - 300; teammate1.rotationTarget = 1.57; teammate1.distanceFromTarget(); teammate1.dunk(); } } else if (ball.intersects(teammate2) && !ball.hasScored && !ball.hasBounced && ball.hasThrown) { if (ball.beingDunked == false) { ball.beingDunked = true; teammate2.dunking = true; teammate2.targetX = hoopRim.x - 500; teammate2.targetY = hoopRim.y - 300; teammate2.rotationTarget = -1.57; teammate2.distanceFromTarget(); teammate2.dunk(); } } });
===================================================================
--- original.js
+++ change.js
@@ -399,9 +399,10 @@
if (round == 4) {
game.removeChild(teammate2);
}
if (round == 5) {
- var defender;
+ // Define defender variable in global scope
+ var defender = null;
var defender2 = game.addChild(new Defender(-1, 550, -320));
defender2.x = 1575;
defender2.y = 2732 / 2 + 320; // Position above the hoop
defender2.distanceFromTarget();
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.