User prompt
Make the 4 sides of the maze move with centerasset too
User prompt
Make the maze and its 4 sides walls follow the centerasset
User prompt
Make the walls and the maze one piece
User prompt
Make the maze follow the centrasset
User prompt
Make the Centerasset movable by mouse cursor
User prompt
Adjust the screen to fit the maze in it
User prompt
Maker the centrasset on the front of the screen and can be touched by cursor to move it and move maze with it.
User prompt
Create new asset in the center of the maze. If i drag it drage the maze with it.
User prompt
Hold on maze to move it anywhere on the screen
User prompt
Make the maze on the front side of the screen
User prompt
Make the maze follow the arrow of mouse if moved in the screen.
User prompt
Move maze to the right side
User prompt
Hold maze corner to drag it anywhere in the screen
User prompt
Move maze by one of its walls
User prompt
Center the maze
User prompt
Lower the maze little bit
User prompt
Move the maze to the right side little bit
User prompt
Remove many walls inside the 4 walls of the maze to create spaces for the player
User prompt
Reduce the number of walls inside maze
User prompt
Generate maze with walls inside the 4 sides of maze
User prompt
move maze to the bottom right side of the scren
User prompt
Make function that all walls can be removed from the maze axcept the surrounding lines
User prompt
Fit maze to screen
User prompt
make the maze in the center
User prompt
Reduce the number of the walls
/****
* Classes
****/
// Class for the center asset
var CenterAsset = Container.expand(function () {
var self = Container.call(this);
var centerAssetGraphics = self.attachAsset('centerAsset', {
anchorX: 0.5,
anchorY: 0.5
});
});
// Class for the exit point
var Exit = Container.expand(function () {
var self = Container.call(this);
var exitGraphics = self.attachAsset('exit', {
anchorX: 0.5,
anchorY: 0.5
});
});
// Class for maze blocks
var MazeBlock = Container.expand(function () {
var self = Container.call(this);
var blockGraphics = self.attachAsset('wall', {
anchorX: 0.5,
anchorY: 0.5
});
});
//<Assets used in the game will automatically appear here>
//<Write imports for supported plugins here>
// Class for the player character
var Player = Container.expand(function () {
var self = Container.call(this);
var playerGraphics = self.attachAsset('player', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 5;
self.update = function () {
// Player update logic
};
});
// Class for maze walls
var Wall = Container.expand(function () {
var self = Container.call(this);
var wallGraphics = self.attachAsset('wall', {
anchorX: 0.5,
anchorY: 0.5
});
self.down = function (x, y, obj) {
dragNode = centerAsset;
mazePosition.x = x - centerAsset.x; // Update the maze's x position
mazePosition.y = y - centerAsset.y; // Update the maze's y position
handleMove(x, y, obj);
};
self.move = function (x, y, obj) {
if (dragNode === centerAsset) {
handleMove(x, y, obj);
}
};
self.up = function (x, y, obj) {
dragNode = null;
};
});
/****
* Initialize Game
****/
// Function to generate a random maze
var game = new LK.Game({
backgroundColor: 0x000000
});
/****
* Game Code
****/
var background = LK.getAsset('Background1', {
anchorX: 0.5,
anchorY: 0.5
});
background.width = game.width;
background.height = game.height;
background.x = game.width / 2;
background.y = game.height / 2;
game.addChildAt(background, 0);
// Define the handleMove function
function handleMove(x, y, obj) {
if (dragNode && dragNode instanceof CenterAsset) {
dragNode.x = x; // Move the centerAsset to the mouse position
dragNode.y = y; // Move the centerAsset to the mouse position
// Update the position of all maze blocks and walls
for (var i = 0; i < mazeData.maze.length; i++) {
if (mazeData.maze[i] !== undefined) {
// Check if mazeData.maze[i] is defined
for (var j = 0; j < mazeData.maze[i].length; j++) {
var block = mazeData.maze[i][j];
if (block !== null && block !== undefined) {
block.x = x - mazePosition.x + j * mazeData.blockSize.width; // Move the maze blocks to the mouse position
block.y = y - mazePosition.y + i * mazeData.blockSize.height; // Move the maze blocks to the mouse position
}
}
}
}
// Update the position of the player and the exit
player.x = x - mazePosition.x + mazeData.blockSize.width; // Move the player to the mouse position
player.y = y - mazePosition.y;
exit.x = x - mazePosition.x + 2 * mazeData.blockSize.width; // Move the exit to the mouse position
exit.y = y - mazePosition.y;
}
}
game.move = handleMove;
game.up = function (x, y, obj) {
dragNode = null;
};
function generateMaze() {
var maze = [];
var mazeSize = {
width: Math.floor(game.width / 100),
height: Math.floor(game.height / 100)
}; // Set a dynamic maze size based on the game screen size
var blockSize = {
width: game.width / mazeSize.width,
height: game.height / mazeSize.height
};
for (var i = 0; i < mazeSize.height; i++) {
maze[i] = [];
for (var j = 0; j < mazeSize.width; j++) {
// Add maze blocks
if (j == 0 || j == mazeSize.width - 1 || i == 0 || i == mazeSize.height - 1) {
// Only create blocks at the edges of the maze
maze[i][j] = new MazeBlock();
maze[i][j].width = blockSize.width;
maze[i][j].height = blockSize.height;
maze[i][j].x = j * blockSize.width + (game.width - mazeSize.width * blockSize.width) / 2;
maze[i][j].y = i * blockSize.height + (game.height - mazeSize.height * blockSize.height) / 2;
game.addChild(maze[i][j]);
} else {
// Create open paths by not adding a block
maze[i][j] = null;
}
}
}
return {
maze: maze,
blockSize: blockSize
};
}
var mazeData = generateMaze();
var mazePosition = {
x: 0,
y: 0
}; // Keep track of the maze's position
var player = new Player();
player.x = game.width / 2 - mazeData.blockSize;
player.y = game.height / 2 - mazeData.blockSize;
player.width = mazeData.blockSize / 3;
player.height = mazeData.blockSize / 3;
game.addChild(player);
var centerAsset = new CenterAsset();
centerAsset.x = game.width / 2;
centerAsset.y = game.height / 2;
game.addChildAt(centerAsset, game.children.length);
// Remove existing walls and generate new maze walls covering the entire screen
function generateFullScreenMaze() {
var maze = [];
var mazeSize = {
width: Math.floor(game.width / 100),
height: Math.floor(game.height / 100)
};
var blockSize = {
width: game.width / mazeSize.width,
height: game.height / mazeSize.height
};
for (var i = 0; i < mazeSize.height; i++) {
maze[i] = [];
for (var j = 0; j < mazeSize.width; j++) {
// Add a condition to create spaces inside the maze
if (Math.random() < 0.3) {
maze[i][j] = new MazeBlock();
maze[i][j].width = blockSize.width;
maze[i][j].height = blockSize.height;
maze[i][j].x = j * blockSize.width;
maze[i][j].y = i * blockSize.height;
game.addChild(maze[i][j]);
} else {
maze[i][j] = null;
}
}
}
return {
maze: maze,
blockSize: blockSize
};
}
mazeData = generateFullScreenMaze();
// Set level 01 and background1 for level 1
game.level = 1;
game.background = LK.getAsset('Background1', {
anchorX: 0.5,
anchorY: 0.5
});
var exit = new Exit();
exit.x = game.width / 2 + mazeData.blockSize;
exit.y = game.height / 2 + mazeData.blockSize;
exit.width = mazeData.blockSize / 3;
exit.height = mazeData.blockSize / 3;
game.addChild(exit);
// Handle player movement
var dragNode = null;
game.down = function (x, y, obj) {
dragNode = centerAsset;
mazePosition.x = x - centerAsset.x;
mazePosition.y = y - centerAsset.y;
};
game.move = function (x, y, obj) {
if (dragNode) {
centerAsset.x = x;
centerAsset.y = y;
handleMove(x, y, obj);
}
};
game.up = function (x, y, obj) {
dragNode = null;
};
// Create a Text2 object to display the level number
var levelText = new Text2('Level: 1', {
size: 50,
fill: 0xFFFF00
});
// Position the level text at the bottom left of the screen
levelText.anchor.set(0, 1);
levelText.x = 0;
levelText.y = 2732;
// Add the level text to the GUI overlay
LK.gui.bottomLeft.addChild(levelText);
// Check if player reaches the exit
function checkExit() {
if (player.intersects(exit)) {
// Player reached the exit
LK.showGameOver();
}
}
// Game update loop
// Define the checkCollisions function
function checkCollisions() {
// Collision detection logic
}
game.update = function () {
checkCollisions();
checkExit();
// Check if walls are out of screen bounds and prevent them from moving out
for (var i = 0; i < mazeData.maze.length; i++) {
for (var j = 0; j < mazeData.maze[i].length; j++) {
var wall = mazeData.maze[i][j];
if (wall) {
if (wall.x < 0) {
wall.x = 0;
}
if (wall.y < 0) {
wall.y = 0;
}
if (wall.x + wall.width > game.width) {
wall.x = game.width - wall.width;
}
if (wall.y + wall.height > game.height) {
wall.y = game.height - wall.height;
}
}
}
}
}; ===================================================================
--- original.js
+++ change.js
@@ -86,9 +86,9 @@
function handleMove(x, y, obj) {
if (dragNode && dragNode instanceof CenterAsset) {
dragNode.x = x; // Move the centerAsset to the mouse position
dragNode.y = y; // Move the centerAsset to the mouse position
- // Update the position of all maze blocks
+ // Update the position of all maze blocks and walls
for (var i = 0; i < mazeData.maze.length; i++) {
if (mazeData.maze[i] !== undefined) {
// Check if mazeData.maze[i] is defined
for (var j = 0; j < mazeData.maze[i].length; j++) {