User prompt
Has que la pared sea una línea recta
User prompt
Las partes sin textura ponle el número (1)
User prompt
Has que el piso y el techo sean parte del escenario ósea pseudo-3D
User prompt
Haz que el piso que es el símbolo (8) siempre esté abajo del personaje actuando como piso y poder caminar sobre el
User prompt
Has que el piso siempre esté abajo del personaje
User prompt
Haz que las paredes tengan este símbolo (7) el piso el símbolo (8) y el techo el símbolo (9)
User prompt
Pon que el jugador siempre aparezca en la coordenada ( 0 ) y has que las paredes tengan la altura de ( y 1 )hasta el máximo de( y 5 )
User prompt
Okey, crea una detección automática del piso techo y paredes para evitar confusiones con estas
User prompt
Haz que las paredes tengan colision
User prompt
Haz que las paredes tengan textura del famoso juego Backrooms
User prompt
No mira estas son la regla. 1- vamos a usar toda la pantalla 2- no uses cosas 2D 3- haz y imita lo que te diga pero usando la técnica llamada pseudo-3D
User prompt
Borra todo el código
User prompt
Borra todo compénsenos de nuevo
User prompt
Haz que el jugador tenga la visión en primera persona vamos a usar la isometría para el techo y el piso para dar el efecto 3D que no es 3D para los lados haz paredes y pilares que se puedan colisionar
User prompt
Please fix the bug: 'undefined is not an object (evaluating 'isoFloor.skew.x = -0.3')' in or related to this line: 'isoFloor.skew.x = -0.3;' Line Number: 183
User prompt
Haz espacios isométricos para el piso el techo
User prompt
Haz un sistema de rotación de cámara que deslizando el dedo se vea para una dirección u otra ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Please fix the bug: 'TypeError: undefined is not an object (evaluating 'sanityText.style.fill = sanityColor')' in or related to this line: 'sanityText.style.fill = sanityColor;' Line Number: 369
Code edit (1 edits merged)
Please save this source code
User prompt
Backrooms Infinite Escape
Initial prompt
Hola Ava, mi juego trata de una temática de juego muy popular llamada Backrooms estuvo de moda en el 2020. Quiero que crees habitaciones infinitas y que allá monstruos que te dire más adelante
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ var Door = Container.expand(function () { var self = Container.call(this); var doorGraphic = self.attachAsset('door', { anchorX: 0.5, anchorY: 0.5 }); self.direction = 'north'; self.isOpen = false; self.down = function (x, y, obj) { if (!self.isOpen && player.intersects(self)) { self.open(); } }; self.open = function () { self.isOpen = true; LK.getSound('door_open').play(); // Trigger room transition if (self.direction === 'north') { generateNewRoom(0, -1); } else if (self.direction === 'south') { generateNewRoom(0, 1); } else if (self.direction === 'west') { generateNewRoom(-1, 0); } else if (self.direction === 'east') { generateNewRoom(1, 0); } }; return self; }); var Monster = Container.expand(function () { var self = Container.call(this); var monsterGraphic = self.attachAsset('monster', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 1; self.patrolDirection = Math.random() * Math.PI * 2; self.patrolTimer = 0; self.chasing = false; self.update = function () { self.patrolTimer++; // Check if player is nearby var distance = Math.sqrt(Math.pow(self.x - player.x, 2) + Math.pow(self.y - player.y, 2)); if (distance < 150) { self.chasing = true; LK.getSound('monster_growl').play(); } else if (distance > 300) { self.chasing = false; } if (self.chasing) { // Chase player var dx = player.x - self.x; var dy = player.y - self.y; var dist = Math.sqrt(dx * dx + dy * dy); if (dist > 0) { self.x += dx / dist * self.speed * 2; self.y += dy / dist * self.speed * 2; } // Check collision with player if (distance < 40) { LK.showGameOver(); } } else { // Patrol behavior if (self.patrolTimer % 120 === 0) { self.patrolDirection = Math.random() * Math.PI * 2; } self.x += Math.cos(self.patrolDirection) * self.speed; self.y += Math.sin(self.patrolDirection) * self.speed; // Keep monster within room bounds if (self.x < -180) self.x = -180; if (self.x > 180) self.x = 180; if (self.y < -180) self.y = -180; if (self.y > 180) self.y = 180; } }; return self; }); var Player = Container.expand(function () { var self = Container.call(this); var playerGraphic = self.attachAsset('player', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 3; self.sanity = 100; self.targetX = 0; self.targetY = 0; self.moving = false; self.moveTo = function (x, y) { self.targetX = x; self.targetY = y; self.moving = true; tween(self, { x: x, y: y }, { duration: 500, easing: tween.linear, onFinish: function onFinish() { self.moving = false; LK.getSound('footstep').play(); } }); }; self.update = function () { // Check for monster proximity - decrease sanity if (currentRoom && currentRoom.monster) { var distance = Math.sqrt(Math.pow(self.x - currentRoom.monster.x, 2) + Math.pow(self.y - currentRoom.monster.y, 2)); if (distance < 100) { self.sanity -= 0.5; if (self.sanity <= 0) { LK.showGameOver(); } } } // Check for exit collision if (currentRoom && currentRoom.hasExit && currentRoom.exitObject) { if (self.intersects(currentRoom.exitObject)) { level++; LK.setScore(level); generateNewRoom(0, 0); if (level >= 10) { LK.showYouWin(); } } } }; return self; }); var Room = Container.expand(function () { var self = Container.call(this); self.roomId = Math.floor(Math.random() * 1000000); self.doors = []; self.hasExit = false; self.monster = null; // Create room floor var floor = self.attachAsset('room', { anchorX: 0.5, anchorY: 0.5 }); // Create walls var topWall = self.attachAsset('wall', { anchorX: 0.5, anchorY: 0.5, scaleX: 20, y: -200 }); var bottomWall = self.attachAsset('wall', { anchorX: 0.5, anchorY: 0.5, scaleX: 20, y: 200 }); var leftWall = self.attachAsset('wall', { anchorX: 0.5, anchorY: 0.5, scaleY: 20, x: -200 }); var rightWall = self.attachAsset('wall', { anchorX: 0.5, anchorY: 0.5, scaleY: 20, x: 200 }); // Add fluorescent lights var light1 = self.attachAsset('light', { anchorX: 0.5, anchorY: 0.5, x: -100, y: -150, alpha: 0.7 }); var light2 = self.attachAsset('light', { anchorX: 0.5, anchorY: 0.5, x: 100, y: 150, alpha: 0.7 }); self.createDoors = function () { // Create random doors (1-4 doors per room) var numDoors = Math.floor(Math.random() * 4) + 1; var sides = ['top', 'bottom', 'left', 'right']; for (var i = 0; i < numDoors; i++) { var side = sides[Math.floor(Math.random() * sides.length)]; var door = self.addChild(new Door()); switch (side) { case 'top': door.x = (Math.random() - 0.5) * 200; door.y = -200; door.direction = 'north'; break; case 'bottom': door.x = (Math.random() - 0.5) * 200; door.y = 200; door.direction = 'south'; break; case 'left': door.x = -200; door.y = (Math.random() - 0.5) * 200; door.direction = 'west'; break; case 'right': door.x = 200; door.y = (Math.random() - 0.5) * 200; door.direction = 'east'; break; } self.doors.push(door); } }; self.addExit = function () { if (Math.random() < 0.1) { // 10% chance for exit self.hasExit = true; var exit = self.attachAsset('exit', { anchorX: 0.5, anchorY: 0.5, x: (Math.random() - 0.5) * 300, y: (Math.random() - 0.5) * 300 }); self.exitObject = exit; } }; self.addMonster = function () { if (Math.random() < 0.3) { // 30% chance for monster self.monster = self.addChild(new Monster()); self.monster.x = (Math.random() - 0.5) * 300; self.monster.y = (Math.random() - 0.5) * 300; } }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x2a2a2a }); /**** * Game Code ****/ var player; var currentRoom; var level = 1; var rooms = []; var cameraOffsetX = 0; var cameraOffsetY = 0; // UI Elements var levelText = new Text2('Level: 1', { size: 60, fill: 0xFFFFFF }); levelText.anchor.set(0, 0); LK.gui.topRight.addChild(levelText); var sanityText = new Text2('Sanity: 100', { size: 50, fill: 0x00FF00 }); sanityText.anchor.set(0, 0); sanityText.y = 80; LK.gui.topRight.addChild(sanityText); function generateNewRoom(deltaX, deltaY) { // Clear current room if (currentRoom) { game.removeChild(currentRoom); } // Create new room currentRoom = game.addChild(new Room()); currentRoom.x = 1024; currentRoom.y = 1366; currentRoom.createDoors(); currentRoom.addExit(); currentRoom.addMonster(); // Reset player position if (deltaX !== 0 || deltaY !== 0) { player.x = -deltaX * 100; player.y = -deltaY * 100; } else { player.x = 0; player.y = 0; } } // Initialize game function initGame() { player = game.addChild(new Player()); player.x = 1024; player.y = 1366; generateNewRoom(0, 0); } game.down = function (x, y, obj) { if (!player.moving) { // Convert screen coordinates to game coordinates var gamePos = game.toLocal({ x: x, y: y }); // Check if clicking on a door var clickedDoor = false; if (currentRoom) { for (var i = 0; i < currentRoom.doors.length; i++) { var door = currentRoom.doors[i]; var doorGlobalPos = currentRoom.toGlobal(door.position); var distance = Math.sqrt(Math.pow(gamePos.x - doorGlobalPos.x, 2) + Math.pow(gamePos.y - doorGlobalPos.y, 2)); if (distance < 50) { door.open(); clickedDoor = true; break; } } } // If not clicking on door, move player if (!clickedDoor) { var localPos = currentRoom.toLocal(gamePos); // Keep player within room bounds localPos.x = Math.max(-180, Math.min(180, localPos.x)); localPos.y = Math.max(-180, Math.min(180, localPos.y)); player.moveTo(localPos.x, localPos.y); } } }; game.update = function () { // Update UI levelText.setText('Level: ' + level); if (player) { var sanityColor = 0x00ff00; if (player.sanity < 50) sanityColor = 0xffff00; if (player.sanity < 25) sanityColor = 0xff0000; sanityText.setText('Sanity: ' + Math.floor(player.sanity)); sanityText.tint = sanityColor; // Gradual sanity decrease over time if (LK.ticks % 300 === 0) { // Every 5 seconds player.sanity = Math.max(0, player.sanity - 1); } } // Flickering light effects if (currentRoom) { for (var i = 0; i < currentRoom.children.length; i++) { var child = currentRoom.children[i]; if (child.alpha !== undefined && child.alpha < 1) { if (Math.random() < 0.05) { child.alpha = Math.random() * 0.3 + 0.4; } } } } }; // Initialize the game initGame();
===================================================================
--- original.js
+++ change.js
@@ -335,13 +335,13 @@
game.update = function () {
// Update UI
levelText.setText('Level: ' + level);
if (player) {
- var sanityColor = "#00ff00";
- if (player.sanity < 50) sanityColor = "#ffff00";
- if (player.sanity < 25) sanityColor = "#ff0000";
+ var sanityColor = 0x00ff00;
+ if (player.sanity < 50) sanityColor = 0xffff00;
+ if (player.sanity < 25) sanityColor = 0xff0000;
sanityText.setText('Sanity: ' + Math.floor(player.sanity));
- sanityText.style.fill = sanityColor;
+ sanityText.tint = sanityColor;
// Gradual sanity decrease over time
if (LK.ticks % 300 === 0) {
// Every 5 seconds
player.sanity = Math.max(0, player.sanity - 1);