/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
/****
* Classes
****/
var Building = Container.expand(function () {
var self = Container.call(this);
var buildingGraphics = self.attachAsset('building', {
anchorX: 0.5,
anchorY: 1.0
});
self.depth = Math.random() * 0.5 + 0.5;
buildingGraphics.scaleX = self.depth;
buildingGraphics.scaleY = self.depth;
buildingGraphics.alpha = 0.3 + self.depth * 0.7;
return self;
});
var Citizen = Container.expand(function () {
var self = Container.call(this);
var citizenGraphics = self.attachAsset('citizen', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 2;
self.saved = false;
self.fallSpeed = 3;
self.update = function () {
if (!self.saved) {
self.y += self.fallSpeed;
}
};
return self;
});
var Cloud = Container.expand(function () {
var self = Container.call(this);
var cloudGraphics = self.attachAsset('cloud', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 1;
cloudGraphics.alpha = 0.6;
self.update = function () {
self.x -= self.speed;
if (self.x < -100) {
self.x = 2148;
}
};
return self;
});
var Superman = Container.expand(function () {
var self = Container.call(this);
var supermanGraphics = self.attachAsset('superman', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 8;
self.flying = false;
self.targetX = 0;
self.targetY = 0;
self.flyTo = function (x, y) {
self.targetX = x;
self.targetY = y;
self.flying = true;
};
self.update = function () {
if (self.flying) {
var dx = self.targetX - self.x;
var dy = self.targetY - self.y;
var distance = Math.sqrt(dx * dx + dy * dy);
if (distance > 10) {
self.x += dx / distance * self.speed;
self.y += dy / distance * self.speed;
} else {
self.flying = false;
}
}
};
return self;
});
var Villain = Container.expand(function () {
var self = Container.call(this);
var villainGraphics = self.attachAsset('villain', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 4;
self.direction = 1;
self.defeated = false;
self.update = function () {
if (!self.defeated) {
self.x += self.speed * self.direction;
if (self.x < 100 || self.x > 1948) {
self.direction *= -1;
}
}
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x87CEEB
});
/****
* Game Code
****/
game.setBackgroundColor(0x87CEEB);
// Game variables
var superman;
var citizens = [];
var villains = [];
var buildings = [];
var clouds = [];
var gameSpeed = 1;
var citizenSpawnTimer = 0;
var villainSpawnTimer = 0;
var difficultyTimer = 0;
// UI Elements
var scoreText = new Text2('Puntuación: 0', {
size: 60,
fill: 0xFFFFFF
});
scoreText.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreText);
var livesText = new Text2('Ciudadanos Salvados: 0', {
size: 50,
fill: 0xFFFFFF
});
livesText.anchor.set(0, 0);
livesText.x = 120;
livesText.y = 120;
LK.gui.topLeft.addChild(livesText);
// Initialize Superman
superman = game.addChild(new Superman());
superman.x = 1024;
superman.y = 1800;
// Create background buildings
for (var i = 0; i < 8; i++) {
var building = game.addChild(new Building());
building.x = i * 256 + 128;
building.y = 2732;
buildings.push(building);
}
// Create background clouds
for (var i = 0; i < 5; i++) {
var cloud = game.addChild(new Cloud());
cloud.x = i * 400 + 200;
cloud.y = 300 + Math.random() * 400;
clouds.push(cloud);
}
// Game event handlers
game.down = function (x, y, obj) {
superman.flyTo(x, y);
};
game.move = function (x, y, obj) {
superman.flyTo(x, y);
};
// Spawn functions
function spawnCitizen() {
var citizen = game.addChild(new Citizen());
citizen.x = Math.random() * 1848 + 100;
citizen.y = 100;
citizens.push(citizen);
}
function spawnVillain() {
var villain = game.addChild(new Villain());
villain.x = Math.random() * 1848 + 100;
villain.y = Math.random() * 1000 + 500;
villains.push(villain);
}
// Main game loop
game.update = function () {
// Update timers
citizenSpawnTimer++;
villainSpawnTimer++;
difficultyTimer++;
// Spawn citizens
if (citizenSpawnTimer > 120 / gameSpeed) {
spawnCitizen();
citizenSpawnTimer = 0;
}
// Spawn villains
if (villainSpawnTimer > 180 / gameSpeed) {
spawnVillain();
villainSpawnTimer = 0;
}
// Increase difficulty
if (difficultyTimer > 1800) {
gameSpeed += 0.1;
difficultyTimer = 0;
}
// Update citizens
for (var i = citizens.length - 1; i >= 0; i--) {
var citizen = citizens[i];
// Check if citizen fell off screen
if (citizen.y > 2732) {
citizen.destroy();
citizens.splice(i, 1);
continue;
}
// Check collision with Superman
if (superman.intersects(citizen) && !citizen.saved) {
citizen.saved = true;
LK.setScore(LK.getScore() + 10);
scoreText.setText('Puntuación: ' + LK.getScore());
livesText.setText('Ciudadanos Salvados: ' + Math.floor(LK.getScore() / 10));
// Visual effect
LK.effects.flashObject(citizen, 0x00ff00, 500);
LK.getSound('rescue').play();
// Remove citizen after brief delay
tween(citizen, {
alpha: 0
}, {
duration: 500,
onFinish: function onFinish() {
citizen.destroy();
}
});
citizens.splice(i, 1);
}
}
// Update villains
for (var i = villains.length - 1; i >= 0; i--) {
var villain = villains[i];
// Check collision with Superman
if (superman.intersects(villain) && !villain.defeated) {
villain.defeated = true;
LK.setScore(LK.getScore() + 25);
scoreText.setText('Puntuación: ' + LK.getScore());
// Visual effect
LK.effects.flashObject(villain, 0xff0000, 800);
LK.getSound('defeat').play();
// Remove villain after brief delay
tween(villain, {
alpha: 0,
scaleX: 0.1,
scaleY: 0.1
}, {
duration: 800,
onFinish: function onFinish() {
villain.destroy();
}
});
villains.splice(i, 1);
}
}
// Check win condition
if (LK.getScore() >= 500) {
LK.showYouWin();
}
// Update UI
scoreText.setText('Puntuación: ' + LK.getScore());
livesText.setText('Ciudadanos Salvados: ' + Math.floor(LK.getScore() / 10));
};
// Start background music
LK.playMusic('cityTheme'); ===================================================================
--- original.js
+++ change.js
@@ -1,6 +1,262 @@
-/****
+/****
+* Plugins
+****/
+var tween = LK.import("@upit/tween.v1");
+
+/****
+* Classes
+****/
+var Building = Container.expand(function () {
+ var self = Container.call(this);
+ var buildingGraphics = self.attachAsset('building', {
+ anchorX: 0.5,
+ anchorY: 1.0
+ });
+ self.depth = Math.random() * 0.5 + 0.5;
+ buildingGraphics.scaleX = self.depth;
+ buildingGraphics.scaleY = self.depth;
+ buildingGraphics.alpha = 0.3 + self.depth * 0.7;
+ return self;
+});
+var Citizen = Container.expand(function () {
+ var self = Container.call(this);
+ var citizenGraphics = self.attachAsset('citizen', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.speed = 2;
+ self.saved = false;
+ self.fallSpeed = 3;
+ self.update = function () {
+ if (!self.saved) {
+ self.y += self.fallSpeed;
+ }
+ };
+ return self;
+});
+var Cloud = Container.expand(function () {
+ var self = Container.call(this);
+ var cloudGraphics = self.attachAsset('cloud', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.speed = 1;
+ cloudGraphics.alpha = 0.6;
+ self.update = function () {
+ self.x -= self.speed;
+ if (self.x < -100) {
+ self.x = 2148;
+ }
+ };
+ return self;
+});
+var Superman = Container.expand(function () {
+ var self = Container.call(this);
+ var supermanGraphics = self.attachAsset('superman', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.speed = 8;
+ self.flying = false;
+ self.targetX = 0;
+ self.targetY = 0;
+ self.flyTo = function (x, y) {
+ self.targetX = x;
+ self.targetY = y;
+ self.flying = true;
+ };
+ self.update = function () {
+ if (self.flying) {
+ var dx = self.targetX - self.x;
+ var dy = self.targetY - self.y;
+ var distance = Math.sqrt(dx * dx + dy * dy);
+ if (distance > 10) {
+ self.x += dx / distance * self.speed;
+ self.y += dy / distance * self.speed;
+ } else {
+ self.flying = false;
+ }
+ }
+ };
+ return self;
+});
+var Villain = Container.expand(function () {
+ var self = Container.call(this);
+ var villainGraphics = self.attachAsset('villain', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.speed = 4;
+ self.direction = 1;
+ self.defeated = false;
+ self.update = function () {
+ if (!self.defeated) {
+ self.x += self.speed * self.direction;
+ if (self.x < 100 || self.x > 1948) {
+ self.direction *= -1;
+ }
+ }
+ };
+ return self;
+});
+
+/****
* Initialize Game
-****/
+****/
var game = new LK.Game({
- backgroundColor: 0x000000
-});
\ No newline at end of file
+ backgroundColor: 0x87CEEB
+});
+
+/****
+* Game Code
+****/
+game.setBackgroundColor(0x87CEEB);
+// Game variables
+var superman;
+var citizens = [];
+var villains = [];
+var buildings = [];
+var clouds = [];
+var gameSpeed = 1;
+var citizenSpawnTimer = 0;
+var villainSpawnTimer = 0;
+var difficultyTimer = 0;
+// UI Elements
+var scoreText = new Text2('Puntuación: 0', {
+ size: 60,
+ fill: 0xFFFFFF
+});
+scoreText.anchor.set(0.5, 0);
+LK.gui.top.addChild(scoreText);
+var livesText = new Text2('Ciudadanos Salvados: 0', {
+ size: 50,
+ fill: 0xFFFFFF
+});
+livesText.anchor.set(0, 0);
+livesText.x = 120;
+livesText.y = 120;
+LK.gui.topLeft.addChild(livesText);
+// Initialize Superman
+superman = game.addChild(new Superman());
+superman.x = 1024;
+superman.y = 1800;
+// Create background buildings
+for (var i = 0; i < 8; i++) {
+ var building = game.addChild(new Building());
+ building.x = i * 256 + 128;
+ building.y = 2732;
+ buildings.push(building);
+}
+// Create background clouds
+for (var i = 0; i < 5; i++) {
+ var cloud = game.addChild(new Cloud());
+ cloud.x = i * 400 + 200;
+ cloud.y = 300 + Math.random() * 400;
+ clouds.push(cloud);
+}
+// Game event handlers
+game.down = function (x, y, obj) {
+ superman.flyTo(x, y);
+};
+game.move = function (x, y, obj) {
+ superman.flyTo(x, y);
+};
+// Spawn functions
+function spawnCitizen() {
+ var citizen = game.addChild(new Citizen());
+ citizen.x = Math.random() * 1848 + 100;
+ citizen.y = 100;
+ citizens.push(citizen);
+}
+function spawnVillain() {
+ var villain = game.addChild(new Villain());
+ villain.x = Math.random() * 1848 + 100;
+ villain.y = Math.random() * 1000 + 500;
+ villains.push(villain);
+}
+// Main game loop
+game.update = function () {
+ // Update timers
+ citizenSpawnTimer++;
+ villainSpawnTimer++;
+ difficultyTimer++;
+ // Spawn citizens
+ if (citizenSpawnTimer > 120 / gameSpeed) {
+ spawnCitizen();
+ citizenSpawnTimer = 0;
+ }
+ // Spawn villains
+ if (villainSpawnTimer > 180 / gameSpeed) {
+ spawnVillain();
+ villainSpawnTimer = 0;
+ }
+ // Increase difficulty
+ if (difficultyTimer > 1800) {
+ gameSpeed += 0.1;
+ difficultyTimer = 0;
+ }
+ // Update citizens
+ for (var i = citizens.length - 1; i >= 0; i--) {
+ var citizen = citizens[i];
+ // Check if citizen fell off screen
+ if (citizen.y > 2732) {
+ citizen.destroy();
+ citizens.splice(i, 1);
+ continue;
+ }
+ // Check collision with Superman
+ if (superman.intersects(citizen) && !citizen.saved) {
+ citizen.saved = true;
+ LK.setScore(LK.getScore() + 10);
+ scoreText.setText('Puntuación: ' + LK.getScore());
+ livesText.setText('Ciudadanos Salvados: ' + Math.floor(LK.getScore() / 10));
+ // Visual effect
+ LK.effects.flashObject(citizen, 0x00ff00, 500);
+ LK.getSound('rescue').play();
+ // Remove citizen after brief delay
+ tween(citizen, {
+ alpha: 0
+ }, {
+ duration: 500,
+ onFinish: function onFinish() {
+ citizen.destroy();
+ }
+ });
+ citizens.splice(i, 1);
+ }
+ }
+ // Update villains
+ for (var i = villains.length - 1; i >= 0; i--) {
+ var villain = villains[i];
+ // Check collision with Superman
+ if (superman.intersects(villain) && !villain.defeated) {
+ villain.defeated = true;
+ LK.setScore(LK.getScore() + 25);
+ scoreText.setText('Puntuación: ' + LK.getScore());
+ // Visual effect
+ LK.effects.flashObject(villain, 0xff0000, 800);
+ LK.getSound('defeat').play();
+ // Remove villain after brief delay
+ tween(villain, {
+ alpha: 0,
+ scaleX: 0.1,
+ scaleY: 0.1
+ }, {
+ duration: 800,
+ onFinish: function onFinish() {
+ villain.destroy();
+ }
+ });
+ villains.splice(i, 1);
+ }
+ }
+ // Check win condition
+ if (LK.getScore() >= 500) {
+ LK.showYouWin();
+ }
+ // Update UI
+ scoreText.setText('Puntuación: ' + LK.getScore());
+ livesText.setText('Ciudadanos Salvados: ' + Math.floor(LK.getScore() / 10));
+};
+// Start background music
+LK.playMusic('cityTheme');
\ No newline at end of file
Believe me, Superman flies from behind. In-Game asset. High contrast. No shadows
make a superman villain. In-Game asset. High contrast. No shadows
make citizens fall. In-Game asset. No shadows. 2d
build buildings next to each other. In-Game asset. High contrast. No shadows
make clouds. In-Game asset. High contrast. No shadows