Code edit (1 edits merged)
Please save this source code
User prompt
lanes should be respectively at 1024-200-3 and 1024+200+3
User prompt
make lanes closer to center
User prompt
don't spawn 2 consecutives tiles on the same lane
User prompt
use column asset to separete lanes
Code edit (1 edits merged)
Please save this source code
User prompt
Please fix the bug: 'Uncaught TypeError: tile.containsPoint is not a function' in or related to this line: 'if (tile.containsPoint({' Line Number: 86
Initial prompt
Piano Test
/**** * Classes ****/ //<Assets used in the game will automatically appear here> //<Write imports for supported plugins here> // Define a class for the PianoTile var PianoTile = Container.expand(function () { var self = Container.call(this); // Create and attach a black rectangle as the tile var tileGraphics = self.attachAsset('tile', { anchorX: 0.5, anchorY: 0.5 }); // Set the speed of the tile self.speed = 5; // Update function to move the tile downwards self.update = function () { self.y += self.speed; }; // Function to handle tap on the tile self.tap = function () { // Increase score and destroy the tile LK.setScore(LK.getScore() + 1); self.destroy(); }; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x4169e1 //Init game with black background }); /**** * Game Code ****/ // Initialize score display var scoreTxt = new Text2('0', { size: 150, fill: 0xFFFFFF }); scoreTxt.anchor.set(0.5, 0); LK.gui.top.addChild(scoreTxt); // Create column assets to separate lanes var column1 = LK.getAsset('column', { anchorX: 0.5, anchorY: 0.5, x: 512, y: 2732 / 2 }); game.addChild(column1); var column2 = LK.getAsset('column', { anchorX: 0.5, anchorY: 0.5, x: 1536, y: 2732 / 2 }); game.addChild(column2); // Array to keep track of active tiles var tiles = []; // Function to create a new tile var lastLane = 0; function createTile() { var newTile = new PianoTile(); // Randomly position the tile in one of the two lanes newTile.x = lastLane = lastLane == 1024 - 200 - 3 ? 1024 + 200 + 3 : 1024 - 200 - 3; newTile.y = -100; // Start above the screen tiles.push(newTile); game.addChild(newTile); } // Game update function game.update = function () { // Update score display scoreTxt.setText(LK.getScore()); // Create a new tile every 60 ticks if (LK.ticks % 60 == 0) { createTile(); } // Update and check each tile for (var i = tiles.length - 1; i >= 0; i--) { var tile = tiles[i]; tile.update(); // Check if tile is off-screen if (tile.y > 2732) { // End game if a tile is missed LK.showGameOver(); return; } } }; // Handle tap events game.down = function (x, y, obj) { // Check if a tile was tapped for (var i = tiles.length - 1; i >= 0; i--) { var tile = tiles[i]; if (tile.intersects({ x: x, y: y, width: 1, height: 1 })) { tile.tap(); tiles.splice(i, 1); break; } } };
===================================================================
--- original.js
+++ change.js
@@ -45,16 +45,16 @@
// Create column assets to separate lanes
var column1 = LK.getAsset('column', {
anchorX: 0.5,
anchorY: 0.5,
- x: 1024,
+ x: 512,
y: 2732 / 2
});
game.addChild(column1);
var column2 = LK.getAsset('column', {
anchorX: 0.5,
anchorY: 0.5,
- x: 1024,
+ x: 1536,
y: 2732 / 2
});
game.addChild(column2);
// Array to keep track of active tiles
@@ -63,9 +63,9 @@
var lastLane = 0;
function createTile() {
var newTile = new PianoTile();
// Randomly position the tile in one of the two lanes
- newTile.x = lastLane = lastLane == 1024 ? 1024 : 1024;
+ newTile.x = lastLane = lastLane == 1024 - 200 - 3 ? 1024 + 200 + 3 : 1024 - 200 - 3;
newTile.y = -100; // Start above the screen
tiles.push(newTile);
game.addChild(newTile);
}