User prompt
бонус появляется каждую тысячу очков
User prompt
бонус действует 15 секунд
User prompt
враги появляются через 5 секунд после смерти
User prompt
враги возрождаются через 5 секунд после смерти
User prompt
Please fix the bug: 'TypeError: setTimeout is not a function' in or related to this line: 'setTimeout(function () {' Line Number: 365
User prompt
враги восстанавливаются через 5 секунд
User prompt
бонус дает машине возможность убивать врагов
User prompt
добавь бонус
User prompt
игрок может убить врага только когда съест бонус
User prompt
враги восстанавливаются через 5 секунд после смерти
User prompt
добавь бонус который дает игроку способность убивать врагов на 30 секунда
User prompt
сделай так чтобы assets enemy и enemy2 менялись каждую секунду
User prompt
сделай так чтобы assets enemy и enemy2 менялись каждую секунду
User prompt
сделай так чтобы assets enemy и enemy2 менялись каждую секунду
User prompt
car asset невеидимый
User prompt
сделай так чтобы assets car и car2 менялись каждую секунду
User prompt
Please fix the bug: 'TypeError: Cannot read properties of undefined (reading 'update')' in or related to this line: 'car.update();' Line Number: 212
User prompt
change assets car and car 2 every second
Code edit (1 edits merged)
Please save this source code
User prompt
сделай так чтобы машина меняла свой вид между car и car2
User prompt
сделай анимацию из car и car2
Code edit (1 edits merged)
Please save this source code
Initial prompt
Kostya's dinner
===================================================================
--- original.js
+++ change.js
@@ -1,118 +1,286 @@
-/****
+/****
* Classes
-****/
+****/
//<Assets used in the game will automatically appear here>
-// Define the Hero class
-var Hero = Container.expand(function () {
- var self = Container.call(this);
- var heroGraphics = self.attachAsset('hero', {
- anchorX: 0.5,
- anchorY: 0.5
- });
- self.speed = 10;
- self.update = function () {
- // Hero update logic
- };
- self.move = function (x, y) {
- self.x = x;
- self.y = y;
- };
+// Car class
+var Car = Container.expand(function () {
+ var self = Container.call(this);
+ var carGraphics = self.attachAsset('car', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.speed = 5;
+ self.direction = 0; // 0: straight, 1: left, 2: right
+ self.update = function () {
+ if (self.direction === 1) {
+ self.rotation -= 0.05;
+ } else if (self.direction === 2) {
+ self.rotation += 0.05;
+ }
+ var newX = self.x + self.speed * Math.cos(self.rotation);
+ var newY = self.y + self.speed * Math.sin(self.rotation);
+ // Check if the new position is within the game area
+ if (newX >= 0 && newX <= 2048 && newY >= 0 && newY <= 2732) {
+ self.x = newX;
+ self.y = newY;
+ }
+ };
+ self.turnLeft = function () {
+ self.direction = 1;
+ };
+ self.turnRight = function () {
+ self.direction = 2;
+ };
+ self.straighten = function () {
+ self.direction = 0;
+ };
});
-// Define the Obstacle class
-var Obstacle = Container.expand(function () {
- var self = Container.call(this);
- var obstacleGraphics = self.attachAsset('obstacle', {
- anchorX: 0.5,
- anchorY: 0.5
- });
- self.speed = 5;
- self.update = function () {
- self.y += self.speed;
- if (self.y > 2732) {
- self.destroy();
- }
- };
+// Enemy class
+var Enemy = Container.expand(function () {
+ var self = Container.call(this);
+ var enemyGraphics = self.attachAsset('enemy', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.speed = 2;
+ self.update = function () {
+ // Randomly change direction
+ if (Math.random() < 0.01) {
+ self.speedX = (Math.random() - 0.5) * 10;
+ self.speedY = (Math.random() - 0.5) * 10;
+ }
+ // Move in a random direction
+ self.x += self.speedX;
+ self.y += self.speedY;
+ // Keep within game area and bounce off the walls
+ if (self.x < 0) {
+ self.x = 0;
+ self.speedX = -self.speedX;
+ }
+ if (self.x > 2048) {
+ self.x = 2048;
+ self.speedX = -self.speedX;
+ }
+ if (self.y < 0) {
+ self.y = 0;
+ self.speedY = -self.speedY;
+ }
+ if (self.y > 2732) {
+ self.y = 2732;
+ self.speedY = -self.speedY;
+ }
+ // Check if the enemy intersects with any poop
+ for (var i = 0; i < spirals.length; i++) {
+ if (spirals[i] instanceof Poop && self.intersects(spirals[i])) {
+ // Remove the poop from the game
+ spirals[i].destroy();
+ spirals.splice(i, 1);
+ // Decrease player lives by 1
+ playerLives -= 1;
+ livesTxt.setText('Lives: ' + playerLives); // Update the displayed lives
+ // Increase the speed of the enemy
+ self.speed += 0.1;
+ // End the game if the player's lives reach zero
+ if (playerLives <= 0) {
+ LK.effects.flashScreen(0xff0000, 1000);
+ LK.showGameOver();
+ }
+ }
+ }
+ };
});
-// Define the Poop class
+// Life class
+var Life = Container.expand(function () {
+ var self = Container.call(this);
+ var lifeGraphics = self.attachAsset('life', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.reposition = function () {
+ self.x = Math.random() * 2048;
+ self.y = Math.random() * 2732;
+ };
+});
+// Poop class
var Poop = Container.expand(function () {
- var self = Container.call(this);
- var poopGraphics = self.attachAsset('poop', {
- anchorX: 0.5,
- anchorY: 0.5
- });
- self.speed = 5;
- self.update = function () {
- self.y += self.speed;
- if (self.y > 2732) {
- self.destroy();
- }
- };
+ var self = Container.call(this);
+ var poopGraphics = self.attachAsset('poop', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.reposition = function () {
+ self.x = Math.random();
+ self.y = Math.random();
+ };
});
+// Spiral class
+var Spiral = Container.expand(function () {
+ var self = Container.call(this);
+ self.radius = 100;
+ self.angle = 0;
+ self.speed = 0.01;
+ self.update = function () {
+ self.angle += self.speed;
+ self.x = 2048 / 2 + self.radius * Math.cos(self.angle);
+ self.y = 2732 / 2 + self.radius * Math.sin(self.angle);
+ if (self.y > 2732) {
+ self.destroy();
+ }
+ };
+});
-/****
+/****
* Initialize Game
-****/
+****/
var game = new LK.Game({
- backgroundColor: 0x000000 //Init game with black background
+ backgroundColor: 0x000000 //Init game with black background
});
-/****
+/****
* Game Code
-****/
-var hero = new Hero();
-hero.x = 2048 / 2;
-hero.y = 2732 - 200;
-game.addChild(hero);
-var poops = [];
-var obstacles = [];
-var score = 0;
+****/
+var road = game.addChild(LK.getAsset('road', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: 2048 / 2,
+ y: 2732 / 2
+}));
+// Initialize score and lives variables
+var playerScore = 100;
+var playerLives = 10;
var scoreTxt = new Text2('0', {
- size: 150,
- fill: "#ffffff"
+ size: 150,
+ fill: "#0000FF" // Blue color
});
-scoreTxt.anchor.set(0.5, 0);
-LK.gui.top.addChild(scoreTxt);
-function spawnPoop() {
- var poop = new Poop();
- poop.x = Math.random() * 2048;
- poop.y = -50;
- poops.push(poop);
- game.addChild(poop);
+scoreTxt.anchor.set(0, 0); // Sets anchor to the left of the top edge of the text.
+LK.gui.topLeft.addChild(scoreTxt); // Add the score text to the GUI overlay at the top left of the screen.
+// Initialize and display player lives
+var livesTxt = new Text2('10', {
+ size: 150,
+ fill: "#FF0000" // Red color
+});
+livesTxt.anchor.set(1, 0); // Sets anchor to the right of the top edge of the text.
+LK.gui.topRight.addChild(livesTxt); // Add the lives text to the GUI overlay at the top right of the screen.
+var enemyScore = 0;
+// Initialize variables
+var car = new Car();
+car.x = 2048 / 2;
+car.y = 2732 / 2;
+game.addChild(car);
+var spirals = [];
+var enemies = [];
+for (var i = 0; i < 3; i++) {
+ var enemy = new Enemy();
+ enemy.x = Math.random() * 2048;
+ enemy.y = 2732 / 2 + 100;
+ enemies.push(enemy);
+ game.addChild(enemy);
}
-function spawnObstacle() {
- var obstacle = new Obstacle();
- obstacle.x = Math.random() * 2048;
- obstacle.y = -50;
- obstacles.push(obstacle);
- game.addChild(obstacle);
-}
+// Handle touch events
game.down = function (x, y, obj) {
- hero.move(x, y);
+ if (x < 2048 / 2) {
+ car.turnLeft();
+ } else {
+ car.turnRight();
+ }
};
-game.move = function (x, y, obj) {
- hero.move(x, y);
+game.up = function (x, y, obj) {
+ car.straighten();
};
+// Update game state
game.update = function () {
- for (var i = poops.length - 1; i >= 0; i--) {
- poops[i].update();
- if (hero.intersects(poops[i])) {
- score += 1;
- scoreTxt.setText(score);
- poops[i].destroy();
- poops.splice(i, 1);
- }
- }
- for (var j = obstacles.length - 1; j >= 0; j--) {
- obstacles[j].update();
- if (hero.intersects(obstacles[j])) {
- LK.effects.flashScreen(0xff0000, 1000);
- LK.showGameOver();
- }
- }
- if (LK.ticks % 60 == 0) {
- spawnPoop();
- }
- if (LK.ticks % 120 == 0) {
- spawnObstacle();
- }
+ car.update();
+ // Create spirals and poops
+ if (LK.ticks % 60 === 0) {
+ var spiral = new Spiral();
+ spiral.x = 2048 / 2;
+ spiral.y = -100;
+ spirals.push(spiral);
+ game.addChild(spiral);
+ var poopCount = spirals.filter(function (spiral) {
+ return spiral instanceof Poop;
+ }).length;
+ if (poopCount < 3) {
+ var poop = new Poop();
+ poop.x = 2048;
+ poop.y = 2732 / 2;
+ spirals.push(poop);
+ game.addChild(poop);
+ }
+ }
+ // Add life instances to the game
+ if (LK.ticks % 600 === 0) {
+ // every 10 seconds
+ var life = new Life();
+ life.reposition();
+ spirals.push(life);
+ game.addChild(life);
+ // Make life instances blink before disappearing
+ LK.setTimeout(function () {
+ var blinkInterval = LK.setInterval(function () {
+ life.visible = !life.visible;
+ }, 200);
+ LK.setTimeout(function () {
+ LK.clearInterval(blinkInterval);
+ var index = spirals.indexOf(life);
+ if (index !== -1) {
+ spirals.splice(index, 1);
+ life.destroy();
+ }
+ }, 1000);
+ }, 2000);
+ }
+ // Update spirals, poops, lives and enemies
+ for (var i = spirals.length - 1; i >= 0; i--) {
+ if (spirals[i] instanceof Spiral || spirals[i] instanceof Life) {
+ if (typeof spirals[i].update === 'function') {
+ spirals[i].update();
+ }
+ }
+ if (car.intersects(spirals[i])) {
+ if (spirals[i] instanceof Poop) {
+ if (car.intersects(spirals[i])) {
+ spirals[i].reposition();
+ spirals[i].x = Math.random() * 2048;
+ spirals[i].y = Math.random() * 2732;
+ playerScore += 100; // Increase player score by 100 when poop is collected
+ LK.setScore(playerScore); // Update the displayed score
+ scoreTxt.setText(LK.getScore()); // Update the score text
+ } else if (enemies.some(function (enemy) {
+ return enemy.intersects(spirals[i]);
+ })) {
+ spirals[i].reposition();
+ spirals[i].x = Math.random() * 2048;
+ spirals[i].y = Math.random() * 2732;
+ playerLives -= 1; // Decrease player lives by 1 when enemy collects poop
+ livesTxt.setText('Lives: ' + playerLives); // Update the displayed lives
+ // Make the player's car blink red when it takes damage
+ LK.effects.flashObject(car, 0xff0000, 1000);
+ }
+ } else if (spirals[i] instanceof Life) {
+ if (car.intersects(spirals[i])) {
+ spirals[i].destroy();
+ spirals.splice(i, 1);
+ playerLives += 1; // Increase player lives by 1 when life is collected
+ livesTxt.setText('Lives: ' + playerLives); // Update the displayed lives
+ }
+ } else {
+ LK.effects.flashScreen(0xff0000, 1000);
+ LK.showGameOver();
+ }
+ }
+ }
+ // Update enemies
+ for (var i = 0; i < enemies.length; i++) {
+ enemies[i].update();
+ }
+ // Make the player's car blink red when player lives are less than 3
+ if (playerLives < 3) {
+ LK.effects.flashObject(car, 0xff0000, 1000);
+ }
+ // End the game if the player's lives reach zero
+ if (playerLives <= 0) {
+ LK.effects.flashScreen(0xff0000, 1000);
+ LK.showGameOver();
+ }
};
\ No newline at end of file
poop heart. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
red color
poop. 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.
magic poop. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.