Code edit (4 edits merged)
Please save this source code
User prompt
Please fix the bug: 'Uncaught TypeError: Cannot read properties of undefined (reading 'x')' in or related to this line: 'self.targetX = hoopRim.x;' Line Number: 96
Code edit (1 edits merged)
Please save this source code
User prompt
Please fix the bug: 'Uncaught TypeError: Cannot read properties of undefined (reading 'x')' in or related to this line: 'self.targetX = hoopRim.x;' Line Number: 96
Code edit (1 edits merged)
Please save this source code
User prompt
if the ball lands on the platform you can reshoot it from the platform
User prompt
Please fix the bug: 'Uncaught TypeError: game.getChild is not a function' in or related to this line: 'var hoopRimSeparateAsset = game.getChild('hoopRim');' Line Number: 95
Code edit (4 edits merged)
Please save this source code
User prompt
Please fix the bug: 'Uncaught TypeError: game.getChildByName is not a function' in or related to this line: 'var hoopRimSeparateAsset = game.getChildByName('hoopRim');' Line Number: 95
User prompt
Please fix the bug: 'Uncaught ReferenceError: hoopRimSeparate is not defined' in or related to this line: 'self.targetX = hoopRimSeparate.x + (Math.random() - 0.5) * 900;' Line Number: 95
User prompt
Please fix the bug: 'Uncaught TypeError: Cannot read properties of undefined (reading 'x')' in or related to this line: 'self.targetX = hoopRim.x + (Math.random() - 0.5) * 900;' Line Number: 95
Code edit (1 edits merged)
Please save this source code
Code edit (4 edits merged)
Please save this source code
User prompt
make 'defender' asset move more gradually
Code edit (1 edits merged)
Please save this source code
User prompt
make 'defender' asset move randomly within 200 pixel radius of 'hoopRimSeparate' asset
User prompt
if 'ball' asset intersects with 'defender' asset, reverse the direction of the ball
User prompt
place powerball asset to right of ball
User prompt
place powerbar asset above ball
User prompt
Please fix the bug: 'ReferenceError: pauseButton is not defined' in or related to this line: 'if (obj.event.target === pauseButton) {' Line Number: 375
User prompt
Please fix the bug: 'ReferenceError: pauseButton is not defined' in or related to this line: 'if (obj.event.target === pauseButton) {' Line Number: 374
User prompt
add pause game feature
User prompt
count only in seconds not in both minutes and seconds
User prompt
start coutdown timer at 100 seconds
User prompt
display powerbar on bottom right of screen
/**** 
* Classes
****/ 
var Ball = Container.expand(function () {
	var self = Container.call(this);
	self.hasScored = false;
	self.hasBounced = false;
	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;
			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;
		}
		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 = HoopRim.x;
	self.targetY = HoopRim.y;
	self.pickNewTarget = function () {
		// Gradually move defender within 200 pixel radius of 'hoopRimSeparate' asset
		self.targetX = hoopRim.x + (Math.random() - 0.5) * 100; // Target position within 200 pixels radius
		self.targetY = hoopRim.y + (Math.random() - 0.5) * 100;
	};
	self.move = function () {
		self.x += (self.targetX - self.x) * 0.1; // Move 10% towards the target each tick
		self.y += (self.targetY - self.y) * 0.1;
	};
});
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 longestStreak = 0;
var currentStreak = 0;
LK.on('tick', function () {
	if (defender.x == defender.targetX) {
		defender.pickNewTarget();
		defender.move();
	} else {
		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('background', {
	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;
};
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) {
	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
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) {
		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 + powerBall.powerLevel / 10) / 3;
		ball.speed.y = Math.sin(angle) * 72 * 1.76 * (0.9 + powerBall.powerLevel / 10);
		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 > 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 = 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';
		}
	}
	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;
	// Check if ball intersects with defender and reverse direction
	if (ball.intersects(defender)) {
		ball.speed.x *= -1;
		ball.speed.y *= -1;
	}
	if (ball.y + ball.height > floorY) {
		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 = 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;
		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);
		}
		// Explosion effect removed
		if (score === 2024) {
			LK.showGameOver();
		} else {
			hoop.scoreLabel.setText(score.toString());
			hoop.setScore(score);
		}
	}
}); ===================================================================
--- original.js
+++ change.js
@@ -74,10 +74,10 @@
 	var defenderGraphics = self.attachAsset('defender', {
 		anchorX: 0.5,
 		anchorY: 0.5
 	});
-	self.targetX = hoop.hoopRimGraphics.x;
-	self.targetY = hoop.hoopRimGraphics.y;
+	self.targetX = HoopRim.x;
+	self.targetY = HoopRim.y;
 	self.pickNewTarget = function () {
 		// Gradually move defender within 200 pixel radius of 'hoopRimSeparate' asset
 		self.targetX = hoopRim.x + (Math.random() - 0.5) * 100; // Target position within 200 pixels radius
 		self.targetY = hoopRim.y + (Math.random() - 0.5) * 100;
 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.