Code edit (1 edits merged)
Please save this source code
User prompt
Dino Squadron Rush
Initial prompt
a game only played on keyboard controlled devises. a endless runner game where ten dinosaur jumps over cactus on ten separate grounds. first dinosaur jumps when Q key is pressed. second dinosaur jumps when w key is pressed . third dinosaur jumps when E key is pressed . fourth dinosaur jumps when R key is pressed . fifth dinosaur jumps when U key is pressed . sixth dinosaur jumps when I key is pressed . seventh dinosaur jumps when O key is pressed . eight dinosaur jumps when P key is pressed . ninth dinosaur jumps when C key is pressed . tenth dinosaur jumps when M key is pressed .
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ var Cactus = Container.expand(function (trackIndex) { var self = Container.call(this); var cactusGraphics = self.attachAsset('cactus', { anchorX: 0.5, anchorY: 1.0 }); self.trackIndex = trackIndex; self.speed = gameSpeed; self.update = function () { self.x -= self.speed; }; return self; }); var Dinosaur = Container.expand(function (trackIndex) { var self = Container.call(this); var dinoGraphics = self.attachAsset('dinosaur', { anchorX: 0.5, anchorY: 1.0 }); self.trackIndex = trackIndex; self.isJumping = false; self.jumpHeight = 0; self.jumpSpeed = 0; self.groundY = 0; self.jump = function () { if (!self.isJumping) { self.isJumping = true; self.jumpSpeed = -25; LK.getSound('jump').play(); } }; self.update = function () { if (self.isJumping) { self.jumpSpeed += 1.5; // gravity self.jumpHeight += self.jumpSpeed; if (self.jumpHeight >= 0) { self.jumpHeight = 0; self.isJumping = false; self.jumpSpeed = 0; } self.y = self.groundY + self.jumpHeight; } }; return self; }); var TouchZone = Container.expand(function (dinosaurIndex) { var self = Container.call(this); var zoneGraphics = self.attachAsset('touchZone', { anchorX: 0.5, anchorY: 0.5 }); zoneGraphics.alpha = 0.3; self.dinosaurIndex = dinosaurIndex; self.down = function (x, y, obj) { if (dinosaurs[self.dinosaurIndex]) { dinosaurs[self.dinosaurIndex].jump(); // Flash feedback LK.effects.flashObject(self, 0xffffff, 200); } }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x87ceeb }); /**** * Game Code ****/ // Game variables var dinosaurs = []; var cacti = []; var touchZones = []; var gameSpeed = 8; var spawnTimer = 0; var spawnInterval = 90; var trackHeight = 220; var trackStartY = 400; var score = 0; var speedIncreaseTimer = 0; // Create score display var scoreTxt = new Text2('Score: 0', { size: 60, fill: 0xFFFFFF }); scoreTxt.anchor.set(0.5, 0); LK.gui.top.addChild(scoreTxt); // Create ground tracks for (var i = 0; i < 10; i++) { var ground = game.addChild(LK.getAsset('ground', { anchorX: 0, anchorY: 0 })); ground.x = 0; ground.y = trackStartY + i * trackHeight; } // Create dinosaurs for (var i = 0; i < 10; i++) { var dino = game.addChild(new Dinosaur(i)); dino.x = 200; dino.y = trackStartY + i * trackHeight; dino.groundY = dino.y; dinosaurs.push(dino); } // Create touch zones (2 columns of 5 zones each) var zoneLabels = ['Q', 'W', 'E', 'R', 'U', 'I', 'O', 'P', 'C', 'M']; for (var i = 0; i < 10; i++) { var zone = game.addChild(new TouchZone(i)); // Position zones in two columns var col = Math.floor(i / 5); var row = i % 5; zone.x = 1600 + col * 220; zone.y = 500 + row * 220; // Add label var label = new Text2(zoneLabels[i], { size: 40, fill: 0xFFFFFF }); label.anchor.set(0.5, 0.5); zone.addChild(label); touchZones.push(zone); } // Spawn cactus on random track function spawnCactus() { var randomTrack = Math.floor(Math.random() * 10); var cactus = game.addChild(new Cactus(randomTrack)); cactus.x = 2200; cactus.y = trackStartY + randomTrack * trackHeight; cacti.push(cactus); } // Check collision between dinosaur and cactus function checkCollision(dino, cactus) { if (dino.trackIndex !== cactus.trackIndex) return false; var dx = Math.abs(dino.x - cactus.x); var dy = Math.abs(dino.y - cactus.y); return dx < 50 && dy < 60; } // Game update loop game.update = function () { // Update speed over time speedIncreaseTimer++; if (speedIncreaseTimer >= 300) { // Every 5 seconds gameSpeed += 0.5; speedIncreaseTimer = 0; } // Spawn cacti spawnTimer++; if (spawnTimer >= spawnInterval) { spawnCactus(); spawnTimer = 0; // Decrease spawn interval slightly over time if (spawnInterval > 30) { spawnInterval -= 1; } } // Update cacti for (var i = cacti.length - 1; i >= 0; i--) { var cactus = cacti[i]; cactus.speed = gameSpeed; // Remove off-screen cacti if (cactus.x < -100) { cactus.destroy(); cacti.splice(i, 1); score += 10; scoreTxt.setText('Score: ' + score); LK.setScore(score); } } // Check collisions for (var i = 0; i < dinosaurs.length; i++) { var dino = dinosaurs[i]; for (var j = 0; j < cacti.length; j++) { var cactus = cacti[j]; if (checkCollision(dino, cactus)) { LK.getSound('crash').play(); LK.effects.flashScreen(0xff0000, 1000); LK.showGameOver(); return; } } } };
===================================================================
--- original.js
+++ change.js
@@ -1,6 +1,195 @@
-/****
+/****
+* Plugins
+****/
+var tween = LK.import("@upit/tween.v1");
+
+/****
+* Classes
+****/
+var Cactus = Container.expand(function (trackIndex) {
+ var self = Container.call(this);
+ var cactusGraphics = self.attachAsset('cactus', {
+ anchorX: 0.5,
+ anchorY: 1.0
+ });
+ self.trackIndex = trackIndex;
+ self.speed = gameSpeed;
+ self.update = function () {
+ self.x -= self.speed;
+ };
+ return self;
+});
+var Dinosaur = Container.expand(function (trackIndex) {
+ var self = Container.call(this);
+ var dinoGraphics = self.attachAsset('dinosaur', {
+ anchorX: 0.5,
+ anchorY: 1.0
+ });
+ self.trackIndex = trackIndex;
+ self.isJumping = false;
+ self.jumpHeight = 0;
+ self.jumpSpeed = 0;
+ self.groundY = 0;
+ self.jump = function () {
+ if (!self.isJumping) {
+ self.isJumping = true;
+ self.jumpSpeed = -25;
+ LK.getSound('jump').play();
+ }
+ };
+ self.update = function () {
+ if (self.isJumping) {
+ self.jumpSpeed += 1.5; // gravity
+ self.jumpHeight += self.jumpSpeed;
+ if (self.jumpHeight >= 0) {
+ self.jumpHeight = 0;
+ self.isJumping = false;
+ self.jumpSpeed = 0;
+ }
+ self.y = self.groundY + self.jumpHeight;
+ }
+ };
+ return self;
+});
+var TouchZone = Container.expand(function (dinosaurIndex) {
+ var self = Container.call(this);
+ var zoneGraphics = self.attachAsset('touchZone', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ zoneGraphics.alpha = 0.3;
+ self.dinosaurIndex = dinosaurIndex;
+ self.down = function (x, y, obj) {
+ if (dinosaurs[self.dinosaurIndex]) {
+ dinosaurs[self.dinosaurIndex].jump();
+ // Flash feedback
+ LK.effects.flashObject(self, 0xffffff, 200);
+ }
+ };
+ return self;
+});
+
+/****
* Initialize Game
-****/
+****/
var game = new LK.Game({
- backgroundColor: 0x000000
-});
\ No newline at end of file
+ backgroundColor: 0x87ceeb
+});
+
+/****
+* Game Code
+****/
+// Game variables
+var dinosaurs = [];
+var cacti = [];
+var touchZones = [];
+var gameSpeed = 8;
+var spawnTimer = 0;
+var spawnInterval = 90;
+var trackHeight = 220;
+var trackStartY = 400;
+var score = 0;
+var speedIncreaseTimer = 0;
+// Create score display
+var scoreTxt = new Text2('Score: 0', {
+ size: 60,
+ fill: 0xFFFFFF
+});
+scoreTxt.anchor.set(0.5, 0);
+LK.gui.top.addChild(scoreTxt);
+// Create ground tracks
+for (var i = 0; i < 10; i++) {
+ var ground = game.addChild(LK.getAsset('ground', {
+ anchorX: 0,
+ anchorY: 0
+ }));
+ ground.x = 0;
+ ground.y = trackStartY + i * trackHeight;
+}
+// Create dinosaurs
+for (var i = 0; i < 10; i++) {
+ var dino = game.addChild(new Dinosaur(i));
+ dino.x = 200;
+ dino.y = trackStartY + i * trackHeight;
+ dino.groundY = dino.y;
+ dinosaurs.push(dino);
+}
+// Create touch zones (2 columns of 5 zones each)
+var zoneLabels = ['Q', 'W', 'E', 'R', 'U', 'I', 'O', 'P', 'C', 'M'];
+for (var i = 0; i < 10; i++) {
+ var zone = game.addChild(new TouchZone(i));
+ // Position zones in two columns
+ var col = Math.floor(i / 5);
+ var row = i % 5;
+ zone.x = 1600 + col * 220;
+ zone.y = 500 + row * 220;
+ // Add label
+ var label = new Text2(zoneLabels[i], {
+ size: 40,
+ fill: 0xFFFFFF
+ });
+ label.anchor.set(0.5, 0.5);
+ zone.addChild(label);
+ touchZones.push(zone);
+}
+// Spawn cactus on random track
+function spawnCactus() {
+ var randomTrack = Math.floor(Math.random() * 10);
+ var cactus = game.addChild(new Cactus(randomTrack));
+ cactus.x = 2200;
+ cactus.y = trackStartY + randomTrack * trackHeight;
+ cacti.push(cactus);
+}
+// Check collision between dinosaur and cactus
+function checkCollision(dino, cactus) {
+ if (dino.trackIndex !== cactus.trackIndex) return false;
+ var dx = Math.abs(dino.x - cactus.x);
+ var dy = Math.abs(dino.y - cactus.y);
+ return dx < 50 && dy < 60;
+}
+// Game update loop
+game.update = function () {
+ // Update speed over time
+ speedIncreaseTimer++;
+ if (speedIncreaseTimer >= 300) {
+ // Every 5 seconds
+ gameSpeed += 0.5;
+ speedIncreaseTimer = 0;
+ }
+ // Spawn cacti
+ spawnTimer++;
+ if (spawnTimer >= spawnInterval) {
+ spawnCactus();
+ spawnTimer = 0;
+ // Decrease spawn interval slightly over time
+ if (spawnInterval > 30) {
+ spawnInterval -= 1;
+ }
+ }
+ // Update cacti
+ for (var i = cacti.length - 1; i >= 0; i--) {
+ var cactus = cacti[i];
+ cactus.speed = gameSpeed;
+ // Remove off-screen cacti
+ if (cactus.x < -100) {
+ cactus.destroy();
+ cacti.splice(i, 1);
+ score += 10;
+ scoreTxt.setText('Score: ' + score);
+ LK.setScore(score);
+ }
+ }
+ // Check collisions
+ for (var i = 0; i < dinosaurs.length; i++) {
+ var dino = dinosaurs[i];
+ for (var j = 0; j < cacti.length; j++) {
+ var cactus = cacti[j];
+ if (checkCollision(dino, cactus)) {
+ LK.getSound('crash').play();
+ LK.effects.flashScreen(0xff0000, 1000);
+ LK.showGameOver();
+ return;
+ }
+ }
+ }
+};
\ No newline at end of file