Code edit (1 edits merged)
Please save this source code
User prompt
после любого отскока, скорость мяча уменьшается в 1,5 раза
User prompt
добавить физику отскока мяча
User prompt
после отскока, скорость мяча уменьшается в 1.6 раза
User prompt
добавить отскок от стен, потолка и пола
Code edit (1 edits merged)
Please save this source code
User prompt
добавить задний фон
User prompt
если мячик коснулся левой или правой стороны изображения корзины, то победа, если коснулся нижней части или верхней, то отскок с таким углом, с каким коснулся мячик изображения
User prompt
Если изображение мячика коснулось с изображением корзины, то отскок мячика в зеркальном направлении от первоначального направления
User prompt
добавить условие, если изображение мячика коснулось с изображением корзины, то отскок
User prompt
переместить корзину в центр экрана
User prompt
Добавить корзину в правой стороне экрана
User prompt
Удалить корзину
User prompt
Please fix the bug: 'TypeError: LK.showVictory is not a function. (In 'LK.showVictory()', 'LK.showVictory' is undefined)' in or related to this line: 'LK.showVictory(); // Show victory screen' Line Number: 133
User prompt
Если мяч попал в верхнюю часть корзины, то победа
User prompt
Как только мяч пересекает корзину, то отскок
User prompt
Проверять пересечение мяча и корзины по изображению, а не по объектам
User prompt
При столкновении изображения мяча с изображением корзины, мяч отскакивает
User prompt
Добавить корзину в правую часть экрана
Code edit (1 edits merged)
Please save this source code
User prompt
После 15 отскоков, через 1,4 секунды game over
User prompt
После 15 отскоков, через 1 секунду game over
User prompt
Если мяч в течении двух секунд после броска не двигается, то проигрыш
User prompt
Скорость вращения мяча уменьшается на 0.1 с каждым отскоком
User prompt
Скорость вращения мяча уменьшается с каждым отскоком на 0.12
/**** * 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.bounceCount = 0; // Add a bounce counter self.launch = function (speedX, speedY) { self.speedX = speedX; self.speedY = speedY; self.isMoving = true; self.bounceCount = 0; // Reset bounce counter on launch }; self.update = function () { if (self.isMoving) { if (self.bounceCount >= 15) { self.isMoving = false; LK.setTimeout(function () { LK.effects.flashScreen(0xff0000, 1000); // Flash screen red for 1 second to indicate loss LK.showGameOver(); // Show game over screen }, 1000); } self.rotation -= 0.1 - self.bounceCount * 0.01; // Decrease rotation speed after each bounce self.x += self.speedX; self.y += self.speedY; self.speedY += 0.98; // Gravity effect // If the ball's speed is very low, it's probably hanging in the air if (Math.abs(self.speedX) < 0.01 && Math.abs(self.speedY) < 0.01) { self.hangingTicks = (self.hangingTicks || 0) + 1; // If the ball has been hanging for more than 120 ticks (2 seconds), trigger loss if (self.hangingTicks > 120) { LK.effects.flashScreen(0xff0000, 1000); // Flash screen red for 1 second to indicate loss LK.showGameOver(); // Show game over screen } } else { self.hangingTicks = 0; } } }; self.reset = function () { self.x = 420; // Set x position self.y = 1790; // Set y position self.speedX = 0; self.speedY = 0; self.isMoving = false; self.bounceCount = 0; // Reset bounce counter on reset }; }); // Basket class var Basket = Container.expand(function () { var self = Container.call(this); var basketGraphics = self.attachAsset('basket', { 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, scaleX: 2048 / 2732, scaleY: 2732 / 2732 })); 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 = 420; ball.y = 1790; var basket = game.addChild(new Basket()); basket.x = 2048 / 2; // Position at the center of the screen basket.y = 2732 / 2; // Position at the middle of the screen var lastTouchPosition = { x: 0, y: 0 }; game.on('down', function (obj) { var pos = obj.event.getLocalPosition(game); lastTouchPosition.x = pos.x; lastTouchPosition.y = pos.y; }); 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); } }); LK.on('tick', function () { ball.update(); // Bounce the ball off the left and right screen edges if (ball.x < ball.width / 2) { ball.speedX = -ball.speedX / 1.5; // Make the ball bounce off at half speed ball.bounceCount++; // Increase bounce count ball.x = ball.width / 2; // Correct the position to prevent the ball from going off screen } else if (ball.x > 2048 - ball.width / 2) { ball.speedX = -ball.speedX / 1.5; // Make the ball bounce off at half speed ball.bounceCount++; // Increase bounce count ball.x = 2048 - ball.width / 2; // Correct the position to prevent the ball from going off screen } // Bounce the ball off the floor if (ball.y > 2732 - ball.height / 2) { ball.speedY = -ball.speedY / 1.5; // Make the ball bounce off at half speed ball.bounceCount++; // Increase bounce count ball.y = 2732 - ball.height / 2; // Correct the position to prevent the ball from going off screen } // Bounce the ball off the ceiling if (ball.y < ball.height / 2) { ball.speedY = -ball.speedY / 1.5; // Make the ball bounce off at half speed ball.bounceCount++; // Increase bounce count ball.y = ball.height / 2; // Correct the position to prevent the ball from going off screen } // Check if ball intersects with the left or right side of the basket and declare victory, if it intersects with the top or bottom, make it bounce at the same angle it hit the basket if (ball.intersects(basket)) { var ballCenter = ball.y + ball.height / 2; var basketTop = basket.y - basket.height / 2; var basketBottom = basket.y + basket.height / 2; if (ballCenter > basketTop && ballCenter < basketBottom) { // Ball hit the left or right side of the basket, declare victory LK.setTimeout(function () { LK.effects.flashScreen(0x00ff00, 1000); // Flash screen green for 1 second to indicate victory LK.showGameOver(); // Show game over screen }, 1000); } else { // Ball hit the top or bottom of the basket, make it bounce ball.speedY = -ball.speedY / 1.5; // Make the ball bounce off at half speed vertically ball.speedX = -ball.speedX / 1.5; // Make the ball bounce off at half speed horizontally ball.bounceCount++; // Increase bounce count } } });
===================================================================
--- original.js
+++ change.js
@@ -138,11 +138,23 @@
ball.speedY = -ball.speedY / 1.5; // Make the ball bounce off at half speed
ball.bounceCount++; // Increase bounce count
ball.y = ball.height / 2; // Correct the position to prevent the ball from going off screen
}
- // Bounce the ball off the basket
+ // Check if ball intersects with the left or right side of the basket and declare victory, if it intersects with the top or bottom, make it bounce at the same angle it hit the basket
if (ball.intersects(basket)) {
- ball.speedY = -ball.speedY / 1.5; // Make the ball bounce off at half speed vertically
- ball.speedX = -ball.speedX / 1.5; // Make the ball bounce off at half speed horizontally
- ball.bounceCount++; // Increase bounce count
+ var ballCenter = ball.y + ball.height / 2;
+ var basketTop = basket.y - basket.height / 2;
+ var basketBottom = basket.y + basket.height / 2;
+ if (ballCenter > basketTop && ballCenter < basketBottom) {
+ // Ball hit the left or right side of the basket, declare victory
+ LK.setTimeout(function () {
+ LK.effects.flashScreen(0x00ff00, 1000); // Flash screen green for 1 second to indicate victory
+ LK.showGameOver(); // Show game over screen
+ }, 1000);
+ } else {
+ // Ball hit the top or bottom of the basket, make it bounce
+ ball.speedY = -ball.speedY / 1.5; // Make the ball bounce off at half speed vertically
+ ball.speedX = -ball.speedX / 1.5; // Make the ball bounce off at half speed horizontally
+ ball.bounceCount++; // Increase bounce count
+ }
}
});
\ No newline at end of file
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.