User prompt
пересечение объектов игрока и противника в радиусе изображения, а не объекта
User prompt
пересечение игрока и противника проверяется по изображению картинки игрока X=90 y=190
User prompt
исправить ошибку, когда столкновение еще не произошло, а уже game over
User prompt
пересечение игрока и противника проверяется по изображению картинок, а не по X=200 y=100
Code edit (1 edits merged)
Please save this source code
User prompt
изменить скорость поворота с 1 градуса на 0.5 градуса
User prompt
скорость поворота у противника = 1 градус
User prompt
при преследовании игрока, противник плавно разворачивается = 1 градус
User prompt
правая сторона задает направление противника
User prompt
поворачивать плавно изображение противника, левая сторона задает направление противника
User prompt
противник преследует цель столкновения с игроком и летит за ним
Code edit (2 edits merged)
Please save this source code
User prompt
сделать проверку пересечение изображений в рамках x=200, y=100
User prompt
самолет должен летать между боковыми стенами без game over
User prompt
добавить такую же проверку по X координате
User prompt
исправить ошибку, когда столкновении игрока и противника засчитывается после того, как они уже врезались
User prompt
сделать смерить при столкновении в радиусе изображения, а не объекта
Code edit (1 edits merged)
Please save this source code
User prompt
добавить противника бота, который летает по карте и пытается убить игрока
User prompt
противник начинает движение горизонтально, а потом может двигаться вертикально
User prompt
противник не может пересечь health_bar
Code edit (1 edits merged)
Please save this source code
User prompt
механика поворотов противника, такая же как у игрока
User prompt
против летит 2 секунды горизонтально, потом направление раномно меняется
Code edit (1 edits merged)
Please save this source code
/**** * Classes ****/ // Bullet class var Bullet = Container.expand(function () { var self = Container.call(this); var bulletGraphics = self.attachAsset('bullet', { width: 15, height: 15, color: 0xffffff, shape: 'box' }); self.speed = -30; // Move bullet self.move = function () { self.x += self.speedX; self.y += self.speedY; }; }); // EnemyPlane class var EnemyPlane = Container.expand(function () { var self = Container.call(this); var enemyPlaneGraphics = self.attachAsset('enemy', { anchorX: 0.5, anchorY: 0.5 }); self.speedX = -5; self.speedY = 0; // Update enemy plane position self.update = function () { // If the plane has been flying horizontally for 120 frames (2 seconds at 60FPS) if (LK.ticks % 120 == 0) { // Randomly change the vertical speed between -5 and 5 self.speedY = Math.floor(Math.random() * 11) - 5; } self.x += self.speedX; self.y += self.speedY; if (self.x < 0) { self.x = 2048; } else if (self.x > 2048) { self.x = 0; } if (self.y < 0) { self.y = 0; self.speedY = 0; } else if (self.y > 2732 - self.height) { self.y = 2732 - self.height; self.speedY = 0; } // Implement the same rotation mechanics for the enemy plane as the player's plane if (isTouchingLeft) { var angle = Math.atan2(self.speedY, self.speedX); angle -= Math.PI / 60; // Subtract 1.5 degrees (in radians) for counter-clockwise rotation self.speedX = Math.cos(angle) * 6; self.speedY = Math.sin(angle) * 6; self.rotation -= Math.PI / 60; // Rotate the plane counter-clockwise } if (isTouchingRight && LK.ticks > 78) { var angle = Math.atan2(self.speedY, self.speedX); angle += Math.PI / 60; // Add 1.5 degrees (in radians) for clockwise rotation self.speedX = Math.cos(angle) * 6; self.speedY = Math.sin(angle) * 6; self.rotation += Math.PI / 60; // Rotate the plane clockwise } }; self.shoot = function () { var bullet = new Bullet(); var planeBackX = self.x - self.width / 2 * Math.cos(self.rotation); var planeBackY = self.y - self.width / 2 * Math.sin(self.rotation); bullet.x = planeBackX; bullet.y = planeBackY; bullet.speedX = 2 * self.speedX; bullet.speedY = 2 * self.speedY; bullets.push(bullet); game.addChild(bullet); }; }); // Plane1 class var Plane1 = Container.expand(function () { var self = Container.call(this); var planeGraphics = self.attachAsset('plane', { anchorX: 0.5, anchorY: 0.5 }); self.speedX = 6; self.speedY = 0; // Update plane position self.update = function () { self.x += self.speedX; self.y += self.speedY; // Check if the plane has crossed the screen boundary if (self.x < 0) { self.x = 2048; } else if (self.x > 2048) { self.x = 0; } // Prevent the plane from crossing the floor and ceiling if (self.y < 0) { self.y = 0; self.speedY = 0; } else if (self.y > 2752 - self.height) { self.y = 2752 - self.height; self.speedY = 0; } }; // Plane shoots a bullet self.shoot = function () { var bullet = new Bullet(); // Set bullet position to the front of the plane var planeFrontX = self.x + self.width / 2 * Math.cos(self.rotation); var planeFrontY = self.y + self.width / 2 * Math.sin(self.rotation); bullet.x = planeFrontX; bullet.y = planeFrontY; // Set bullet speed to twice the plane's speed in the direction of the plane bullet.speedX = 2 * self.speedX; bullet.speedY = 2 * self.speedY; bullets.push(bullet); game.addChild(bullet); }; }); /**** * Initialize Game ****/ // Enemy plane class removed // Assets are automatically created based on usage in the code. var game = new LK.Game({ backgroundColor: 0xffffff // Init game with white background }); /**** * Game Code ****/ // Create an enemy plane var enemyPlane = new EnemyPlane(); enemyPlane.x = 1950; enemyPlane.y = 2750 - enemyPlane.height; game.addChild(enemyPlane); // Add health_bar to the top of the game var healthBar = LK.gui.top.attachAsset('health_bar', { anchorX: 0.5, anchorY: 0 }); healthBar.x = 2048 / 8; healthBar.y = -20; // Add first heart to the health_bar var heart1 = healthBar.attachAsset('heart', { anchorX: 0.5, anchorY: 0.5 }); heart1.x = 395; heart1.y = 90; // Ensure the heart is always in the foreground if (healthBar.children.length > 0) { healthBar.setChildIndex(heart1, healthBar.children.length - 1); } else { healthBar.addChild(heart1); } // Add second heart to the health_bar var heart2 = healthBar.attachAsset('heart', { anchorX: 0.5, anchorY: 0.5 }); heart2.x = 280; heart2.y = 90; // Ensure the heart is always in the foreground if (healthBar.children.length > 0) { healthBar.setChildIndex(heart2, healthBar.children.length - 1); } else { healthBar.addChild(heart2); } // Add third heart to the health_bar var heart3 = healthBar.attachAsset('heart', { anchorX: 0.5, anchorY: 0.5 }); heart3.x = 165; heart3.y = 90; // Ensure the heart is always in the foreground if (healthBar.children.length > 0) { healthBar.setChildIndex(heart3, healthBar.children.length - 1); } else { healthBar.addChild(heart3); } // Add death image to the health_bar var deathImage = healthBar.attachAsset('death', { anchorX: 0.5, anchorY: 0.5 }); deathImage.x = -600; deathImage.y = 90; // Ensure the death image is always in the foreground if (healthBar.children.length > 0) { healthBar.setChildIndex(deathImage, healthBar.children.length - 1); } else { healthBar.addChild(deathImage); } // Add background to the bottom of the game var background = game.attachAsset('background', { anchorX: 0, anchorY: 1, scaleX: 1, scaleY: 1 }); background.y = 2732; var bullets = []; // Global array to keep track of bullets var bullets = []; // Global array to keep track of bullets // Create a player plane var plane1 = new Plane1(); plane1.x = 100; plane1.y = 2750 - plane1.height; // Bottom of the screen game.addChild(plane1); // Set up game tick LK.on('tick', function () { plane1.update(); enemyPlane.update(); // Plane shoots a bullet every 0.8 seconds if (LK.ticks % 48 == 0) { plane1.shoot(); enemyPlane.shoot(); } // Update and check bullets for (var i = bullets.length - 1; i >= 0; i--) { bullets[i].move(); // Remove off-screen bullets if (bullets[i].x > 2048 || bullets[i].y > 2732) { bullets[i].destroy(); bullets.splice(i, 1); } } }); // Flags to track if the screen is being touched var isTouchingLeft = false; var isTouchingRight = false; // Change plane direction when the screen is touched var initialTouchPosition = null; game.on('down', function (obj) { initialTouchPosition = obj.event.getLocalPosition(game); }); game.on('move', function (obj) { if (initialTouchPosition) { var currentTouchPosition = obj.event.getLocalPosition(game); var swipeDirection = currentTouchPosition.x - initialTouchPosition.x; if (swipeDirection < 0) { isTouchingLeft = true; isTouchingRight = false; } else if (swipeDirection > 0) { isTouchingRight = true; isTouchingLeft = false; } } }); // Stop changing plane direction when the screen is no longer being touched game.on('up', function (obj) { isTouchingLeft = false; isTouchingRight = false; initialTouchPosition = null; }); // In the game tick, change plane direction while the screen is being touched LK.on('tick', function () { if (isTouchingLeft) { var angle = Math.atan2(plane1.speedY, plane1.speedX); angle -= Math.PI / 60; // Subtract 1.5 degrees (in radians) for counter-clockwise rotation plane1.speedX = Math.cos(angle) * 6; plane1.speedY = Math.sin(angle) * 6; plane1.rotation -= Math.PI / 60; // Rotate the plane counter-clockwise } if (isTouchingRight && LK.ticks > 78) { var angle = Math.atan2(plane1.speedY, plane1.speedX); angle += Math.PI / 60; // Add 1.5 degrees (in radians) for clockwise rotation plane1.speedX = Math.cos(angle) * 6; plane1.speedY = Math.sin(angle) * 6; plane1.rotation += Math.PI / 60; // Rotate the plane clockwise } // Check if the plane touches the top or bottom of the screen or collides with the health_bar if (plane1.y <= 0 || plane1.y >= 2752 - plane1.height || plane1.intersects(healthBar)) { // Trigger game over LK.showGameOver(); } });
===================================================================
--- original.js
+++ change.js
@@ -46,8 +46,23 @@
} else if (self.y > 2732 - self.height) {
self.y = 2732 - self.height;
self.speedY = 0;
}
+ // Implement the same rotation mechanics for the enemy plane as the player's plane
+ if (isTouchingLeft) {
+ var angle = Math.atan2(self.speedY, self.speedX);
+ angle -= Math.PI / 60; // Subtract 1.5 degrees (in radians) for counter-clockwise rotation
+ self.speedX = Math.cos(angle) * 6;
+ self.speedY = Math.sin(angle) * 6;
+ self.rotation -= Math.PI / 60; // Rotate the plane counter-clockwise
+ }
+ if (isTouchingRight && LK.ticks > 78) {
+ var angle = Math.atan2(self.speedY, self.speedX);
+ angle += Math.PI / 60; // Add 1.5 degrees (in radians) for clockwise rotation
+ self.speedX = Math.cos(angle) * 6;
+ self.speedY = Math.sin(angle) * 6;
+ self.rotation += Math.PI / 60; // Rotate the plane clockwise
+ }
};
self.shoot = function () {
var bullet = new Bullet();
var planeBackX = self.x - self.width / 2 * Math.cos(self.rotation);
снаряд от пушки. 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.
Артиллерийское оружие, смотрит вверх. 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.