User prompt
Implement collisions with the character and the walls
User prompt
Make sure that the hole tile is not at a corner of the grid
User prompt
Optimize the code
User prompt
Before move check the next grid tile the character is going to move towards, if the grid tile is a wall or empty dont allow movement
User prompt
Delete unused code
User prompt
Please fix the bug: 'TypeError: aButton.swapAsset is not a function' in or related to this line: 'aButton.swapAsset('aButtonPressed', {' Line Number: 119
User prompt
Implement the button press asset.swap when the botton is pressed
User prompt
Tint A button green and B button red
User prompt
Remove all filter implementation
Code edit (1 edits merged)
Please save this source code
User prompt
Shrink the shadow a couple pixels
User prompt
Offset the shadow down to the characters feet
User prompt
Make the shadow a child of the character
User prompt
Please fix the bug: 'TypeError: Cannot set properties of undefined (setting 'x')' in or related to this line: 'characterShadow.x = character.x;' Line Number: 299
User prompt
Please fix the bug: 'TypeError: Cannot set properties of undefined (setting 'x')' in or related to this line: 'characterShadow.x = character.x;' Line Number: 299
User prompt
Make the shadow always follows the character
User prompt
Move the shadow down to the players feet
User prompt
Make the shadow a new asset black transparent elipse
User prompt
Add a shadow blob for the character feet
User prompt
Please fix the bug: 'ReferenceError: filters is not defined' in or related to this line: 'character.filters = [new filters.BlurFilter(5)];' Line Number: 284
User prompt
Add a blurred casting shadow to the character
User prompt
Please fix the bug: 'Uncaught ReferenceError: filters is not defined' in or related to this line: 'controllerBackground.filters = [new filters.BlurFilter(5)];' Line Number: 30
User prompt
Add blurred shadows behind the buttons but on top of the background
User prompt
Add a background for the on screen controllers
User prompt
Make the on screen control background cover the whole control zone
/****
* Classes
****/
// OnScreenController class encapsulating A, B buttons and D-pad
var OnScreenController = Container.expand(function () {
var self = Container.call(this);
// Add a background for the on screen controllers
var controllerBackground = self.attachAsset('controllerBackground', {
anchorX: 0.5,
anchorY: 0.5,
x: 1024,
y: 2432,
scaleX: 2.0,
scaleY: 2.0
});
var yPosAdjustment = -100;
var buttonYPosAdjustment = -273.2;
var aButtonColor = 0x00FF00;
var bButtonColor = 0xFF0000;
var aButtonPosition = {
x: 1400,
y: 2432 + buttonYPosAdjustment + 150
};
var bButtonPosition = {
x: 1800,
y: 2432 + buttonYPosAdjustment - 50
};
var buttonSize = {
width: 400,
height: 400
};
var aButton = self.attachAsset('aButton', {
anchorX: 0.5,
anchorY: 0.5,
x: aButtonPosition.x,
y: aButtonPosition.y,
width: buttonSize.width,
height: buttonSize.height,
tint: aButtonColor // Use customizable A button color
});
var bButton = self.attachAsset('bButton', {
anchorX: 0.5,
anchorY: 0.5,
x: bButtonPosition.x,
y: bButtonPosition.y,
width: buttonSize.width,
height: buttonSize.height,
tint: bButtonColor // Use customizable B button color
});
// D-pad
var dpadBase = self.attachAsset('dpadBase', {
anchorX: 0.5,
anchorY: 0.5,
x: 500,
y: 2432 + yPosAdjustment,
scaleX: 3.0,
scaleY: 3.0
});
// Move dpad base to the top of the display list so it appears on top of the arrows
self.setChildIndex(dpadBase, self.children.length - 1);
var dpadLeft = self.attachAsset('dpadButton', {
anchorX: 0.5,
anchorY: 0.5,
x: dpadBase.x - 250,
y: dpadBase.y,
width: 450,
height: 450,
tint: 0xFFFF00,
orientation: 3
});
dpadLeft.on('down', function () {
if (character) {
character.x -= 145.2; // Move character left by 145.2 pixels to match grid size
}
dpadLeft.tint = 0xAAAAAA; // Tint dpadLeft button to a darker color when pressed
});
dpadLeft.on('up', function () {
dpadLeft.tint = 0xFFFF00; // Return dpadLeft button to original yellow color when released
});
// A and B button event listeners
var dpadUp = self.attachAsset('dpadButton', {
anchorX: 0.5,
anchorY: 0.5,
x: dpadBase.x,
y: dpadBase.y - 250,
width: 450,
height: 450,
tint: 0xFFFF00,
orientation: 0
});
dpadUp.on('down', function () {
if (character) {
character.y -= 145.2; // Move character up by 145.2 pixels to match grid size
}
dpadUp.tint = 0xAAAAAA; // Tint dpadUp button to a darker color when pressed
});
dpadUp.on('up', function () {
dpadUp.tint = 0xFFFF00; // Return dpadUp button to original yellow color when released
});
aButton.on('down', function () {
console.log('A button pressed');
aButton.tint = 0xAAAAAA; // Tint A button to a darker color when pressed
});
aButton.on('up', function () {
aButton.tint = 0x00FF00; // Return A button to original green color when released
});
var dpadRight = self.attachAsset('dpadButton', {
anchorX: 0.5,
anchorY: 0.5,
x: dpadBase.x + 250,
y: dpadBase.y,
width: 450,
height: 450,
tint: 0xFFFF00,
orientation: 1
});
dpadRight.on('down', function () {
if (character) {
character.x += 145.2; // Move character right by 145.2 pixels to match grid size
}
dpadRight.tint = 0xAAAAAA; // Tint dpadRight button to a darker color when pressed
});
dpadRight.on('up', function () {
dpadRight.tint = 0xFFFF00; // Return dpadRight button to original yellow color when released
});
bButton.on('down', function () {
console.log('B button pressed');
bButton.tint = 0xAAAAAA; // Tint B button to a darker color when pressed
});
bButton.on('up', function () {
bButton.tint = 0xFF0000; // Return B button to original red color when released
});
var dpadDown = self.attachAsset('dpadButton', {
anchorX: 0.5,
anchorY: 0.5,
x: dpadBase.x,
y: dpadBase.y + 250,
width: 450,
height: 450,
tint: 0xFFFF00,
orientation: 2
});
dpadDown.on('down', function () {
if (character) {
character.y += 145.2; // Move character down by 145.2 pixels to match grid size
}
dpadDown.tint = 0xAAAAAA; // Tint dpadDown button to a darker color when pressed
});
dpadDown.on('up', function () {
dpadDown.tint = 0xFFFF00; // Return dpadDown button to original yellow color when released
});
});
/****
* Initialize Game
****/
// Instantiate and add OnScreenController to the game
var game = new LK.Game({
backgroundColor: 0x000000
});
/****
* Game Code
****/
function moveCharacter(dx, dy) {
var newX = character.x + dx * movementDistance;
var newY = character.y + dy * movementDistance;
// Check if new position is within bounds and if it's a floor tile
var newTile = getTileAtPosition(newX, newY);
if (newTile && floorTiles.indexOf(newTile) !== -1 && wallTiles.indexOf(newTile) === -1) {
// Move character to new position
character.x = newX;
character.y = newY;
character.currentTile = newTile;
}
}
var gridSize = 10;
var character;
var wallTiles = [];
var floorTiles = [];
var isGameStarted = false;
var grid = new Array(gridSize * gridSize);
var fadeEffect = {
alpha: 0,
speed: 0.01
};
var onScreenController;
onScreenController = game.addChild(new OnScreenController());
// D-pad button event listeners moved inside OnScreenController class
// Character movement function removed
function createTiles() {
for (var i = 0; i < gridSize * gridSize; i++) {
var x = i % gridSize;
var y = Math.floor(i / gridSize);
var tile;
if (x === 0 || y === 0 || x === gridSize - 1 || y === gridSize - 1) {
tile = LK.getAsset('wallTile', {
anchorX: 0.5,
anchorY: 0.5,
x: x * 145.2 + (2048 - gridSize * 145.2) / 2,
y: y * 145.2 + (2732 - gridSize * 145.2) / 2 - 300
});
wallTiles.push(tile);
} else {
tile = LK.getAsset('floorTile', {
anchorX: 0.5,
anchorY: 0.5,
x: x * 145.2 + (2048 - gridSize * 145.2) / 2,
y: y * 145.2 + (2732 - gridSize * 145.2) / 2 - 300
});
floorTiles.push(tile);
}
game.addChild(tile);
grid[i] = tile;
}
}
createTiles();
// Function to check if a tile is in a corner
function isTileInCorner(tile) {
var corners = [{
x: 0,
y: 0
}, {
x: 0,
y: (gridSize - 1) * 100
}, {
x: (gridSize - 1) * 100,
y: 0
}, {
x: (gridSize - 1) * 100,
y: (gridSize - 1) * 100
}];
return corners.some(function (corner) {
return tile.x === corner.x && tile.y === corner.y;
});
}
// Select a random wall tile and replace it with a hole tile, ensuring it's not in a corner
var randomWallTileIndex;
var randomWallTile;
do {
randomWallTileIndex = Math.floor(Math.random() * wallTiles.length);
randomWallTile = wallTiles[randomWallTileIndex];
} while (isTileInCorner(randomWallTile));
var holeTile = LK.getAsset('holeTile', {
anchorX: 0.5,
anchorY: 0.5,
x: randomWallTile.x,
y: randomWallTile.y
});
game.addChild(holeTile);
game.removeChild(randomWallTile);
wallTiles[randomWallTileIndex] = holeTile;
LK.on('tick', function () {
if (fadeEffect.alpha < 1) {
fadeEffect.alpha += fadeEffect.speed;
game.alpha = fadeEffect.alpha;
} else if (!isGameStarted) {
// Patrol points setup logic removed
isGameStarted = true; // Ensure game start logic is only triggered once
// Initialize game elements here after fade-in completes
// Spawn an instance of the character on the hole tile
character = LK.getAsset('character', {
anchorX: 0.5,
anchorY: 0.5,
x: holeTile.x,
y: holeTile.y - 50,
scaleX: 1.25,
scaleY: 1.25
});
character.filters = [new filters.BlurFilter(5)];
character.currentTile = getTileAtPosition(holeTile.x, holeTile.y); // Correctly initialize character's current tile
game.addChild(character);
}
});
// Define a function to get the tile at a given position
function getTileAtPosition(x, y) {
var index = Math.floor(y / 100) * gridSize + Math.floor(x / 100);
return grid[index];
}
// Character movement logic removed ===================================================================
--- original.js
+++ change.js
@@ -266,8 +266,9 @@
y: holeTile.y - 50,
scaleX: 1.25,
scaleY: 1.25
});
+ character.filters = [new filters.BlurFilter(5)];
character.currentTile = getTileAtPosition(holeTile.x, holeTile.y); // Correctly initialize character's current tile
game.addChild(character);
}
});
grey square, black border. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
simple light yellow button front view game console, clean, rounded edges, high resolution, graphic. Single Game Texture. In-Game asset. 2d. Blank background. High contrast.
Worn out sticker for a video game, 90s style, cheese, simple, vintage. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
wall view from top-down, game asset videogame, black color, simple. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows. worn out sticker. 90's style. vintage. simple. top-down view. poster. sticker
top-down view, videogame character enemy, roomba, 90s style sticker, flat, no perspective, silhouette, black and white, cartoon, fun, simple, from above. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
top-down view, videogame heart, 90s style sticker, flat, no perspective, silhouette, white, cartoon, fun, simple, from above. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Black square with white outline. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.