User prompt
с течением времени игра должна усложняться
User prompt
houses спавнятся чаще
User prompt
с течением времени игра должна усложняться (время ускоряется, динамика предметов увеличивается
User prompt
Fix Bug: 'TypeError: Cannot read properties of undefined (reading 'forEach')' in this line: 'meteorites.forEach(function (meteorite) {' Line Number: 67
User prompt
Fix Bug: 'TypeError: Cannot read properties of undefined (reading 'forEach')' in this line: 'meteorites.forEach(function (meteorite) {' Line Number: 67
User prompt
Fix Bug: 'TypeError: Cannot read properties of undefined (reading 'forEach')' in this line: 'meteorites.forEach(function (meteorite) {' Line Number: 67
User prompt
Fix Bug: 'TypeError: Cannot read properties of undefined (reading 'forEach')' in this line: 'meteorites.forEach(function (meteorite) {' Line Number: 67
User prompt
Fix Bug: 'TypeError: Cannot read properties of undefined (reading 'forEach')' in this line: 'meteorites.forEach(function (meteorite) {' Line Number: 67
User prompt
Fix Bug: 'TypeError: Cannot read properties of undefined (reading 'forEach')' in this line: 'meteorites.forEach(function (meteorite) {' Line Number: 67
User prompt
Fix Bug: 'TypeError: Cannot read properties of undefined (reading 'forEach')' in this line: 'meteorites.forEach(function (meteorite) {' Line Number: 67
User prompt
Fix Bug: 'TypeError: Cannot read properties of undefined (reading 'forEach')' in this line: 'meteorites.forEach(function (meteorite) {' Line Number: 67
User prompt
метеорит взрывается и исчезает через 15 секунд после прыжка героя
User prompt
герой может вылетать за пределы экрана появляясь на другой строне экрана , это работает только справа и слева
User prompt
ускорь темп игры на 30%
User prompt
увеличь скорость полета и вращения метеорита на 30%
User prompt
главный герой космонавт
User prompt
герой всегда повернул головой в направлении полета
User prompt
герой летит головой вперед
User prompt
герой всегда смотрит в направлении полета
User prompt
герой летит в сторону клика мышкой
User prompt
управление работает в полете
User prompt
героем можно управлять, его толкает в противоположную сторону от клика мышкой
User prompt
героя толкает реактивная тяга
User prompt
постепенно увеличивай скорость врщения
User prompt
темп игры постепенно возрастает
/****
* Classes
****/
var Debris = Container.expand(function () {
var self = Container.call(this);
var debrisGraphics = self.attachAsset('debris', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = Math.random() * 5 + 2;
self.direction = {
x: Math.random() * 2 - 1,
y: Math.random() * 2 - 1
};
self.move = function () {
self.x += self.direction.x * self.speed;
self.y += self.direction.y * self.speed;
self.speed *= 0.98; // Debris slows down over time
if (self.speed < 0.5) {
self.destroy(); // Destroy debris when it's slow enough
}
};
});
var Meteorite = Container.expand(function () {
var self = Container.call(this);
var meteoriteGraphics = self.attachAsset('meteorite', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = Math.random() * 3 + 1;
self.direction = {
x: Math.random() * 2 - 1,
y: Math.random() * 2 - 1
};
self.move = function () {
self.x += self.direction.x * self.speed;
self.y += self.direction.y * self.speed;
};
});
var Star = Container.expand(function () {
var self = Container.call(this);
var starGraphics = self.attachAsset('star', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = Math.random() * 5 + 1;
self.move = function () {
self.y += self.speed;
if (self.y > 2732) {
self.y = -self.height;
self.x = Math.random() * 2048;
self.speed = Math.random() * 5 + 1;
}
};
});
var Astronaut = Container.expand(function () {
var self = Container.call(this);
var astronautGraphics = self.attachAsset('astronaut', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 10;
self.jump = function () {
if (!this.hasJumped) {
this.direction = {
x: Math.sin(self.rotation),
y: -Math.cos(self.rotation)
};
this.hasJumped = true;
this.firstJump = true;
}
};
self.hasJumped = false;
self.firstJump = false;
self.score = 0;
self.lastHouse = null;
self.scoreTxt = new Text2('0', {
size: 150,
fill: "#ffffff",
weight: 800,
dropShadow: true,
dropShadowColor: '#000000',
dropShadowBlur: 4,
dropShadowAngle: Math.PI / 6,
dropShadowDistance: 6
});
self.scoreTxt.anchor.set(.5, 0);
LK.gui.topCenter.addChild(self.scoreTxt);
self.move = function (houses) {
if (self.hasJumped) {
self.x += self.direction.x * self.speed;
self.y += self.direction.y * self.speed;
for (var i = 0; i < houses.length; i++) {
var dx = self.x - houses[i].x;
var dy = self.y - houses[i].y;
var distance = Math.sqrt(dx * dx + dy * dy);
if (distance < astronautGraphics.width / 2 + houses[i].width / 2 && houses[i] !== self.lastHouse) {
self.hasJumped = false;
self.lastHouse = houses[i];
self.currentHouse = houses[i];
self.rotationOffset = Math.atan2(dy, dx) - houses[i].rotation;
self.score += 1;
self.scoreTxt.setText(self.score);
if (!houses[i].bomb) {
houses[i].bomb = new Bomb();
houses[i].addChild(houses[i].bomb);
houses[i].bomb.startTimer();
}
break;
}
}
}
if (!self.hasJumped && self.currentHouse) {
var angle = self.currentHouse.rotation + self.rotationOffset;
self.x = self.currentHouse.x + Math.cos(angle) * (self.currentHouse.width / 2 + astronautGraphics.height / 2);
self.y = self.currentHouse.y + Math.sin(angle) * (self.currentHouse.width / 2 + astronautGraphics.height / 2);
self.rotation = angle + Math.PI / 2;
}
};
});
var House = Container.expand(function () {
var self = Container.call(this);
var randomHouseIndex = Math.floor(Math.random() * houseAssets.length);
var houseGraphics = self.createAsset(houseAssets[randomHouseIndex], {
anchorX: 0.5,
anchorY: 0.5
});
self.rotationStep = Math.random() * 0.02 - 0.01;
if (self.rotationStep > 0 && self.rotationStep < 0.01) {
self.rotationStep = 0.01;
}
if (self.rotationStep < 0 && self.rotationStep > -0.01) {
self.rotationStep = -0.01;
}
});
var Bomb = Container.expand(function () {
var self = Container.call(this);
var bombGraphics = self.attachAsset('bomb', {
anchorX: 0.5,
anchorY: 0.5
});
self.timer = null;
self.explode = function () {
// Explosion effect can be added here
var meteorites = self.parent.children.filter(function (child) {
return child instanceof Meteorite && self.intersects(child);
});
meteorites.forEach(function (meteorite) {
for (var i = 0; i < 5; i++) {
// Create 5 debris particles
var debris = new Debris();
debris.x = meteorite.x;
debris.y = meteorite.y;
self.parent.addChild(debris);
}
meteorite.destroy(); // Destroy the meteorite
});
// self.destroy(); // Do not destroy the bomb after explosion
};
self.startTimer = function () {
self.timer = LK.setTimeout(self.explode, 15000);
};
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x000000
});
/****
* Game Code
****/
var gameContainer = new Container();
game.addChild(gameContainer);
var stars = [];
game.spawnStar = function () {
var newStar = new Star();
newStar.x = Math.random() * 2048;
newStar.y = Math.random() * 2732;
gameContainer.addChildAt(newStar, gameContainer.children.length > 1 ? 1 : 0);
};
for (var i = 0; i < 50; i++) {
game.spawnStar();
}
var houseAssets = ['house1', 'house2', 'house3', 'house4', 'house5', 'house6', 'house7', 'house8', 'house9', 'house10'];
var background = game.attachAsset('background', {
anchorX: 0.5,
anchorY: 0.5
});
background.x = 2048 / 2;
background.y = 2732 / 2;
background.speed = 2;
background.move = function () {
this.y += this.speed;
if (this.y >= 2732) {
this.y = 0;
}
};
game.addChildAt(background, 0);
game.setBackgroundColor(0x000000);
var gameContainer = new Container();
game.addChild(gameContainer);
var astronaut = gameContainer.addChild(new Astronaut());
astronaut.x = 2048 / 2;
astronaut.y = 2732 - 300;
var houses = [];
var houseSpeed = -2;
var speedIncreaseInterval = 300; // Interval in ticks to increase speed
var speedIncreaseAmount = -0.2; // Amount to increase speed
game.spawnHouse = function () {
var newHouse = new House();
newHouse.rotation = Math.random() * Math.PI * 2;
newHouse.scale.set(Math.random() * 0.5 + 0.5);
if (houses.length === 0) {
newHouse.x = 2048 / 2;
newHouse.y = 2732 / 2;
} else {
var lastHouseY = houses[houses.length - 1].y;
var gameHeightThird = 2732 / 3;
newHouse.y = lastHouseY - (Math.random() * gameHeightThird + gameHeightThird);
newHouse.x = Math.random() * (2048 - 600) + 300;
}
houses.push(newHouse);
gameContainer.addChildAt(newHouse, 0);
};
game.spawnStar = function () {
var newStar = new Star();
newStar.x = Math.random() * 2048;
newStar.y = Math.random() * 2732;
gameContainer.addChildAt(newStar, 1);
};
var isGameOver = false;
for (var i = 0; i < 12; i++) {
game.spawnHouse();
}
game.on('down', function (obj) {
astronaut.jump();
});
var tickOffset = 0;
LK.on('tick', function () {
if (isGameOver) {
LK.effects.flashScreen(0xff0000, 1000);
LK.showGameOver();
} else {
if (LK.ticks % speedIncreaseInterval === 0) {
houseSpeed += speedIncreaseAmount;
}
background.move();
astronaut.move(houses);
for (var s = 0; s < gameContainer.children.length; s++) {
if (gameContainer.children[s] instanceof Star) {
gameContainer.children[s].move();
}
}
}
for (var a = houses.length - 1; a >= 0; a--) {
if (astronaut.firstJump) {
houses[a].y -= houseSpeed;
}
houses[a].rotation += houses[a].rotationStep;
if (houses[a].x < -50 || houses[a].y > 2732 + houses[a].height) {
houses[a].destroy();
houses.splice(a, 1);
game.spawnHouse();
}
}
var astronautScreenX = astronaut.x;
var astronautScreenY = astronaut.y + gameContainer.y;
if ((astronautScreenX < 0 || astronautScreenX > 2048 || astronautScreenY < 0) && astronaut.hasJumped || astronaut.y > 2732) {
isGameOver = true;
}
}); ===================================================================
--- original.js
+++ change.js
@@ -206,8 +206,10 @@
astronaut.x = 2048 / 2;
astronaut.y = 2732 - 300;
var houses = [];
var houseSpeed = -2;
+var speedIncreaseInterval = 300; // Interval in ticks to increase speed
+var speedIncreaseAmount = -0.2; // Amount to increase speed
game.spawnHouse = function () {
var newHouse = new House();
newHouse.rotation = Math.random() * Math.PI * 2;
newHouse.scale.set(Math.random() * 0.5 + 0.5);
@@ -241,8 +243,11 @@
if (isGameOver) {
LK.effects.flashScreen(0xff0000, 1000);
LK.showGameOver();
} else {
+ if (LK.ticks % speedIncreaseInterval === 0) {
+ houseSpeed += speedIncreaseAmount;
+ }
background.move();
astronaut.move(houses);
for (var s = 0; s < gameContainer.children.length; s++) {
if (gameContainer.children[s] instanceof Star) {
космонавт. 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.