/**** * 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