/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ var Deer = Container.expand(function () { var self = Container.call(this); var deerGraphics = self.attachAsset('deer', { anchorX: 0.5, anchorY: 0.5 }); self.baseSpeed = 3; self.currentSpeed = self.baseSpeed; self.directionX = 1; self.directionY = 0; self.changeDirectionTimer = 0; self.evasiveness = 1; self.update = function () { // Change direction periodically for unpredictable movement self.changeDirectionTimer++; if (self.changeDirectionTimer > 60 / self.evasiveness) { self.changeDirectionTimer = 0; // Random direction change var angle = Math.random() * Math.PI * 2; self.directionX = Math.cos(angle); self.directionY = Math.sin(angle); } // Move deer self.x += self.directionX * self.currentSpeed; self.y += self.directionY * self.currentSpeed; // Keep deer within bounds with some margin var margin = 100; if (self.x < margin) { self.x = margin; self.directionX = Math.abs(self.directionX); } if (self.x > 2048 - margin) { self.x = 2048 - margin; self.directionX = -Math.abs(self.directionX); } if (self.y < margin) { self.y = margin; self.directionY = Math.abs(self.directionY); } if (self.y > 2732 - margin) { self.y = 2732 - margin; self.directionY = -Math.abs(self.directionY); } }; self.increaseEvasiveness = function () { self.evasiveness += 0.5; self.currentSpeed = self.baseSpeed + self.evasiveness * 1.5; }; self.escape = function () { // Respawn deer at random edge position var edge = Math.floor(Math.random() * 4); switch (edge) { case 0: // Top self.x = Math.random() * 2048; self.y = 100; break; case 1: // Right self.x = 1948; self.y = Math.random() * 2732; break; case 2: // Bottom self.x = Math.random() * 2048; self.y = 2632; break; case 3: // Left self.x = 100; self.y = Math.random() * 2732; break; } // Flash effect when escaping LK.effects.flashObject(self, 0xffff00, 500); }; return self; }); var Tree = Container.expand(function () { var self = Container.call(this); var treeGraphics = self.attachAsset('tree', { anchorX: 0.5, anchorY: 0.5 }); return self; }); var Truck = Container.expand(function () { var self = Container.call(this); var truckGraphics = self.attachAsset('truck', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 8; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x228b22 }); /**** * Game Code ****/ // Game variables var truck; var deer; var trees = []; var dragNode = null; var lastIntersecting = false; var hitCount = 0; var targetScore = 10; // Create score display var scoreTxt = new Text2('Score: 0', { size: 80, fill: 0xFFFFFF }); scoreTxt.anchor.set(0.5, 0); LK.gui.top.addChild(scoreTxt); // Create target display var targetTxt = new Text2('Target: ' + targetScore, { size: 60, fill: 0xFFFF00 }); targetTxt.anchor.set(1, 0); targetTxt.x = -20; targetTxt.y = 100; LK.gui.topRight.addChild(targetTxt); // Initialize truck truck = game.addChild(new Truck()); truck.x = 1024; truck.y = 2400; // Initialize deer deer = game.addChild(new Deer()); deer.x = 1024; deer.y = 400; // Create some trees as obstacles/scenery for (var i = 0; i < 8; i++) { var tree = game.addChild(new Tree()); tree.x = Math.random() * 1800 + 124; tree.y = Math.random() * 2400 + 200; trees.push(tree); } // Move handler function handleMove(x, y, obj) { if (dragNode) { dragNode.x = x; dragNode.y = y; } // Check collision between truck and deer var currentIntersecting = truck.intersects(deer); if (!lastIntersecting && currentIntersecting) { // Hit detected! hitCount++; LK.setScore(hitCount); scoreTxt.setText('Score: ' + hitCount); // Play hit sound LK.getSound('hit').play(); // Flash screen briefly LK.effects.flashScreen(0xff0000, 300); // Make deer more evasive deer.increaseEvasiveness(); // Deer escapes to new position deer.escape(); // Play escape sound LK.getSound('escape').play(); // Check win condition if (hitCount >= targetScore) { LK.showYouWin(); } } lastIntersecting = currentIntersecting; } // Touch controls game.move = handleMove; game.down = function (x, y, obj) { dragNode = truck; handleMove(x, y, obj); }; game.up = function (x, y, obj) { dragNode = null; }; // Main game loop game.update = function () { // Keep truck within bounds if (truck.x < 60) truck.x = 60; if (truck.x > 1988) truck.x = 1988; if (truck.y < 60) truck.y = 60; if (truck.y > 2672) truck.y = 2672; };
===================================================================
--- original.js
+++ change.js
@@ -1,6 +1,200 @@
-/****
+/****
+* Plugins
+****/
+var tween = LK.import("@upit/tween.v1");
+
+/****
+* Classes
+****/
+var Deer = Container.expand(function () {
+ var self = Container.call(this);
+ var deerGraphics = self.attachAsset('deer', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.baseSpeed = 3;
+ self.currentSpeed = self.baseSpeed;
+ self.directionX = 1;
+ self.directionY = 0;
+ self.changeDirectionTimer = 0;
+ self.evasiveness = 1;
+ self.update = function () {
+ // Change direction periodically for unpredictable movement
+ self.changeDirectionTimer++;
+ if (self.changeDirectionTimer > 60 / self.evasiveness) {
+ self.changeDirectionTimer = 0;
+ // Random direction change
+ var angle = Math.random() * Math.PI * 2;
+ self.directionX = Math.cos(angle);
+ self.directionY = Math.sin(angle);
+ }
+ // Move deer
+ self.x += self.directionX * self.currentSpeed;
+ self.y += self.directionY * self.currentSpeed;
+ // Keep deer within bounds with some margin
+ var margin = 100;
+ if (self.x < margin) {
+ self.x = margin;
+ self.directionX = Math.abs(self.directionX);
+ }
+ if (self.x > 2048 - margin) {
+ self.x = 2048 - margin;
+ self.directionX = -Math.abs(self.directionX);
+ }
+ if (self.y < margin) {
+ self.y = margin;
+ self.directionY = Math.abs(self.directionY);
+ }
+ if (self.y > 2732 - margin) {
+ self.y = 2732 - margin;
+ self.directionY = -Math.abs(self.directionY);
+ }
+ };
+ self.increaseEvasiveness = function () {
+ self.evasiveness += 0.5;
+ self.currentSpeed = self.baseSpeed + self.evasiveness * 1.5;
+ };
+ self.escape = function () {
+ // Respawn deer at random edge position
+ var edge = Math.floor(Math.random() * 4);
+ switch (edge) {
+ case 0:
+ // Top
+ self.x = Math.random() * 2048;
+ self.y = 100;
+ break;
+ case 1:
+ // Right
+ self.x = 1948;
+ self.y = Math.random() * 2732;
+ break;
+ case 2:
+ // Bottom
+ self.x = Math.random() * 2048;
+ self.y = 2632;
+ break;
+ case 3:
+ // Left
+ self.x = 100;
+ self.y = Math.random() * 2732;
+ break;
+ }
+ // Flash effect when escaping
+ LK.effects.flashObject(self, 0xffff00, 500);
+ };
+ return self;
+});
+var Tree = Container.expand(function () {
+ var self = Container.call(this);
+ var treeGraphics = self.attachAsset('tree', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ return self;
+});
+var Truck = Container.expand(function () {
+ var self = Container.call(this);
+ var truckGraphics = self.attachAsset('truck', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.speed = 8;
+ return self;
+});
+
+/****
* Initialize Game
-****/
+****/
var game = new LK.Game({
- backgroundColor: 0x000000
-});
\ No newline at end of file
+ backgroundColor: 0x228b22
+});
+
+/****
+* Game Code
+****/
+// Game variables
+var truck;
+var deer;
+var trees = [];
+var dragNode = null;
+var lastIntersecting = false;
+var hitCount = 0;
+var targetScore = 10;
+// Create score display
+var scoreTxt = new Text2('Score: 0', {
+ size: 80,
+ fill: 0xFFFFFF
+});
+scoreTxt.anchor.set(0.5, 0);
+LK.gui.top.addChild(scoreTxt);
+// Create target display
+var targetTxt = new Text2('Target: ' + targetScore, {
+ size: 60,
+ fill: 0xFFFF00
+});
+targetTxt.anchor.set(1, 0);
+targetTxt.x = -20;
+targetTxt.y = 100;
+LK.gui.topRight.addChild(targetTxt);
+// Initialize truck
+truck = game.addChild(new Truck());
+truck.x = 1024;
+truck.y = 2400;
+// Initialize deer
+deer = game.addChild(new Deer());
+deer.x = 1024;
+deer.y = 400;
+// Create some trees as obstacles/scenery
+for (var i = 0; i < 8; i++) {
+ var tree = game.addChild(new Tree());
+ tree.x = Math.random() * 1800 + 124;
+ tree.y = Math.random() * 2400 + 200;
+ trees.push(tree);
+}
+// Move handler
+function handleMove(x, y, obj) {
+ if (dragNode) {
+ dragNode.x = x;
+ dragNode.y = y;
+ }
+ // Check collision between truck and deer
+ var currentIntersecting = truck.intersects(deer);
+ if (!lastIntersecting && currentIntersecting) {
+ // Hit detected!
+ hitCount++;
+ LK.setScore(hitCount);
+ scoreTxt.setText('Score: ' + hitCount);
+ // Play hit sound
+ LK.getSound('hit').play();
+ // Flash screen briefly
+ LK.effects.flashScreen(0xff0000, 300);
+ // Make deer more evasive
+ deer.increaseEvasiveness();
+ // Deer escapes to new position
+ deer.escape();
+ // Play escape sound
+ LK.getSound('escape').play();
+ // Check win condition
+ if (hitCount >= targetScore) {
+ LK.showYouWin();
+ }
+ }
+ lastIntersecting = currentIntersecting;
+}
+// Touch controls
+game.move = handleMove;
+game.down = function (x, y, obj) {
+ dragNode = truck;
+ handleMove(x, y, obj);
+};
+game.up = function (x, y, obj) {
+ dragNode = null;
+};
+// Main game loop
+game.update = function () {
+ // Keep truck within bounds
+ if (truck.x < 60) truck.x = 60;
+ if (truck.x > 1988) truck.x = 1988;
+ if (truck.y < 60) truck.y = 60;
+ if (truck.y > 2672) truck.y = 2672;
+};
\ No newline at end of file