User prompt
После поворота добавить скорость разгона начиная 4 и до 7 для игрока и противника
User prompt
Please fix the bug: 'TypeError: LK.showPauseScreen is not a function. (In 'LK.showPauseScreen()', 'LK.showPauseScreen' is undefined)' in or related to this line: 'LK.showPauseScreen();' Line Number: 255
User prompt
Please fix the bug: 'TypeError: LK.pauseGame is not a function. (In 'LK.pauseGame()', 'LK.pauseGame' is undefined)' in or related to this line: 'LK.pauseGame();' Line Number: 255
User prompt
Если противник пересек 950 от центра, то игра останавливается на 1 секунду
User prompt
Please fix the bug: 'TypeError: undefined is not an object (evaluating 'localStorage.setItem')' in or related to this line: 'localStorage.setItem('score', LK.getScore());' Line Number: 246
User prompt
Please fix the bug: 'Script error.' in or related to this line: 'var score = localStorage.getItem('score') || '0';' Line Number: 255
User prompt
Сохранять количество набранных очков
Code edit (1 edits merged)
Please save this source code
User prompt
Сделать score черным
User prompt
Подвинуть score в правый верхний угол
Code edit (1 edits merged)
Please save this source code
User prompt
После смерти противника, прибавлять одну очко к score
User prompt
Выводить score вверху в центре
User prompt
Исправить ошибку, когда игрок после смерти противника двигается вертикально с неверным положении машины
User prompt
Исправить ошибку, когда игрок после смерти противника двигается по диагонали, а не вертикально Вверх
User prompt
Исправить ошибку, когда игрок после смерти противника двигается по диагонали, а не вертикально
User prompt
После смерти противника, игрок перемещается на начальную точки и двигается по вертикали
User prompt
Если противник пересек границу радиусом 950 от центра, то он и игрок появляется на точке респауна, при этом текущее направление у игрока сбрасывает
User prompt
Если противник пересек границу радиусом 950 от центра, то он и игрок появляется на точке респауна и начинают движение по вертикали друг к другу
User prompt
Если противник пересек границу радиусом 950 от центра, то он и игрок появляется на точке респауна
User prompt
При пересечении противником радиуса 950 от центра, противник моргает 2 секунды и потом появляется в месте возрождения
User prompt
При пересечении противником радиуса 950 от центра, противник появляется месте возрождения
User prompt
Сделать более точную проверку на пересечение игрока и противоика
User prompt
Исправить ошибку, когда противники при повороте не скользят
User prompt
Исправить ошибку, когда все противники остановились и перестали преследовать ближайшую цель
/****
* Classes
****/
// Assets will be automatically created based on usage in the code.
// Car class
var Car = Container.expand(function () {
var self = Container.call(this);
// Attach a car asset
var carGraphics = self.attachAsset('car', {
anchorX: 0.5,
anchorY: 0.5
});
self.previousTouchPosition = null;
self.speedX = 0;
self.speedY = 0;
// Move car based on its speed
self.move = function () {
if (self.slidingDuration > 0) {
self.x += self.speedX;
self.y += self.speedY;
self.slidingDuration--;
if (self.slidingDuration === 0) {
self.speedX = Math.sin(self.rotation) * 7;
self.speedY = -Math.cos(self.rotation) * 7;
}
} else {
self.x += self.speedX;
self.y += self.speedY;
}
};
// Prevent the car from moving in the opposite direction when it hits the wall
self.checkBounds = function () {
if (self.x < 0) {
self.x += 200;
} else if (self.x > 2048) {
self.x -= 200;
}
if (self.y < 0) {
self.y += 200;
} else if (self.y > 2732) {
self.y -= 200;
}
};
self.slidingDuration = 0;
self.setDirection = function (direction) {
if (direction === 'left') {
self.rotation -= 0.07;
self.speedX += Math.sin(self.rotation) * 0.07;
self.speedY += -Math.cos(self.rotation) * 0.07;
self.slidingDuration = 20; // Set sliding duration to 0.5 second (30 frames)
} else if (direction === 'right') {
self.rotation += 0.07;
self.speedX += Math.sin(self.rotation) * 0.07;
self.speedY += -Math.cos(self.rotation) * 0.07;
self.slidingDuration = 20; // Set sliding duration to 0.5 second (30 frames)
}
// Limit the speed to prevent the car from sliding too much
if (self.slidingDuration > 0) {
self.speedX = Math.min(Math.max(self.speedX, -7), 7);
self.speedY = Math.min(Math.max(self.speedY, -7), 7);
self.slidingDuration--;
} else {
self.speedX = Math.sin(self.rotation) * 7;
self.speedY = -Math.cos(self.rotation) * 7;
}
};
});
// Enemy class
var Enemy = Container.expand(function () {
var self = Container.call(this);
// Attach an enemy asset
var enemyGraphics = self.attachAsset('enemy1', {
anchorX: 0.5,
anchorY: 0.5
});
self.speedX = 0;
self.speedY = 0;
// Move enemy based on its speed
self.move = function () {
self.x += self.speedX;
self.y += self.speedY;
};
// Prevent the enemy from moving in the opposite direction when it hits the wall
self.checkBounds = function () {
if (self.x < 0) {
self.x += 200;
} else if (self.x > 2048) {
self.x -= 200;
}
if (self.y < 0) {
self.y += 200;
} else if (self.y > 2732) {
self.y -= 200;
}
};
self.followPlayer = function (player) {
// Calculate the direction vector from the enemy to the player
var dx = player.x - self.x;
var dy = player.y - self.y;
// Normalize the direction vector
var length = Math.sqrt(dx * dx + dy * dy);
dx /= length;
dy /= length;
// Set the enemy's speed to move towards the player
// Add sliding behavior to the enemy car
self.speedX += dx * 0.05;
self.speedY += dy * 0.05;
if (self.slidingDuration > 0) {
self.slidingDuration--;
if (self.slidingDuration === 0) {
// Calculate the direction vector from the enemy to the player
var dx = player.x - self.x;
var dy = player.y - self.y;
// Normalize the direction vector
var length = Math.sqrt(dx * dx + dy * dy);
dx /= length;
dy /= length;
// Set the enemy's speed to always be 7
self.speedX = dx * 7;
self.speedY = dy * 7;
}
} else {
self.slidingDuration = 90; // Set sliding duration to 2 seconds (120 frames)
}
// Calculate the angle of the direction vector
var angle = Math.atan2(dy, dx);
// Rotate the enemy car to face the player and adjust by -90 degrees
self.rotation = angle - Math.PI / 2;
};
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0xFFFFFF // Init game with white background
});
/****
* Game Code
****/
// Global variables
var cars = [];
// Create a single car
var car = new Car();
car.x = 2048 / 2; // Center of the screen
car.y = 2280; // Bottom of the screen
car.speedX = 0;
car.speedY = -7;
cars.push(car);
game.addChildAt(car, game.children.length);
// Create an enemy car
var enemy = new Enemy();
enemy.x = 2048 / 2; // Center of the screen
enemy.y = 450; // Top of the screen
enemy.speedX = 0;
enemy.speedY = 7;
cars.push(enemy);
game.addChildAt(enemy, game.children.length);
// Create a background for the game
var background = LK.getAsset('background', {
anchorX: 0.5,
anchorY: 0.5,
x: 2048 / 2,
y: 2732 / 2
});
game.addChildAt(background, 0);
// Create a circle in the center of the screen
var centerCircle = LK.getAsset('Circle', {
anchorX: 0.5,
// Center anchor x-coordinate
anchorY: 0.5,
// Center anchor y-coordinate
x: 2048 / 2,
// Center of the screen
y: 2732 / 2 // Center of the screen
});
game.addChildAt(centerCircle, 1);
// Handle game logic on each tick
LK.on('tick', function () {
cars.forEach(function (car) {
car.move();
car.checkBounds();
if (car === enemy) {
if (LK.ticks > 90) {
// Delay of 1.5 seconds (60 ticks per second)
car.followPlayer(cars[0]); // Assume the player car is the first car in the array
}
}
// Check for collisions with other cars
cars.forEach(function (otherCar) {
if (car !== otherCar) {
// Calculate the distance between the centers of the two cars
var dx = car.x - otherCar.x;
var dy = car.y - otherCar.y;
var distance = Math.sqrt(dx * dx + dy * dy);
// Check if the distance is less than the sum of the radii of the two cars
if (distance < car.width / 2 + otherCar.width / 2) {
// On collision, move both cars 200 pixels back in the direction opposite to the point of intersection
var moveDistance = 60;
var moveStep = moveDistance / 10; // 60 frames for 1 second of smooth movement
var moveX = dx / distance * moveStep;
var moveY = dy / distance * moveStep;
var moveCounter = 0;
var moveInterval = LK.setInterval(function () {
car.x += moveX;
car.y += moveY;
otherCar.x -= moveX;
otherCar.y -= moveY;
moveCounter++;
if (moveCounter >= 10) {
LK.clearInterval(moveInterval);
}
}, 1000 / 60); // 60 FPS
}
}
});
// Check if the car is outside the circle
var distanceFromCenter = Math.sqrt(Math.pow(car.x - 2048 / 2, 2) + Math.pow(car.y - 2732 / 2, 2));
if (distanceFromCenter > 950 && car === enemy) {
// Make the enemy blink for 2 seconds
LK.effects.flashObject(car, 0xFFFFFF, 2000);
// After 2 seconds, reset enemy position to spawn point
LK.setTimeout(function () {
car.x = 2048 / 2; // Center of the screen
car.y = 450; // Top of the screen
}, 2000);
} else if (distanceFromCenter > 970) {
LK.showGameOver();
}
});
});
// Add touch event listener to the game
var turnInterval;
var lastTouchPosition;
var isTouching = false; // Add a flag to check if the screen is being touched
var isOutside = false; // Add a flag to check if the mouse is outside the game
game.on('down', function (obj) {
// Get the position of the touch
var touchPosition = obj.event.getLocalPosition(game);
// Store the initial touch position
car.initialTouchPosition = touchPosition;
// Store the last touch position
lastTouchPosition = touchPosition;
isTouching = true; // Set the flag to true when the screen is being touched
isOutside = false; // Set the flag to false when the mouse enters the game
});
game.on('move', function (obj) {
// Get the position of the touch
var touchPosition = obj.event.getLocalPosition(game);
// Update the last touch position
lastTouchPosition = touchPosition;
// If there is a touch event and the last touch position is to the left of the initial touch position, turn the car to the left
if (!isOutside && isTouching && lastTouchPosition && car.initialTouchPosition) {
if (lastTouchPosition.x < car.initialTouchPosition.x) {
car.setDirection('left');
} else if (lastTouchPosition.x > car.initialTouchPosition.x) {
car.setDirection('right');
}
// Update the initial touch position
car.initialTouchPosition = lastTouchPosition;
} else if (isTouching && !isOutside) {
// If there is no touch event, the car moves straight
car.setDirection('straight');
}
});
game.on('up', function (obj) {
// Reset the last touch position when the touch is released
lastTouchPosition = null;
isTouching = false; // Set the flag to false when the touch is released
isOutside = true; // Set the flag to true when the mouse leaves the game
}); ===================================================================
--- original.js
+++ change.js
@@ -217,11 +217,15 @@
});
// Check if the car is outside the circle
var distanceFromCenter = Math.sqrt(Math.pow(car.x - 2048 / 2, 2) + Math.pow(car.y - 2732 / 2, 2));
if (distanceFromCenter > 950 && car === enemy) {
- // Reset enemy position to spawn point
- car.x = 2048 / 2; // Center of the screen
- car.y = 450; // Top of the screen
+ // Make the enemy blink for 2 seconds
+ LK.effects.flashObject(car, 0xFFFFFF, 2000);
+ // After 2 seconds, reset enemy position to spawn point
+ LK.setTimeout(function () {
+ car.x = 2048 / 2; // Center of the screen
+ car.y = 450; // Top of the screen
+ }, 2000);
} else if (distanceFromCenter > 970) {
LK.showGameOver();
}
});
Лава мультяшная вид сверху плоская. Single Game Texture. In-Game asset. 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.