User prompt
create a clock shape like this 00:00
User prompt
make a clock
User prompt
make the background of nightmare mode not match with the enemy color
User prompt
Please fix the bug: 'Uncaught TypeError: Cannot set properties of undefined (setting 'tint')' in or related to this line: 'enemy.enemyBody.tint = 0x990000; // Change enemy body color to a distinct red' Line Number: 279
User prompt
Please fix the bug: 'Uncaught ReferenceError: enemyBody is not defined' in or related to this line: 'enemyBody.tint = 0x990000; // Change enemy body color to a distinct red' Line Number: 279
User prompt
make the enemy red, but not matching with the background at nightmare mode
User prompt
make the background color is red, but not matching with the enemy color
User prompt
if NIGHTMARE MODE selected, change the background to red and increase the enemy speed
User prompt
change the normal mode text font to white
User prompt
change the mode 2 selection to become NIGHTMARE MODE and change the font color to red
User prompt
change the mode 1 text to normal mode
User prompt
remove SELECT GAME MODE text at the gamemode selection
User prompt
remove the NIGHT OF THE MASSACRE text at the gamemode selection
User prompt
change the NIGHT OF THE MASSACRE text to NIGHT OF THE MASSACRE 2
User prompt
decrease the NIGHT OF THE MASSACRE size
User prompt
make the NIGHT OF THE MASSACRE text to the start game screen
User prompt
make the gamemode selection appear after start game clicked
User prompt
add a gamemode selection
User prompt
Please fix the bug: 'ReferenceError: npcs is not defined' in or related to this line: 'for (var i = 0; i < npcs.length; i++) {' Line Number: 62
User prompt
Please fix the bug: 'ReferenceError: npcs is not defined' in or related to this line: 'for (var i = 0; i < npcs.length; i++) {' Line Number: 62
User prompt
Please fix the bug: 'Uncaught TypeError: Cannot read properties of undefined (reading 'x')' in or related to this line: 'bullet.x = player.x;' Line Number: 270
User prompt
Please fix the bug: 'Uncaught TypeError: Cannot set properties of null (setting 'x')' in or related to this line: 'if (player) {' Line Number: 262
User prompt
Please fix the bug: 'Uncaught TypeError: Cannot set properties of null (setting 'x')' in or related to this line: 'player.x = x;' Line Number: 262
User prompt
Please fix the bug: 'Uncaught TypeError: Cannot set properties of undefined (setting 'x')' in or related to this line: 'player.x = x;' Line Number: 262
User prompt
Please fix the bug: 'ReferenceError: bullets is not defined' in or related to this line: 'for (var j = bullets.length - 1; j >= 0; j--) {' Line Number: 291
/**** * Classes ****/ // Define a Bullet class var Bullet = Container.expand(function () { var self = Container.call(this); var bulletGraphics = self.attachAsset('bullet', { anchorX: 0.5, anchorY: 0.5 }); self.speed = -10; self.update = function () { self.y += self.speed; }; }); // 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 mode1Button = new Text2('Normal Mode', { size: 100, fill: "#ffffff" }); mode1Button.anchor.set(0.5, 0.5); mode1Button.x = 2048 / 2; mode1Button.y = 2732 / 2; self.addChild(mode1Button); var mode2Button = new Text2('NIGHTMARE MODE', { size: 100, fill: "#ff0000" }); mode2Button.anchor.set(0.5, 0.5); mode2Button.x = 2048 / 2; mode2Button.y = 2732 / 1.8; self.addChild(mode2Button); // 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: "#ffffff" }); 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: "#00ff00" }); 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 bullets = []; var npcs = []; // Add the start screen to the game var startScreen = game.addChild(new StartScreen()); // Create a clock shape to display time in the format 00:00 var clockText = new Text2('00:00', { size: 100, fill: "#ffffff" }); clockText.anchor.set(0.5, 0.5); clockText.x = 2048 / 2; clockText.y = 100; // Position the clock at the top center of the screen LK.gui.top.addChild(clockText); function initializeGame(mode) { console.log("Selected Game Mode:", mode); if (mode === 'mode2') { game.setBackgroundColor(0x8B0000); // Set background to dark red for NIGHTMARE 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 } 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; 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) { var bullet = new Bullet(); bullet.x = player.x; bullet.y = player.y; bullets.push(bullet); game.addChild(bullet); } }; // 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 } } } // Update bullets for (var j = bullets.length - 1; j >= 0; j--) { bullets[j].update(); for (var k = enemies.length - 1; k >= 0; k--) { if (bullets[j] && bullets[j].intersects(enemies[k])) { bullets[j].destroy(); bullets.splice(j, 1); enemies[k].destroy(); enemies.splice(k, 1); break; } } if (bullets[j] && bullets[j].y < -50) { bullets[j].destroy(); bullets.splice(j, 1); } } };
===================================================================
--- original.js
+++ change.js
@@ -237,65 +237,23 @@
/****
* Game Code
****/
-// Create a clock text
-var clockText = new Text2('00:00', {
- size: 100,
- fill: "#ffffff"
-});
-clockText.anchor.set(0.5, 0);
-clockText.x = 2048 / 2;
-clockText.y = 50;
-LK.gui.top.addChild(clockText);
-// Initialize clock variables
-var startTime = Date.now();
-// Update clock every tick
-game.update = function () {
- // Calculate elapsed time
- var elapsedTime = Date.now() - startTime;
- var minutes = Math.floor(elapsedTime / 60000);
- var seconds = Math.floor(elapsedTime % 60000 / 1000);
- // Format time as MM:SS
- var formattedTime = (minutes < 10 ? '0' : '') + minutes + ':' + (seconds < 10 ? '0' : '') + seconds;
- clockText.setText(formattedTime);
- // Existing update logic...
- for (var i = 0; i < enemies.length; i++) {
- enemies[i].update();
- if (player.intersects(enemies[i])) {
- LK.effects.flashScreen(0xff0000, 1000);
- LK.showGameOver();
- }
- for (var j = npcs.length - 1; j >= 0; j--) {
- if (npcs[j] && npcs[j].intersects(enemies[i])) {
- npcs[j].destroy();
- npcs.splice(j, 1);
- }
- }
- }
- for (var j = bullets.length - 1; j >= 0; j--) {
- bullets[j].update();
- for (var k = enemies.length - 1; k >= 0; k--) {
- if (bullets[j] && bullets[j].intersects(enemies[k])) {
- bullets[j].destroy();
- bullets.splice(j, 1);
- enemies[k].destroy();
- enemies.splice(k, 1);
- break;
- }
- }
- if (bullets[j] && bullets[j].y < -50) {
- bullets[j].destroy();
- bullets.splice(j, 1);
- }
- }
-};
var enemies = [];
var player = null;
var bullets = [];
var npcs = [];
// Add the start screen to the game
var startScreen = game.addChild(new StartScreen());
+// Create a clock shape to display time in the format 00:00
+var clockText = new Text2('00:00', {
+ size: 100,
+ fill: "#ffffff"
+});
+clockText.anchor.set(0.5, 0.5);
+clockText.x = 2048 / 2;
+clockText.y = 100; // Position the clock at the top center of the screen
+LK.gui.top.addChild(clockText);
function initializeGame(mode) {
console.log("Selected Game Mode:", mode);
if (mode === 'mode2') {
game.setBackgroundColor(0x8B0000); // Set background to dark red for NIGHTMARE MODE