User prompt
Que haiga segundo nivel y si pierde empieza en el nivel 1 otra vez
User prompt
Que el laberinto sea de sillas pero una que otra elimina ese laberinto
User prompt
Que el profesor se mueva
User prompt
Que haiga una especie de laberinto pero echo discretamente
User prompt
Entonces unos controles
User prompt
Que haiga unas letras que se resalten arriba que digan cuarto 1
User prompt
Que la respuesta correcta no se diferencie
User prompt
Pero que la respuesta buena no este en verde
User prompt
Que la pregunta este con letras grandes que quepan en la pantalla sin ese fondo morado con un color que se diferencie y que sea de toda la pantalla
User prompt
Que cuando toque la puerta el profesor secquede inmovil
User prompt
Que con el minimo contacto con la puerta la prwgunta aparesca
User prompt
Que la pregunta aparesca en la mitad del fondo
User prompt
Que la pregunta aparesca en el 6 cuadro del fondo
User prompt
Que aparesca en el 7 cuadro del fondo
User prompt
Que la pregunta aparesca donde esta el primer cuadro del fondo
User prompt
Que la pregunta aparesca en la mitas de todo el cuarto
User prompt
Que aparesca donde aparecio el profesor
User prompt
En la mitad de la pantalla no abajo
User prompt
Que aparesca una pregunta al llegar ala puerta y si la responde bien pasa la pregunta es 7×2 obcion1 12 obcion 2 14 correcta la respuesta 2 y se abra la puerta
User prompt
Que aparesca la pregunta y las obsiones donde spaowneo el jugador
User prompt
Que la pagina aparesca al tocar la puerta y que sea la pregunta y que la pregunta este en la mitad donde aparece el jugador
User prompt
Cuanto el jugador llege ala puerta se aparesca una pagina con una pregunta que sea 7×2 1 respuesta 12 2 respuesta 14 que pase si el jugador responde la b
User prompt
Que abra una pagina con la pregunta que se vea en la mitad de la pantalla
User prompt
Please fix the bug: 'TypeError: LK.openUrl is not a function' in or related to this line: 'LK.openUrl("https://www.google.com/search?q=cuanto+es+7x2");' Line Number: 189
User prompt
Que cuando se llege ala puerta se abra una pagina con la pregunta
/**** * Classes ****/ // ProfesorMonster class: AI-driven monster that chases the student var ProfesorMonster = Container.expand(function () { var self = Container.call(this); // Attach profesor asset var profesorSprite = self.attachAsset('profesor', { anchorX: 0.5, anchorY: 0.5 }); // Track last position for event logic self.lastX = self.x; self.lastY = self.y; self.lastWasIntersecting = false; // Update method: chase the student self.update = function () { // Store last position self.lastX = self.x; self.lastY = self.y; // Immobilize profesor if student is touching the door (popup active) if (typeof showMathQuestion !== "undefined" && showMathQuestion || typeof student !== "undefined" && typeof student.lastWasIntersectingDoor !== "undefined" && student.lastWasIntersectingDoor) { // Profesor stays still, do not move return; } // Use global student variable if (typeof student === "undefined" || !student) return; // Simple AI: move towards the student var dx = student.x - self.x; var dy = student.y - self.y; var dist = Math.sqrt(dx * dx + dy * dy); var speed = 6; // profesor speed, now much slower than student if (dist > speed) { self.x += dx / dist * speed; self.y += dy / dist * speed; } else { self.x = student.x; self.y = student.y; } }; return self; }); // Student class: controllable player character var Student = Container.expand(function () { var self = Container.call(this); // Attach student asset var studentSprite = self.attachAsset('student', { anchorX: 0.5, anchorY: 0.5 }); // Initial target position is current position self.targetX = 300; self.targetY = 2732 / 2; // Track last position for event logic self.lastX = self.x; self.lastY = self.y; // Update method: move towards target position self.update = function () { // Store last position self.lastX = self.x; self.lastY = self.y; // Move towards targetX, targetY var dx = self.targetX - self.x; var dy = self.targetY - self.y; var dist = Math.sqrt(dx * dx + dy * dy); var speed = 18; // pixels per frame if (dist > speed) { self.x += dx / dist * speed; self.y += dy / dist * speed; } else { self.x = self.targetX; self.y = self.targetY; } }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x000000 }); /**** * Game Code ****/ // Level system var currentLevel = 1; var maxLevel = 2; // Helper to clear all children except joystick and overlays function clearGameObjects() { // Remove all children except overlays and joystick for (var i = game.children.length - 1; i >= 0; i--) { var child = game.children[i]; // Don't remove overlays or joystick (which are in LK.gui) game.removeChild(child); } } // Helper to setup a level function setupLevel(level) { clearGameObjects(); // Main floor (covers the whole map) var floor = LK.getAsset('floor', { anchorX: 0, anchorY: 0, x: 0, y: 0 }); game.addChild(floor); // Top and bottom walls (main corridor) var wallTop = LK.getAsset('wall', { x: 0, y: 0, anchorX: 0, anchorY: 0 }); var wallBottom = LK.getAsset('wall', { x: 0, y: 2732 - 40, anchorX: 0, anchorY: 0 }); game.addChild(wallTop); game.addChild(wallBottom); // Left and right walls (vertical boundaries) var wallLeft = LK.getAsset('wall', { width: 40, height: 2732, x: 0, y: 0, anchorX: 0, anchorY: 0 }); var wallRight = LK.getAsset('wall', { width: 40, height: 2732, x: 2048 - 40, y: 0, anchorX: 0, anchorY: 0 }); game.addChild(wallLeft); game.addChild(wallRight); // Add door (exit) at far right, near the sports field if (level === 1) { door = LK.getAsset('door', { x: 2048 - 200, y: 2200, anchorX: 0, anchorY: 0 }); } else if (level === 2) { // Second level: move door to a different location, e.g. top left door = LK.getAsset('door', { x: 200, y: 400, anchorX: 0, anchorY: 0 }); } game.addChild(door); // Add student (player) and center camera on them student = new Student(); if (level === 1) { student.x = 300; student.y = 2732 / 2; } else if (level === 2) { student.x = 2048 - 300; student.y = 2732 - 400; } game.addChild(student); // Add profesor (monster) as an AI-driven monster profesor = new ProfesorMonster(); if (level === 1) { profesor.x = 1600; profesor.y = 2732 / 2; } else if (level === 2) { profesor.x = 600; profesor.y = 600; } game.addChild(profesor); // Camera offset for 3rd person (centered on student) cameraOffsetX = 1024; // half width cameraOffsetY = 1366; // half height // Reset popup/question state showMathQuestion = false; mathQuestionPopup = null; } var door, student, profesor, cameraOffsetX, cameraOffsetY; setupLevel(currentLevel); // Camera follow logic game.update = function () { // Update student if (student.update) student.update(); // Update profesor monster AI if (profesor.update) profesor.update(); // Check for kill: profesor touches student (collision) var isIntersecting = profesor.intersects(student); if (!profesor.lastWasIntersecting && isIntersecting) { // Profesor kills student: show game over LK.effects.flashScreen(0xff0000, 1000); // Reset to level 1 after game over currentLevel = 1; LK.setTimeout(function () { setupLevel(currentLevel); }, 1200); LK.showGameOver(); } profesor.lastWasIntersecting = isIntersecting; // Check if student touches the door (minimum contact triggers question) if ((typeof showMathQuestion === "undefined" || !showMathQuestion) && door && student && !student.lastWasIntersectingDoor && student.intersects(door)) { showMathQuestion = true; student.lastWasIntersectingDoor = true; // Show the math question in-game as a fullscreen overlay with large, high-contrast text and options if (typeof mathQuestionPopup === "undefined" || !mathQuestionPopup) { mathQuestionPopup = new Container(); // Fullscreen transparent background (no purple, just to block input) var bg = LK.getAsset('furniture', { width: 2048, height: 2732, color: 0x000000, anchorX: 0, anchorY: 0 }); bg.alpha = 0.01; // almost invisible, just to block input mathQuestionPopup.addChild(bg); // Question text - very large, high-contrast, centered var questionText = new Text2("¿Cuánto es 7 × 2?", { size: 180, fill: 0xFFF700 // bright yellow for contrast }); questionText.anchor.set(0.5, 0); questionText.x = 2048 / 2; questionText.y = 320; mathQuestionPopup.addChild(questionText); // Option 1: 13 var option1 = new Text2("1) 13", { size: 140, fill: 0xFFFFFF }); option1.anchor.set(0.5, 0); option1.x = 2048 / 2; option1.y = 800; mathQuestionPopup.addChild(option1); // Option 2: 14 (correct) var option2 = new Text2("2) 14", { size: 140, fill: 0xFFFFFF // visually matches the incorrect answers }); option2.anchor.set(0.5, 0); option2.x = 2048 / 2; option2.y = 1100; mathQuestionPopup.addChild(option2); // Option 3: 2 var option3 = new Text2("3) 2", { size: 140, fill: 0xFFFFFF }); option3.anchor.set(0.5, 0); option3.x = 2048 / 2; option3.y = 1400; mathQuestionPopup.addChild(option3); // Add interaction for options option1.interactive = true; option1.buttonMode = true; option1.down = function () { LK.effects.flashScreen(0xff0000, 800); // Reset to level 1 after game over currentLevel = 1; LK.setTimeout(function () { setupLevel(currentLevel); }, 1000); LK.showGameOver(); if (mathQuestionPopup && mathQuestionPopup.parent) mathQuestionPopup.parent.removeChild(mathQuestionPopup); mathQuestionPopup = null; showMathQuestion = false; }; option2.interactive = true; option2.buttonMode = true; option2.down = function () { LK.effects.flashScreen(0x00ff00, 800); // Open the door: remove it from the game scene if (door && door.parent) { door.parent.removeChild(door); door = null; } if (mathQuestionPopup && mathQuestionPopup.parent) mathQuestionPopup.parent.removeChild(mathQuestionPopup); mathQuestionPopup = null; showMathQuestion = false; // Advance to next level or win if (typeof currentLevel !== "undefined" && typeof maxLevel !== "undefined") { if (currentLevel < maxLevel) { currentLevel += 1; setupLevel(currentLevel); } else { LK.showYouWin(); } } }; option3.interactive = true; option3.buttonMode = true; option3.down = function () { LK.effects.flashScreen(0xff0000, 800); // Reset to level 1 after game over currentLevel = 1; LK.setTimeout(function () { setupLevel(currentLevel); }, 1000); LK.showGameOver(); if (mathQuestionPopup && mathQuestionPopup.parent) mathQuestionPopup.parent.removeChild(mathQuestionPopup); mathQuestionPopup = null; showMathQuestion = false; }; // Fullscreen, no pivot, top-left at (0,0) mathQuestionPopup.x = 0; mathQuestionPopup.y = 0; game.addChild(mathQuestionPopup); } } // Track lastX for student for event logic student.lastX = student.x; student.lastY = student.y; // Track last intersection with door for event logic if (door && student) { if (typeof student.lastWasIntersectingDoor === "undefined") student.lastWasIntersectingDoor = false; var nowIntersectingDoor = student.intersects(door); student.lastWasIntersectingDoor = nowIntersectingDoor; } // Camera follows student from behind (3rd person, offset behind student direction) var dx = student.targetX - student.x; var dy = student.targetY - student.y; var dist = Math.sqrt(dx * dx + dy * dy); var camBehindDist = 350; // Distance behind the student var camX, camY; if (dist > 10) { // Camera is offset behind the student, in the opposite direction of movement camX = student.x - dx / dist * camBehindDist; camY = student.y - dy / dist * camBehindDist; } else { // If not moving, camera stays slightly above/behind camX = student.x - camBehindDist; camY = student.y; } // Clamp camera to map bounds camX = Math.max(0, Math.min(camX, 2048 - 2048)); camY = Math.max(0, Math.min(camY, 2732 - 2732)); game.x = -camX; game.y = -camY; }; // On-screen joystick controls for student movement // Joystick visual base var joystickBase = LK.getAsset('furniture', { width: 260, height: 260, color: 0x222222, anchorX: 0.5, anchorY: 0.5, x: 260, y: 2732 - 260 }); joystickBase.alpha = 0.25; LK.gui.left.addChild(joystickBase); // Joystick thumb var joystickThumb = LK.getAsset('furniture', { width: 120, height: 120, color: 0xffffff, anchorX: 0.5, anchorY: 0.5, x: 260, y: 2732 - 260 }); joystickThumb.alpha = 0.7; LK.gui.left.addChild(joystickThumb); var joystickActive = false; var joystickStartX = 0; var joystickStartY = 0; var joystickRadius = 110; // Helper to convert GUI to game coordinates function guiToGameCoords(guiX, guiY) { // For this game, joystick is always at bottom left, so just return as is return { x: guiX, y: guiY }; } // Joystick down joystickBase.interactive = true; joystickBase.buttonMode = true; joystickBase.down = function (x, y, obj) { joystickActive = true; joystickStartX = joystickBase.x; joystickStartY = joystickBase.y; joystickThumb.x = x; joystickThumb.y = y; }; // Joystick move joystickBase.move = function (x, y, obj) { if (!joystickActive) return; var dx = x - joystickStartX; var dy = y - joystickStartY; var dist = Math.sqrt(dx * dx + dy * dy); if (dist > joystickRadius) { dx = dx / dist * joystickRadius; dy = dy / dist * joystickRadius; } joystickThumb.x = joystickStartX + dx; joystickThumb.y = joystickStartY + dy; // Move student target relative to joystick direction var moveStrength = dist > 20 ? 1 : 0; // Deadzone if (moveStrength) { // Map joystick to game area var moveX = student.x + dx * 3; var moveY = student.y + dy * 3; student.targetX = Math.max(60, Math.min(2048 - 60, moveX)); student.targetY = Math.max(60, Math.min(2732 - 60, moveY)); } }; // Joystick up joystickBase.up = function (x, y, obj) { joystickActive = false; joystickThumb.x = joystickBase.x; joystickThumb.y = joystickBase.y; }; // Also allow drag-to-move for desktop or direct touch game.down = function (x, y, obj) { if (!joystickActive) { student.targetX = x; student.targetY = y; } }; game.move = function (x, y, obj) { if (!joystickActive) { student.targetX = x; student.targetY = y; } }; game.up = function (x, y, obj) { // No-op for now };
===================================================================
--- original.js
+++ change.js
@@ -29,37 +29,15 @@
var dx = student.x - self.x;
var dy = student.y - self.y;
var dist = Math.sqrt(dx * dx + dy * dy);
var speed = 6; // profesor speed, now much slower than student
- var nextX = self.x,
- nextY = self.y;
if (dist > speed) {
- nextX += dx / dist * speed;
- nextY += dy / dist * speed;
+ self.x += dx / dist * speed;
+ self.y += dy / dist * speed;
} else {
- nextX = student.x;
- nextY = student.y;
+ self.x = student.x;
+ self.y = student.y;
}
- // Maze collision: block movement if would intersect a maze wall
- var blocked = false;
- if (typeof mazeWalls !== "undefined") {
- for (var i = 0; i < mazeWalls.length; i++) {
- var oldX = self.x,
- oldY = self.y;
- self.x = nextX;
- self.y = nextY;
- if (self.intersects(mazeWalls[i])) {
- blocked = true;
- }
- self.x = oldX;
- self.y = oldY;
- if (blocked) break;
- }
- }
- if (!blocked) {
- self.x = nextX;
- self.y = nextY;
- }
};
return self;
});
// Student class: controllable player character
@@ -85,38 +63,15 @@
var dx = self.targetX - self.x;
var dy = self.targetY - self.y;
var dist = Math.sqrt(dx * dx + dy * dy);
var speed = 18; // pixels per frame
- var nextX = self.x,
- nextY = self.y;
if (dist > speed) {
- nextX += dx / dist * speed;
- nextY += dy / dist * speed;
+ self.x += dx / dist * speed;
+ self.y += dy / dist * speed;
} else {
- nextX = self.targetX;
- nextY = self.targetY;
+ self.x = self.targetX;
+ self.y = self.targetY;
}
- // Maze collision: block movement if would intersect a maze wall
- var blocked = false;
- if (typeof mazeWalls !== "undefined") {
- for (var i = 0; i < mazeWalls.length; i++) {
- // Temporarily move to nextX/nextY, check intersection, then revert
- var oldX = self.x,
- oldY = self.y;
- self.x = nextX;
- self.y = nextY;
- if (self.intersects(mazeWalls[i])) {
- blocked = true;
- }
- self.x = oldX;
- self.y = oldY;
- if (blocked) break;
- }
- }
- if (!blocked) {
- self.x = nextX;
- self.y = nextY;
- }
};
return self;
});
@@ -129,103 +84,112 @@
/****
* Game Code
****/
-// Expand the map: create a large school with multiple areas
-// Main floor (covers the whole map)
-var floor = LK.getAsset('floor', {
- anchorX: 0,
- anchorY: 0,
- x: 0,
- y: 0
-});
-game.addChild(floor);
-// Top and bottom walls (main corridor)
-var wallTop = LK.getAsset('wall', {
- x: 0,
- y: 0,
- anchorX: 0,
- anchorY: 0
-});
-var wallBottom = LK.getAsset('wall', {
- x: 0,
- y: 2732 - 40,
- anchorX: 0,
- anchorY: 0
-});
-game.addChild(wallTop);
-game.addChild(wallBottom);
-// Left and right walls (vertical boundaries)
-var wallLeft = LK.getAsset('wall', {
- width: 40,
- height: 2732,
- x: 0,
- y: 0,
- anchorX: 0,
- anchorY: 0
-});
-var wallRight = LK.getAsset('wall', {
- width: 40,
- height: 2732,
- x: 2048 - 40,
- y: 0,
- anchorX: 0,
- anchorY: 0
-});
-game.addChild(wallLeft);
-game.addChild(wallRight);
-// Discreet maze: add subtle wall segments to create a labyrinthine feel, but now using 'furniture' (sillas) as obstacles
-var mazeWalls = [];
-// Helper to create a "row" or "column" of sillas
-function addSillaRow(startX, startY, count, dx, dy, removableChance) {
- for (var i = 0; i < count; i++) {
- // Randomly skip some sillas to allow breaking the maze
- if (Math.random() < (removableChance || 0)) continue;
- var silla = LK.getAsset('furniture', {
- x: startX + i * dx,
- y: startY + i * dy,
- anchorX: 0.5,
- anchorY: 0.5
+// Level system
+var currentLevel = 1;
+var maxLevel = 2;
+// Helper to clear all children except joystick and overlays
+function clearGameObjects() {
+ // Remove all children except overlays and joystick
+ for (var i = game.children.length - 1; i >= 0; i--) {
+ var child = game.children[i];
+ // Don't remove overlays or joystick (which are in LK.gui)
+ game.removeChild(child);
+ }
+}
+// Helper to setup a level
+function setupLevel(level) {
+ clearGameObjects();
+ // Main floor (covers the whole map)
+ var floor = LK.getAsset('floor', {
+ anchorX: 0,
+ anchorY: 0,
+ x: 0,
+ y: 0
+ });
+ game.addChild(floor);
+ // Top and bottom walls (main corridor)
+ var wallTop = LK.getAsset('wall', {
+ x: 0,
+ y: 0,
+ anchorX: 0,
+ anchorY: 0
+ });
+ var wallBottom = LK.getAsset('wall', {
+ x: 0,
+ y: 2732 - 40,
+ anchorX: 0,
+ anchorY: 0
+ });
+ game.addChild(wallTop);
+ game.addChild(wallBottom);
+ // Left and right walls (vertical boundaries)
+ var wallLeft = LK.getAsset('wall', {
+ width: 40,
+ height: 2732,
+ x: 0,
+ y: 0,
+ anchorX: 0,
+ anchorY: 0
+ });
+ var wallRight = LK.getAsset('wall', {
+ width: 40,
+ height: 2732,
+ x: 2048 - 40,
+ y: 0,
+ anchorX: 0,
+ anchorY: 0
+ });
+ game.addChild(wallLeft);
+ game.addChild(wallRight);
+ // Add door (exit) at far right, near the sports field
+ if (level === 1) {
+ door = LK.getAsset('door', {
+ x: 2048 - 200,
+ y: 2200,
+ anchorX: 0,
+ anchorY: 0
});
- mazeWalls.push(silla);
+ } else if (level === 2) {
+ // Second level: move door to a different location, e.g. top left
+ door = LK.getAsset('door', {
+ x: 200,
+ y: 400,
+ anchorX: 0,
+ anchorY: 0
+ });
}
+ game.addChild(door);
+ // Add student (player) and center camera on them
+ student = new Student();
+ if (level === 1) {
+ student.x = 300;
+ student.y = 2732 / 2;
+ } else if (level === 2) {
+ student.x = 2048 - 300;
+ student.y = 2732 - 400;
+ }
+ game.addChild(student);
+ // Add profesor (monster) as an AI-driven monster
+ profesor = new ProfesorMonster();
+ if (level === 1) {
+ profesor.x = 1600;
+ profesor.y = 2732 / 2;
+ } else if (level === 2) {
+ profesor.x = 600;
+ profesor.y = 600;
+ }
+ game.addChild(profesor);
+ // Camera offset for 3rd person (centered on student)
+ cameraOffsetX = 1024; // half width
+ cameraOffsetY = 1366; // half height
+ // Reset popup/question state
+ showMathQuestion = false;
+ mathQuestionPopup = null;
}
-// Horizontal "walls" of sillas (rows)
-addSillaRow(320, 620, 12, 55, 0, 0.18); // top row, some sillas missing
-addSillaRow(920, 1020, 15, 55, 0, 0.22); // middle row, more gaps
-addSillaRow(420, 1620, 22, 55, 0, 0.15); // long row, few gaps
-addSillaRow(120, 2120, 13, 55, 0, 0.25); // bottom left, more gaps
-addSillaRow(1220, 2220, 11, 55, 0, 0.20); // bottom right, some gaps
-// Vertical "walls" of sillas (columns)
-addSillaRow(720, 420, 13, 0, 55, 0.18); // left column
-addSillaRow(1520, 920, 16, 0, 55, 0.22); // right column
-addSillaRow(420, 1320, 13, 0, 55, 0.20); // mid-left column
-addSillaRow(1120, 1820, 11, 0, 55, 0.18); // mid-right column
-addSillaRow(1720, 2020, 8, 0, 55, 0.25); // far right column
-for (var i = 0; i < mazeWalls.length; i++) {
- game.addChild(mazeWalls[i]);
-}
-// Add door (exit) at far right, near the sports field
-var door = LK.getAsset('door', {
- x: 2048 - 200,
- y: 2200,
- anchorX: 0,
- anchorY: 0
-});
-game.addChild(door);
-// Add student (player) and center camera on them
-var student = new Student();
-student.x = 300;
-student.y = 2732 / 2;
-game.addChild(student);
-// Add profesor (monster) as an AI-driven monster
-var profesor = new ProfesorMonster();
-profesor.x = 1600;
-profesor.y = 2732 / 2;
-game.addChild(profesor);
-// Camera offset for 3rd person (centered on student)
-var cameraOffsetX = 1024; // half width
-var cameraOffsetY = 1366; // half height
+var door, student, profesor, cameraOffsetX, cameraOffsetY;
+setupLevel(currentLevel);
// Camera follow logic
game.update = function () {
// Update student
if (student.update) student.update();
@@ -235,8 +199,13 @@
var isIntersecting = profesor.intersects(student);
if (!profesor.lastWasIntersecting && isIntersecting) {
// Profesor kills student: show game over
LK.effects.flashScreen(0xff0000, 1000);
+ // Reset to level 1 after game over
+ currentLevel = 1;
+ LK.setTimeout(function () {
+ setupLevel(currentLevel);
+ }, 1200);
LK.showGameOver();
}
profesor.lastWasIntersecting = isIntersecting;
// Check if student touches the door (minimum contact triggers question)
@@ -296,8 +265,13 @@
option1.interactive = true;
option1.buttonMode = true;
option1.down = function () {
LK.effects.flashScreen(0xff0000, 800);
+ // Reset to level 1 after game over
+ currentLevel = 1;
+ LK.setTimeout(function () {
+ setupLevel(currentLevel);
+ }, 1000);
LK.showGameOver();
if (mathQuestionPopup && mathQuestionPopup.parent) mathQuestionPopup.parent.removeChild(mathQuestionPopup);
mathQuestionPopup = null;
showMathQuestion = false;
@@ -313,13 +287,27 @@
}
if (mathQuestionPopup && mathQuestionPopup.parent) mathQuestionPopup.parent.removeChild(mathQuestionPopup);
mathQuestionPopup = null;
showMathQuestion = false;
+ // Advance to next level or win
+ if (typeof currentLevel !== "undefined" && typeof maxLevel !== "undefined") {
+ if (currentLevel < maxLevel) {
+ currentLevel += 1;
+ setupLevel(currentLevel);
+ } else {
+ LK.showYouWin();
+ }
+ }
};
option3.interactive = true;
option3.buttonMode = true;
option3.down = function () {
LK.effects.flashScreen(0xff0000, 800);
+ // Reset to level 1 after game over
+ currentLevel = 1;
+ LK.setTimeout(function () {
+ setupLevel(currentLevel);
+ }, 1000);
LK.showGameOver();
if (mathQuestionPopup && mathQuestionPopup.parent) mathQuestionPopup.parent.removeChild(mathQuestionPopup);
mathQuestionPopup = null;
showMathQuestion = false;
@@ -437,47 +425,16 @@
};
// Also allow drag-to-move for desktop or direct touch
game.down = function (x, y, obj) {
if (!joystickActive) {
- // Check if touching a silla (maze wall) to remove it
- var removed = false;
- for (var i = 0; i < mazeWalls.length; i++) {
- var silla = mazeWalls[i];
- // Only allow removal if close enough (within 80px)
- var dx = x - (silla.x || 0);
- var dy = y - (silla.y || 0);
- if (Math.sqrt(dx * dx + dy * dy) < 80) {
- if (silla.parent) silla.parent.removeChild(silla);
- mazeWalls.splice(i, 1);
- removed = true;
- break;
- }
- }
- if (!removed) {
- student.targetX = x;
- student.targetY = y;
- }
+ student.targetX = x;
+ student.targetY = y;
}
};
game.move = function (x, y, obj) {
if (!joystickActive) {
- // Check if dragging over a silla (maze wall) to remove it
- var removed = false;
- for (var i = 0; i < mazeWalls.length; i++) {
- var silla = mazeWalls[i];
- var dx = x - (silla.x || 0);
- var dy = y - (silla.y || 0);
- if (Math.sqrt(dx * dx + dy * dy) < 80) {
- if (silla.parent) silla.parent.removeChild(silla);
- mazeWalls.splice(i, 1);
- removed = true;
- break;
- }
- }
- if (!removed) {
- student.targetX = x;
- student.targetY = y;
- }
+ student.targetX = x;
+ student.targetY = y;
}
};
game.up = function (x, y, obj) {
// No-op for now
Modern App Store icon, high definition, square with rounded corners, for a game titled "San Luis: El Monstruo del Colegio" and with the description "Juego de escondite en el colegio San Luis de Yarumal, donde debes evitar a un profesor monstruoso y escapar del colegio.". No text on icon!
Puerta. In-Game asset. 2d. High contrast. No shadows
Piso liso. In-Game asset. 2d. High contrast. No shadows
Un solo pupitre. In-Game asset. 2d. High contrast. No shadows
Niño pequeño con uniforme blanco y sudadera azul. In-Game asset. 2d. High contrast. No shadows
Suelo de concreto. In-Game asset. 2d. High contrast. No shadows