User prompt
i dont see the rotors blinking, they needs to be visible for 300 miliseconds then invisible for the next 300
User prompt
now make the rotors blink
Code edit (5 edits merged)
Please save this source code
User prompt
move the rotors 50 pixels higher
User prompt
let's attach a new asset to the enemies incoming from the sides. attach this new ellement called Rotor and give it a x and y position. actually once you create this asset, duplicate it, so that it appears twice over the enemy. they should be equally distanced between themselves by 50 pixels
User prompt
We need to modify the rocket's flame animation in our game. Currently, the flame blinks to simulate flickering. We want to add a feature where, in addition to blinking, the flame asset flips horizontally every other blink. This means after each visibility toggle, the flame image should alternate between its original orientation and a mirrored (flipped) version. This flip should occur indefinitely with each blink cycle to enhance the flame's dynamic appearance. Implement this by toggling a flip state alongside the existing blink functionality, using a boolean to track the flip state.
User prompt
when blinking the flame, also flip it's sides, so that it intermitently flips horizontally everytime it it revealedes after a blink
Code edit (2 edits merged)
Please save this source code
User prompt
the flame blinks too quickly
User prompt
make the flame blink intermitently
Code edit (1 edits merged)
Please save this source code
User prompt
move the flame 50 pixels higher
User prompt
add an asset overlapping the blocker, called flame
User prompt
move the score text to the midbackground
User prompt
ensure the incoming sign is displayed on the layer above the score text
Code edit (1 edits merged)
Please save this source code
User prompt
add a white outline to the character
Code edit (4 edits merged)
Please save this source code
User prompt
decerase the incoming animation to 1.5 seconds
User prompt
fix the blinking problem
User prompt
make the incoming asset blink once every 200 milsieconds, befire it disappears in its 2 secodns lifespan
User prompt
fix it
Code edit (1 edits merged)
Please save this source code
User prompt
change the incoming y height fro ma formula to a straight number relative to the top side of the screen
Code edit (1 edits merged)
Please save this source code
/****
* Classes
****/
var BackgroundContainer = Container.expand(function () {
var self = Container.call(this);
return Container.call(this);
});
var Blocker = Container.expand(function () {
var self = Container.call(this);
var blockerGraphics = self.attachAsset('blocker', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 2;
self.spawnOffset = 0;
self.move = function () {
self.speed *= 1.01; // Increase speed by 1% each frame
self.y += self.speed;
};
});
// Enemy fish class
var EnemyFish = Container.expand(function () {
var self = Container.call(this);
var enemyGraphics = self.attachAsset('enemyFish', {
anchorX: 0.5,
anchorY: 0.5,
flipX: self.direction > 0 ? 0 : 1
});
self.speed = 3;
self.direction = Math.random() > 0.5 ? 1 : -1;
self.spawnOffset = self.direction > 0 ? -100 : 100;
self.move = function () {
self.speed *= 1.005; // Increase speed by 0.5% each frame
self.x += self.speed * self.direction;
};
});
// Food fish class
var FoodFish = Container.expand(function () {
var self = Container.call(this);
var foodGraphics = self.attachAsset('foodFish', {
anchorX: 0.5,
anchorY: 0.5,
flipX: self.direction > 0 ? 0 : 1
});
self.speed = 2;
self.direction = Math.random() > 0.5 ? 1 : -1;
self.move = function () {
self.x += self.speed * self.direction;
};
});
var ForegroundContainer = Container.expand(function () {
var self = Container.call(this);
return self;
});
var MidgroundContainer = Container.expand(function () {
var self = Container.call(this);
return Container.call(this);
});
// Player fish class
var PlayerFish = Container.expand(function () {
var self = Container.call(this);
var playerGraphics = self.attachAsset('playerFish', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 5;
self.destination = null;
self.readyForNewCommand = true; // Player is initially ready for a new command
self.move = function () {
if (self.destination) {
var direction = {
x: self.destination.x - self.x,
y: self.destination.y - self.y
};
var magnitude = Math.sqrt(direction.x * direction.x + direction.y * direction.y);
if (magnitude < self.speed) {
self.x = self.destination.x;
self.y = self.destination.y;
self.destination = null; // Reached destination
self.speed = 0; // Stop the player fish
} else {
direction.x /= magnitude;
direction.y /= magnitude;
self.x += direction.x * self.speed;
self.y += direction.y * self.speed;
self.speed *= 0.98; // Decelerate
}
// Allow new commands when the player fish comes to a full stop
if (self.speed < 0.1) {
self.readyForNewCommand = true;
}
}
// Flip the fish asset based on the direction it's moving
if (self.destination) {
playerGraphics.flipX = self.x < self.destination.x ? 0 : 1;
} else {
playerGraphics.flipX = playerGraphics.flipX;
}
};
self.grow = function () {
self.scaleX *= 1.01;
self.scaleY *= 1.01;
playerGraphics.width *= 1.01;
playerGraphics.height *= 1.01;
self.speed -= 0.1;
};
});
// TV class
var TV = Container.expand(function () {
var self = Container.call(this);
var tvGraphics = self.attachAsset('tv', {
anchorX: 0.5,
anchorY: 0.5
});
});
/****
* Initialize Game
****/
var game = new LK.Game();
/****
* Game Code
****/
// Spawn blockers with incoming warning
if (LK.getScore() % 5 === 0 && LK.getScore() > 0 && !blockersSpawned) {
blockersSpawned = true;
var incomingWarning = LK.getAsset('incoming', {
anchorX: 0.5,
anchorY: 0.5,
x: randomX,
// Match the x position of the incoming blocker
y: game.height / 10 // Move it higher, closer to the top of the screen
});
game.addChild(incomingWarning);
LK.setTimeout(function () {
incomingWarning.destroy();
}, 2000);
var newBlocker = new Blocker();
var safeZone = newBlocker.width / 2 + 300; // Half width of the blocker plus minimum gap
var randomX = Math.random() * (game.width - 2 * safeZone) + safeZone; // Calculate random X within safe zone
newBlocker.x = randomX;
newBlocker.y = -newBlocker.height;
blockers.push(newBlocker);
midgroundContainer.addChild(newBlocker);
}
var backgroundContainer = game.addChild(new BackgroundContainer());
var midgroundContainer = game.addChild(new MidgroundContainer());
var foregroundContainer = game.addChild(new ForegroundContainer());
var background = backgroundContainer.addChild(LK.getAsset('background', {
anchorX: 0,
anchorY: 0,
x: 0,
y: 0,
width: 2048,
height: 2732
}));
// Initialize player, enemies, and food arrays
// Define assets for the player fish, enemy fish, and food fish
// Initialize score text
var scoreTxt = new Text2('0', {
size: 150,
fill: '#ffffff',
stroke: '#000000',
strokeThickness: 5
});
scoreTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreTxt);
// Touch down event to set player's destination
game.on('down', function (obj) {
var touchPosition = obj.event.getLocalPosition(game);
if (player.readyForNewCommand) {
player.destination = {
x: touchPosition.x,
y: touchPosition.y
};
player.speed = 40; // Reset speed
player.readyForNewCommand = false; // Player is not ready for a new command until it reaches its destination
}
});
var player;
var enemies = [];
var food = [];
var blockers = [];
var tv;
var blockersSpawned = false;
// Create the player fish
player = midgroundContainer.addChild(new PlayerFish());
player.x = game.width / 2;
player.y = game.height / 2;
// Game tick event
LK.on('tick', function () {
// Move enemies and check for off-screen
for (var i = enemies.length - 1; i >= 0; i--) {
enemies[i].move();
if (enemies[i].x < -enemies[i].width) {
enemies[i].destroy();
enemies.splice(i, 1);
}
}
// Move food and check for off-screen
for (var j = food.length - 1; j >= 0; j--) {
food[j].move();
if (food[j].x < -food[j].width) {
food[j].destroy();
food.splice(j, 1);
}
}
// Check for player collision with enemies
for (var k = 0; k < enemies.length; k++) {
if (player.intersects(enemies[k])) {
LK.effects.flashScreen(0xff0000, 1000);
LK.showGameOver();
return;
}
}
for (var n = 0; n < blockers.length; n++) {
if (player.intersects(blockers[n])) {
LK.effects.flashScreen(0xff0000, 1000);
LK.showGameOver();
return;
}
}
// Check for player collision with food and grow if the food is smaller
for (var l = 0; l < food.length; l++) {
if (player.intersects(food[l]) && player.width > food[l].width) {
player.grow();
food[l].destroy();
food.splice(l, 1);
// Increase score
LK.setScore(LK.getScore() + 1);
scoreTxt.setText(LK.getScore());
// Spawn a new enemy for each score increment
var newEnemy = new EnemyFish();
newEnemy.x = (newEnemy.direction > 0 ? 0 : game.width) + newEnemy.spawnOffset;
newEnemy.y = 200 + Math.random() * (game.height - 400);
enemies.push(newEnemy);
midgroundContainer.addChild(newEnemy);
}
}
for (var m = blockers.length - 1; m >= 0; m--) {
blockers[m].move();
if (blockers[m].y > game.height) {
blockers[m].destroy();
blockers.splice(m, 1);
}
}
// Move player
player.move();
// Spawn enemies and food
if (LK.getScore() % 5 !== 0) {
blockersSpawned = false;
}
if (LK.ticks % 60 === 0) {
var newFood = new FoodFish();
newFood.x = newFood.direction > 0 ? 0 : game.width;
newFood.y = 200 + Math.random() * (game.height - 900);
food.push(newFood);
midgroundContainer.addChild(newFood);
}
if (LK.getScore() % 5 === 0 && LK.getScore() > 0 && !blockersSpawned) {
blockersSpawned = true;
// Calculate random X within safe zone first
var safeZone = 300; // Minimum gap from the edge
var randomX = Math.random() * (game.width - 2 * safeZone) + safeZone;
var incomingWarning = LK.getAsset('incoming', {
anchorX: 0.5,
anchorY: 0.5,
x: randomX,
// Match the x position of the incoming blocker
y: game.height / 2
});
game.addChild(incomingWarning);
LK.setTimeout(function () {
incomingWarning.destroy();
}, 2000);
var newBlocker = new Blocker();
newBlocker.x = randomX;
newBlocker.y = -newBlocker.height;
blockers.push(newBlocker);
midgroundContainer.addChild(newBlocker);
}
});
Design a minimalistic, pixelated background for a cyberpunk AI city, focusing on a futuristic yet understated aesthetic to ensure it doesn't overshadow game elements.. pixelated. 8 bit.. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
cute red enemy flying drone. angry eyes. pixelated. 8 bit.. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Design a pixel art scene for a game item: a TV broadcasting a news alert about an imminent AI uprising. Include flashing warning signs and depict the newscaster in a state of high alert to convey urgency and tension, ensuring all elements are styled to fit within a pixelated game environment.. pixelated. 8 bit.. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
notepad word document file icon. pixelated. 8 bit.. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
yellow warning sign. flat pixelated. 8 bit.. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
red flame. flat pixelated. 8 bit.. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
blue text saying "+1". pixelated. 8 bit.. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
red danger warning sign. pixelated. 8 bit.. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.