User prompt
Исправить ошибку, когда игра начинает лагать после 10 забитых мячей подряд
User prompt
Исправить ошибку, когда после многих забитых головах, игра начинает лагать
Code edit (1 edits merged)
Please save this source code
User prompt
таймер отображается в правом верхнем углу экрана и не заходит за экран
Code edit (1 edits merged)
Please save this source code
User prompt
после того как мяч был забит, мяч возвращается в начальное положение и появляется красная корзина, вместо зеленой
User prompt
при повторных бросках вся механика сохраняется как и при первом броске
User prompt
перед тем как мяч появляется в начальном положении, зеленая корзина меняется на красную
User prompt
после 20 отскоков мяч возвращается в изначальное положение
User prompt
отскоков может быть только 20
User prompt
если мяч совершил 3 отскока от стен, то корзина меняется на зеленую и тогда засчитывается столкновение мяча с корзиной
User prompt
перед каждым новом броском, изначально появляется красная корзина
User prompt
при каждом новом броске, изначально появляется красная корзина
User prompt
после трех отскоков мяча от стен, на месте красной корзины появляется зеленая
User prompt
после трех отскоков мяча, на месте красной корзины появляется зеленая
User prompt
Please fix the bug: 'ReferenceError: basket2 is not defined' in or related to this line: 'var index = baskets.indexOf(basket2);' Line Number: 49
User prompt
после каждого броска, появляется только красная корзина
User prompt
после 20 отскоков, менять зеленую корзину на красную
Code edit (1 edits merged)
Please save this source code
User prompt
если мяч совершил 3 и более отскоков, то заменять корзину 2 на корзину 1
User prompt
количество отскоков может быть 20
User prompt
после броска, если мяч сделал 3 отскока, заменять корзину 2 на корзину 1
User prompt
мяч может совершить 20 касаний
User prompt
после трех отскоков мяча, на месте корзины 2, появляется корзина 1.
/****
* Classes
****/
// Assets will be automatically created based on usage in the code.
// Ball class
var Ball = Container.expand(function () {
var self = Container.call(this);
var ballGraphics = self.attachAsset('ball', {
anchorX: 0.5,
anchorY: 0.5
});
self.speedX = 0;
self.speedY = 0;
self.isMoving = false;
self.launch = function (speedX, speedY) {
self.speedX = speedX;
self.speedY = speedY;
self.isMoving = true;
};
self.bounceCount = 0; // Initialize bounce counter
self.update = function () {
if (self.isMoving) {
self.x += self.speedX;
self.y += self.speedY;
self.speedY += 0.98; // Gravity effect
// Change the direction of the ball's rotation based on its direction
if (self.speedX > 0) {
ballGraphics.rotation += 0.1;
} else if (self.speedX < 0) {
ballGraphics.rotation -= 0.1;
}
if (self.bounceCount >= 3) {
// Stop the ball after 3 bounces
self.speedX = 0;
self.speedY = 0;
self.isMoving = false;
// Replace Basket2 with Basket1
var index = baskets.indexOf(basket2);
if (index > -1) {
baskets.splice(index, 1);
basket2.destroy();
var basket1 = game.addChild(new Basket1());
basket1.x = basket2.x;
basket1.y = basket2.y;
baskets.push(basket1);
}
// Reset the ball to its initial position immediately
self.reset();
self.bounceCount = 0; // Reset the bounce counter
}
}
};
self.reset = function () {
self.x = 400; // Center horizontally
self.y = 1800; // Start position near bottom
self.speedX = 0;
self.speedY = 0;
self.isMoving = false;
};
});
// Basket class
var Basket = Container.expand(function () {
var self = Container.call(this);
var basketGraphics = self.attachAsset('basket', {
anchorX: 0.5,
anchorY: 0.5
});
});
// Basket1 class
var Basket1 = Container.expand(function () {
var self = Container.call(this);
var basket1Graphics = self.attachAsset('basket', {
anchorX: 0.5,
anchorY: 0.5
});
});
var Basket2 = Container.expand(function () {
var self = Container.call(this);
var basket2Graphics = self.attachAsset('basket2', {
anchorX: 0.5,
anchorY: 0.5
});
});
// Player class
var Player = Container.expand(function () {
var self = Container.call(this);
var playerGraphics = self.attachAsset('Player', {
anchorX: 0.5,
anchorY: 0.5
});
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x87CEEB // Light blue background
});
/****
* Game Code
****/
var background = game.addChild(LK.getAsset('Background', {
anchorX: 0.5,
anchorY: 0.5,
x: 2048 / 2,
y: 2732 / 2
}));
// Add a swipe image to the center of the screen
var swipe = game.addChild(LK.getAsset('swipe', {
anchorX: 0.5,
anchorY: 0.5,
x: 2048 / 2,
y: 2732 - 1020
}));
var player = game.addChild(new Player());
player.x = player.width / 2; // Position on the left side of the screen
player.y = 2732 - player.height / 2; // Position at the bottom of the screen
var ball = game.addChild(new Ball());
ball.x = 400;
ball.y = 1800;
var baskets = [];
// The basket is not added to the game initially
var basket2 = game.addChild(new Basket2());
basket2.x = Math.random() * (1800 - 300) + 300; // Random x-coordinate between 300 and 2000
basket2.y = Math.random() * (1500 - 500) + 500; // Random y-coordinate between 500 and 1500
baskets.push(basket2);
var lastTouchPosition = {
x: 0,
y: 0
};
// Initialize countdown timer text
var countdownTimerTxt = new Text2('20', {
size: 150,
fill: "#000000"
});
countdownTimerTxt.anchor.set(0.5, 0);
LK.gui.topRight.addChild(countdownTimerTxt);
countdownTimerTxt.x -= 80;
var countdownTimer = 20;
var countdownInterval = null;
game.on('down', function (obj) {
var pos = obj.event.getLocalPosition(game);
lastTouchPosition.x = pos.x;
lastTouchPosition.y = pos.y;
// Start countdown timer after game starts
if (!countdownInterval) {
countdownInterval = LK.setInterval(function () {
countdownTimer--;
countdownTimerTxt.setText(countdownTimer);
if (countdownTimer <= 0) {
LK.clearInterval(countdownInterval);
// Create a text object to display the number of goals scored
var goalsScoredTxt = new Text2(LK.getScore(), {
size: 150,
fill: "#ffffff"
});
goalsScoredTxt.anchor.set(0.5, 0);
// Position the text at the top left of the screen
goalsScoredTxt.x = 80;
goalsScoredTxt.y = 80;
// Add the text to the GUI overlay
LK.gui.topLeft.addChild(goalsScoredTxt);
LK.showGameOver();
// Reset countdown timer when game is over
countdownTimer = 20;
countdownTimerTxt.setText(countdownTimer);
LK.clearInterval(countdownInterval);
countdownInterval = null;
}
}, 1000);
}
});
game.on('up', function (obj) {
if (!ball.isMoving) {
var pos = obj.event.getLocalPosition(game);
var speedX = (pos.x - lastTouchPosition.x) / 10;
var speedY = (pos.y - lastTouchPosition.y) / 10;
ball.launch(speedX, speedY);
}
});
var ballStoppedTimer = null;
LK.on('tick', function () {
ball.update();
// Check for collisions with baskets
baskets.forEach(function (basket) {
if (Math.sqrt(Math.pow(ball.x - basket.x, 2) + Math.pow(ball.y - basket.y, 2)) <= ball.width / 2 + basket.width / 2) {
if (ball.bounceCount >= 3) {
LK.effects.flashScreen(0x00FF00, 500); // Flash green for success
ball.reset();
// Reset the countdown timer
countdownTimer = 20;
countdownTimerTxt.setText(countdownTimer);
// Move the basket to a random location at the top of the screen
basket.x = Math.random() * (1800 - 300) + 300; // Random x-coordinate between 300 and 2000
basket.y = Math.random() * (1500 - 500) + 500; // Random y-coordinate between 500 and 1500
ball.bounceCount = 0; // Reset the bounce counter
// Increment the number of goals scored
LK.setScore(LK.getScore() + 1);
}
}
});
// Bounce off the walls and ceiling
if (ball.x < 100) {
ball.x = 100; // Move the ball out of the wall
ball.speedX *= -0.8; // Decrease speed by 10% after bouncing
ball.speedX *= 0.75; // Decrease the next bounce by 20%
ball.bounceCount++; // Increment bounce counter
}
if (ball.x > 2000) {
ball.x = 2000; // Move the ball out of the wall
ball.speedX *= -0.8; // Decrease speed by 10% after bouncing
ball.speedX *= 0.75; // Decrease the next bounce by 20%
ball.bounceCount++; // Increment bounce counter
}
if (ball.y < 100) {
ball.y = 100; // Move the ball out of the ceiling
ball.speedY *= -0.8; // Decrease speed by 10% after bouncing
ball.speedY *= 0.75; // Decrease the next bounce by 20%
ball.bounceCount++; // Increment bounce counter
}
if (ball.y > 2632) {
ball.y = 2632; // Move the ball out of the floor
ball.speedY *= -0.8; // Decrease speed by 10% after bouncing
ball.speedY *= 0.75; // Decrease the next bounce by 20%
ball.bounceCount++; // Increment bounce counter
}
// Check if the ball has stopped moving and if it has been launched
if (ball.speedX === 0 && ball.speedY === 0 && ball.isMoving) {
// Start a timer if it's not already started
if (!ballStoppedTimer) {
ballStoppedTimer = LK.setTimeout(function () {
// Reset the ball to its initial position if it has been stopped for 1 second
ball.reset();
}, 1000);
}
} else {
// Clear the timer if the ball starts moving again
if (ballStoppedTimer) {
LK.clearTimeout(ballStoppedTimer);
ballStoppedTimer = null;
}
}
});
Basket. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Стена белая синия. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
граффити слово Swipe. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Граффити с текстом "after three bounces of the ball, a goal is scored". Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.