/****
* Classes
****/
// SpeedPowerUp class
var SpeedPowerUp = Container.expand(function () {
var self = Container.call(this);
var powerUpGraphics = self.createAsset('speedPowerUp', 'Speed Power Up', 0.5, 0.5);
self.activate = function (ai) {
var originalSpeed = ai.speed;
ai.speed *= 0.5; // Halve the AI's speed
LK.setTimeout(function () {
ai.speed = originalSpeed; // Reset the AI's speed after 10 seconds
}, 10000);
};
});
// Score class
var Score = Container.expand(function () {
var self = Container.call(this);
self.scoreValue = 0;
var scoreText = new Text2(self.scoreValue.toString(), {
size: 150,
fill: "#ffffff"
});
scoreText.anchor.set(.5, 0);
LK.gui.top.addChild(scoreText);
self.updateScore = function (value) {
self.scoreValue += value;
scoreText.setText(self.scoreValue.toString());
};
});
// SpawnMarker class
var SpawnMarker = Container.expand(function () {
var self = Container.call(this);
var markerGraphics = self.createAsset('spawnMarker', 'Spawn Marker', 0.5, 0.5);
markerGraphics.tint = 0xff0000; // Color the marker red
});
// Player class
var Player = Container.expand(function () {
var self = Container.call(this);
var playerGraphics = self.createAsset('playerCube', 'Player Cube', 0.5, 0.5);
self.speed = 5;
self.moveUp = function () {
self.y -= self.speed;
};
self.moveDown = function () {
self.y += self.speed;
};
self.moveLeft = function () {
self.x -= self.speed;
};
self.moveRight = function () {
self.x += self.speed;
};
self.teleportUses = 2;
self.teleport = function () {
if (self.teleportUses > 0) {
self.x = Math.random() * 2048;
self.y = Math.random() * 2732;
self.teleportUses--;
}
};
self.die = function () {
LK.effects.flashObject(self, 0xff0000, 1000);
LK.showGameOver();
};
});
// AI class
var AI = Container.expand(function () {
var self = Container.call(this);
var aiGraphics = self.createAsset('aiCube', 'AI Cube', 0.5, 0.5);
self.speed = 1.5;
self.speedModifier = 0.05; // Speed increases by 0.05 each second
self.follow = function (target) {
var dx = target.x - self.x;
var dy = target.y - self.y;
var distance = Math.sqrt(dx * dx + dy * dy);
if (distance > 1) {
self.speed += self.speedModifier * 0.5;
self.x += dx / distance * (self.speed + self.speedModifier * Math.floor(LK.ticks / 60) * 0.5);
self.y += dy / distance * (self.speed + self.speedModifier * Math.floor(LK.ticks / 60) * 0.5);
}
};
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x000000 // Init game with black background
});
/****
* Game Code
****/
var score = game.addChild(new Score());
// Initialize player and AI
var player = game.addChild(new Player());
player.x = 1024; // Center of the screen horizontally
player.y = 1366; // Center of the screen vertically
var ai = game.addChild(new AI());
ai.x = 1024; // Start in the center horizontally
ai.y = 500; // Start above the player
// Handle keyboard input for player movement
function handleKeyDown(event) {
switch (event.key) {
case 'ArrowUp':
player.moveUp();
break;
case 'ArrowDown':
player.moveDown();
break;
case 'ArrowLeft':
player.moveLeft();
break;
case 'ArrowRight':
player.moveRight();
break;
case 't':
player.teleport();
break;
}
}
// Add event listener for touch controls
function handleTouchMove(obj) {
var touchPos = obj.event.getLocalPosition(game);
player.x = touchPos.x;
player.y = touchPos.y;
}
game.on('move', handleTouchMove);
// Main game loop
LK.on('tick', function () {
// Increment score based on survival
score.updateScore(1);
ai.follow(player);
if (LK.ticks % 300 == 0) {
var spawnX = Math.random() * 2048;
var spawnY = Math.random() * 2732;
var spawnMarker = new SpawnMarker();
spawnMarker.x = spawnX;
spawnMarker.y = spawnY;
game.addChild(spawnMarker);
LK.setTimeout(function () {
var newAI = new AI();
newAI.x = spawnX;
newAI.y = spawnY;
game.addChild(newAI);
spawnMarker.destroy();
}, 1000); // Spawn AI after 1 second and then remove the marker
}
// Spawn SpeedPowerUp randomly
if (LK.ticks % 900 == 0) {
// Every 15 seconds
var powerUpX = Math.random() * 2048;
var powerUpY = Math.random() * 2732;
var speedPowerUp = new SpeedPowerUp();
speedPowerUp.x = powerUpX;
speedPowerUp.y = powerUpY;
game.addChild(speedPowerUp);
}
});
// Add keyboard event listener
LK.on('keydown', handleKeyDown);
// Ensure the player cannot move outside the game boundaries
player.update = function () {
this.x = Math.max(0, Math.min(this.x, 2048));
this.y = Math.max(0, Math.min(this.y, 2732));
// Check for collision with SpeedPowerUp and slow down the AI
var powerUps = game.children.filter(function (child) {
return child instanceof SpeedPowerUp;
});
var ais = game.children.filter(function (child) {
return child instanceof AI;
});
for (var i = 0; i < powerUps.length; i++) {
if (this.intersects(powerUps[i])) {
ais.forEach(function (ai) {
powerUps[i].activate(ai);
});
powerUps[i].destroy();
}
}
};
// Ensure the AI cannot move outside the game boundaries
AI.prototype.update = function () {
this.x = Math.max(0, Math.min(this.x, 2048));
this.y = Math.max(0, Math.min(this.y, 2732));
};
// Update entities on each tick and check for collision
LK.on('tick', function () {
player.update();
var playerCollidedWithAI = game.children.some(function (child) {
if (child instanceof AI && player.intersects(child)) {
player.die();
return true;
}
if (child instanceof AI) {
child.update();
}
return false;
});
if (playerCollidedWithAI) {
return;
}
}); ===================================================================
--- original.js
+++ change.js
@@ -4,13 +4,13 @@
// SpeedPowerUp class
var SpeedPowerUp = Container.expand(function () {
var self = Container.call(this);
var powerUpGraphics = self.createAsset('speedPowerUp', 'Speed Power Up', 0.5, 0.5);
- self.activate = function (player) {
- var originalSpeed = player.speed;
- player.speed *= 2; // Double the player's speed
+ self.activate = function (ai) {
+ var originalSpeed = ai.speed;
+ ai.speed *= 0.5; // Halve the AI's speed
LK.setTimeout(function () {
- player.speed = originalSpeed; // Reset the player's speed after 10 seconds
+ ai.speed = originalSpeed; // Reset the AI's speed after 10 seconds
}, 10000);
};
});
// Score class
@@ -163,15 +163,20 @@
// Ensure the player cannot move outside the game boundaries
player.update = function () {
this.x = Math.max(0, Math.min(this.x, 2048));
this.y = Math.max(0, Math.min(this.y, 2732));
- // Check for collision with SpeedPowerUp
+ // Check for collision with SpeedPowerUp and slow down the AI
var powerUps = game.children.filter(function (child) {
return child instanceof SpeedPowerUp;
});
+ var ais = game.children.filter(function (child) {
+ return child instanceof AI;
+ });
for (var i = 0; i < powerUps.length; i++) {
if (this.intersects(powerUps[i])) {
- powerUps[i].activate(this);
+ ais.forEach(function (ai) {
+ powerUps[i].activate(ai);
+ });
powerUps[i].destroy();
}
}
};