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.launch = function (speedX, speedY) { self.speedX = speedX; self.speedY = speedY; self.isMoving = true; }; self.update = function () { if (self.isMoving) { self.x += self.speedX; self.y += self.speedY; self.speedY += 0.98; // Gravity effect } }; self.reset = function () { self.x = 1024; // Center horizontally self.y = 2500; // 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 }); }); // 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 })); 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 = []; var basket = game.addChild(new Basket()); basket.x = 2048 - basket.width / 2; // Position on the right side of the screen basket.y = 2732 / 2; // Center vertically baskets.push(basket); 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(); // Check for collisions with baskets baskets.forEach(function (basket) { if (ball.intersects(basket)) { LK.effects.flashScreen(0x00FF00, 500); // Flash green for success ball.reset(); } }); // Reset ball if it goes off screen if (ball.y > 2732) { ball.reset(); } });
===================================================================
--- original.js
+++ change.js
@@ -11,48 +11,26 @@
});
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.x = 1024; // Center horizontally
+ self.y = 2500; // Start position near bottom
self.speedX = 0;
self.speedY = 0;
self.isMoving = false;
- self.bounceCount = 0; // Reset bounce counter on reset
};
});
// Basket class
var Basket = Container.expand(function () {
@@ -84,21 +62,21 @@
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
+ y: 2732 / 2
}));
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;
+ball.x = 400;
+ball.y = 1800;
+var baskets = [];
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
+basket.x = 2048 - basket.width / 2; // Position on the right side of the screen
+basket.y = 2732 / 2; // Center vertically
+baskets.push(basket);
var lastTouchPosition = {
x: 0,
y: 0
};
@@ -116,45 +94,16 @@
}
});
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
+ // Check for collisions with baskets
+ baskets.forEach(function (basket) {
+ if (ball.intersects(basket)) {
+ LK.effects.flashScreen(0x00FF00, 500); // Flash green for success
+ ball.reset();
}
+ });
+ // Reset ball if it goes off screen
+ if (ball.y > 2732) {
+ ball.reset();
}
});
\ 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.