User prompt
Please fix the bug: 'Uncaught TypeError: Cannot set properties of undefined (setting 'y')' in or related to this line: 'mode2Button.y = 2732 / 1.7;' Line Number: 94
User prompt
make the easy and nightmare mode more little bit near to normal mode
User prompt
make easy and nightmare more far from normal mode
User prompt
Please fix the bug: 'Uncaught TypeError: Cannot read properties of undefined (reading 'y')' in or related to this line: 'mode1Button.y = (easyModeButton.y + mode2Button.y) / 2;' Line Number: 93
User prompt
make the normal mode button in the middle of easy mode and nightmare mode
User prompt
make the normal mode stands between easy mode and normal mode
User prompt
make the easy mode is more far from nightmare mode
User prompt
buat tombol mode mudah jadi lebih menjarak dari mode mimpi buruk
User prompt
Move the easy mode button to above the normal mode button
User prompt
Add easy mode
User prompt
make the NPCs walk from start
User prompt
hilangkan bulet
User prompt
make the time shows mm:ss everytime
User prompt
when the time show 06:00, end the game
User prompt
remove the time text
User prompt
make the time from time: 0 to 00:00
User prompt
make a timer, and show it when the game started
User prompt
make the clock appear when the game started
/**** * Classes ****/ // Define an Enemy class var Enemy = Container.expand(function () { var self = Container.call(this); var enemyBody = self.attachAsset('enemyBody', { anchorX: 0.5, anchorY: 0.5 }); var enemyArms = self.attachAsset('enemyArms', { anchorX: 0.5, anchorY: 0.5 }); var enemyLegs = self.attachAsset('enemyLegs', { anchorX: 0.5, anchorY: 0.5 }); var enemyHead = self.attachAsset('enemyHead', { anchorX: 0.5, anchorY: 0.5 }); enemyArms.y = -enemyBody.height / 4; enemyLegs.y = enemyBody.height / 2; enemyHead.y = -enemyBody.height / 2; self.speed = 6; self.update = function () { // Calculate the direction vector between enemy and NPCs var dxNpc = 0; var dyNpc = 0; var closestNpc = null; var closestDistance = Infinity; for (var i = 0; i < npcs.length; i++) { var dx = npcs[i].x - self.x; var dy = npcs[i].y - self.y; var distance = Math.sqrt(dx * dx + dy * dy); if (distance < closestDistance) { closestNpc = npcs[i]; closestDistance = distance; } } if (closestNpc) { dxNpc = closestNpc.x - self.x; dyNpc = closestNpc.y - self.y; var magnitudeNpc = Math.sqrt(dxNpc * dxNpc + dyNpc * dyNpc); // Normalize the direction vector dxNpc /= magnitudeNpc; dyNpc /= magnitudeNpc; // Move the enemy towards the closest NPC self.x += dxNpc * self.speed; self.y += dyNpc * self.speed; } else { // Calculate the direction vector between enemy and player var dxPlayer = player.x - self.x; var dyPlayer = player.y - self.y; var magnitudePlayer = Math.sqrt(dxPlayer * dxPlayer + dyPlayer * dyPlayer); // Normalize the direction vector dxPlayer /= magnitudePlayer; dyPlayer /= magnitudePlayer; // Move the enemy towards the player self.x += dxPlayer * self.speed; self.y += dyPlayer * self.speed; } }; }); // Define a MenuScreen class var MenuScreen = Container.expand(function () { var self = Container.call(this); // Create a button for each game mode var easyModeButton = new Text2('EASY MODE', { size: 100, fill: 0x00FF00 }); easyModeButton.anchor.set(0.5, 0.5); easyModeButton.x = 2048 / 2; easyModeButton.y = 2732 / 2.2; self.addChild(easyModeButton); var mode2Button = new Text2('NIGHTMARE MODE', { size: 100, fill: 0xFF0000 }); mode2Button.y = 2732 / 1.7; mode2Button.anchor.set(0.5, 0.5); mode2Button.x = 2048 / 2; self.addChild(mode2Button); var mode1Button = new Text2('Normal Mode', { size: 100, fill: 0xFFFFFF }); mode1Button.anchor.set(0.5, 0.5); mode1Button.x = 2048 / 2; mode1Button.y = (easyModeButton.y + mode2Button.y) / 2; self.addChild(mode1Button); // Add event listener to easy mode button easyModeButton.down = function () { self.destroy(); // Remove menu screen initializeGame('easy'); // Start the game in easy mode }; // Add event listeners to mode buttons mode1Button.down = function () { self.destroy(); // Remove menu screen initializeGame('mode1'); // Start the game in mode 1 }; mode2Button.down = function () { self.destroy(); // Remove menu screen initializeGame('mode2'); // Start the game in mode 2 }; }); // Define a NPC class var NPC = Container.expand(function () { var self = Container.call(this); var npcHead = self.attachAsset('playerHead', { anchorX: 0.5, anchorY: 0.5 }); npcHead.y = -80; var npcBody = self.attachAsset('playerBody', { anchorX: 0.5, anchorY: 0.5 }); var npcArms = self.attachAsset('playerArms', { anchorX: 0.5, anchorY: 0.5 }); npcArms.y = -30; var npcLegs = self.attachAsset('playerLegs', { anchorX: 0.5, anchorY: 0.5 }); npcLegs.y = 40; self.speed = 4; self.update = function () { // Randomly change direction every 60 frames if (LK.ticks % 60 == 0) { self.direction = Math.random() * Math.PI * 2; } // Calculate dx and dy based on the current direction var dx = Math.cos(self.direction); var dy = Math.sin(self.direction); // Move the NPC self.x += dx * self.speed; self.y += dy * self.speed; // Ensure NPC stays within game boundaries if (self.x < 0) { self.x = 0; self.direction = Math.PI - self.direction; } if (self.x > 2048) { self.x = 2048; self.direction = Math.PI - self.direction; } if (self.y < 0) { self.y = 0; self.direction = -self.direction; } if (self.y > 2732) { self.y = 2732; self.direction = -self.direction; } }; }); //<Assets used in the game will automatically appear here> // Define a Player class var Player = Container.expand(function () { var self = Container.call(this); var playerHead = self.attachAsset('playerHead', { anchorX: 0.5, anchorY: 0.5 }); playerHead.y = -80; var playerBody = self.attachAsset('playerBody', { anchorX: 0.5, anchorY: 0.5 }); var playerArms = self.attachAsset('playerArms', { anchorX: 0.5, anchorY: 0.5 }); playerArms.y = -30; var playerLegs = self.attachAsset('playerLegs', { anchorX: 0.5, anchorY: 0.5 }); playerLegs.y = 40; self.speed = 5; self.update = function () { // Player update logic }; }); // Define a StartScreen class var StartScreen = Container.expand(function () { var self = Container.call(this); // Create a title text for the start screen var titleText = new Text2('NIGHT OF THE MASSACRE 2', { size: 150, fill: 0xFFFFFF }); titleText.anchor.set(0.5, 0.5); titleText.x = 2048 / 2; titleText.y = 2732 / 4; self.addChild(titleText); // Create a start game button var startButton = new Text2('Start Game', { size: 150, fill: 0x00FF00 }); startButton.anchor.set(0.5, 0.5); startButton.x = 2048 / 2; startButton.y = 2732 / 2; self.addChild(startButton); // Add event listener to start button startButton.down = function () { self.destroy(); // Remove start screen var menuScreen = game.addChild(new MenuScreen()); // Show game mode selection }; }); // Add the start screen to the game // Define a Tree class var Tree = Container.expand(function () { var self = Container.call(this); var treeTrunk = self.attachAsset('treeTrunk', { anchorX: 0.5, anchorY: 1 }); var treeLeaves = self.attachAsset('treeLeaves', { anchorX: 0.5, anchorY: 1 }); treeLeaves.y = -treeTrunk.height; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x0000FF //Init game with blue background }); /**** * Game Code ****/ var enemies = []; var player = null; var npcs = []; // Add the start screen to the game var startScreen = game.addChild(new StartScreen()); var timerText; function initializeGame(mode) { // Initialize and display the timer timerText = new Text2('Time: 00:00', { size: 100, fill: 0xFFFFFF }); timerText.anchor.set(0.5, 0); LK.gui.top.addChild(timerText); var startTime = Date.now(); LK.setInterval(function () { var elapsedTime = Math.floor((Date.now() - startTime) / 1000); var minutes = Math.floor(elapsedTime / 60); var seconds = elapsedTime % 60; var formattedTime = minutes.toString().padStart(2, '0') + ':' + seconds.toString().padStart(2, '0'); timerText.setText('Time: ' + formattedTime); // End the game when the timer reaches 06:00 if (formattedTime === '06:00') { LK.showGameOver(); } }, 1000); console.log("Selected Game Mode:", mode); if (mode === 'mode2') { game.setBackgroundColor(0x8B0000); // Set background to dark red for NIGHTMARE MODE } else if (mode === 'easy') { game.setBackgroundColor(0x00FF00); // Set background to green for EASY MODE } // Initialize player player = game.addChild(new Player()); player.x = 2048 / 2; player.y = 2732 - 150; // Initialize enemies var enemy = new Enemy(); enemy.x = Math.random() * 2048; enemy.y = Math.random() * 1000; if (mode === 'mode2') { enemy.speed *= 1.5; // Increase enemy speed by 50% in NIGHTMARE MODE } else if (mode === 'easy') { enemy.speed *= 0.5; // Decrease enemy speed by 50% in EASY MODE } enemies.push(enemy); game.addChild(enemy); // Initialize 30 trees and spread them across the game var trees = []; for (var i = 0; i < 30; i++) { var tree = game.addChild(new Tree()); tree.x = Math.random() * 2048; tree.y = Math.random() * 2732; trees.push(tree); } // Initialize NPCs for (var i = 0; i < 20; i++) { var npc = game.addChild(new NPC()); npc.x = Math.random() * 2048; npc.y = Math.random() * 2732; npc.direction = Math.random() * Math.PI * 2; // Initialize random direction npcs.push(npc); } } // Handle player movement game.move = function (x, y, obj) { if (player) { player.x = x; player.y = y; } }; // Handle shooting game.down = function (x, y, obj) { if (player) { // Logic for player action on down event, if needed } }; // Game update loop game.update = function () { // Update enemies for (var i = 0; i < enemies.length; i++) { enemies[i].update(); if (player.intersects(enemies[i])) { LK.effects.flashScreen(0xff0000, 1000); LK.showGameOver(); } // Check if any NPC intersects with enemy for (var j = npcs.length - 1; j >= 0; j--) { if (npcs[j] && npcs[j].intersects(enemies[i])) { npcs[j].destroy(); // Destroy NPC npcs.splice(j, 1); // Remove NPC from array } } } };
===================================================================
--- original.js
+++ change.js
@@ -73,14 +73,14 @@
});
easyModeButton.anchor.set(0.5, 0.5);
easyModeButton.x = 2048 / 2;
easyModeButton.y = 2732 / 2.2;
- mode2Button.y = 2732 / 1.7;
self.addChild(easyModeButton);
var mode2Button = new Text2('NIGHTMARE MODE', {
size: 100,
fill: 0xFF0000
});
+ mode2Button.y = 2732 / 1.7;
mode2Button.anchor.set(0.5, 0.5);
mode2Button.x = 2048 / 2;
self.addChild(mode2Button);
var mode1Button = new Text2('Normal Mode', {