User prompt
Move screen asset left by 50 units
User prompt
Change it to 200 units
User prompt
Stop block movement by 100 units from maps side edges
User prompt
Ensure that Blocks can't leave the screen asset on either sides
User prompt
Ensure that Blocks cant leave the screen asset
User prompt
Set The map side edged to 100 units from the sides
User prompt
Add click event to the 'right' asset to move the block right by one cube
User prompt
Please fix the bug: 'Cannot set properties of undefined (setting 'down')' in or related to this line: 'right.down = function (x, y, obj) {' Line Number: 137
User prompt
If player clicks on the right asset then move the block right by one cube
User prompt
Move the horizontal line onto the center of the map
User prompt
Ensure that the lowest block movement stop by 100 units down from the center
User prompt
Move up the horizontal line by 100 units
User prompt
Move up the horizontal line by 50 units
User prompt
Stop the lowest block from moving when it touches the horizontal line
User prompt
The lowest blocks only stop when the touch the horizontal line
User prompt
You should load the next block when the previous one touch the center of the map
User prompt
But stop block movement when it touch the horizontal line
User prompt
If player clicks on the left asset then move the block left by one cube
User prompt
So when the player press "left" asset you should move the block left by one cube and when press the "right" asset move it to the right
User prompt
The do it right!
User prompt
Remove frame asset from the game
User prompt
Add colision to the game and stop blocks when it touch each other
User prompt
Move the 'down' asset down by 169 units
User prompt
Move the 'down' asset right by 25 units
User prompt
Add "down" asset next the 'left' asset right by 200 units
/**** * Classes ****/ //<Assets used in the game will automatically appear here> //<Write imports for supported plugins here> // Define a class for Tetris blocks var TetrisBlock = Container.expand(function () { var self = Container.call(this); self.blocks = []; self.shape = 'I'; // Default shape // Initialize the block with a specific shape self.init = function (shape) { self.shape = shape; self.blocks.forEach(function (block) { return block.destroy(); }); self.blocks = []; // Create blocks based on the shape switch (shape) { case 'I': for (var i = 0; i < 4; i++) { var block = self.attachAsset('brick', { anchorX: 0.5, anchorY: 0.5 }); block.x = i * block.width; self.blocks.push(block); } break; case 'T': for (var i = 0; i < 3; i++) { var block = self.attachAsset('brick', { anchorX: 0.5, anchorY: 0.5 }); block.x = i * block.width; self.blocks.push(block); } var middleBlock = self.attachAsset('brick', { anchorX: 0.5, anchorY: 0.5 }); middleBlock.x = block.width; middleBlock.y = block.height; self.blocks.push(middleBlock); break; case 'Z': for (var i = 0; i < 2; i++) { var block = self.attachAsset('brick', { anchorX: 0.5, anchorY: 0.5 }); block.x = i * block.width; self.blocks.push(block); } for (var i = 0; i < 2; i++) { var block = self.attachAsset('brick', { anchorX: 0.5, anchorY: 0.5 }); block.x = (i + 1) * block.width; block.y = block.height; self.blocks.push(block); } break; case 'L': for (var i = 0; i < 3; i++) { var block = self.attachAsset('brick', { anchorX: 0.5, anchorY: 0.5 }); block.x = i * block.width; self.blocks.push(block); } var block = self.attachAsset('brick', { anchorX: 0.5, anchorY: 0.5 }); block.x = 2 * block.width; block.y = block.height; self.blocks.push(block); break; } }; // Add rotation logic self.rotate = function () { if (self.update === function () {} || self.y + self.height >= 2732) { // Check if the block has stopped moving or reached the bottom return; // If it has, do not rotate } var centerX = 0; var centerY = 0; self.blocks.forEach(function (block) { centerX += block.x; centerY += block.y; }); centerX /= self.blocks.length; centerY /= self.blocks.length; self.blocks.forEach(function (block) { var x = block.y - centerY; var y = block.x - centerX; block.x = centerX - x; block.y = centerY + y; }); }; // Update the position of the block self.update = function () { if (self.y < 2732 / 2) { self.y += 5; // Move downwards } }; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x000000 //Init game with black background }); /**** * Game Code ****/ // Initialize variables var tetrisBlocks = []; var currentBlock = null; var blockShapes = ['I', 'T', 'Z', 'L']; // Function to spawn a new block function spawnBlock() { var shape = blockShapes[Math.floor(Math.random() * blockShapes.length)]; currentBlock = new TetrisBlock(); currentBlock.init(shape); currentBlock.x = 1024 - currentBlock.width / 2; // Center horizontally currentBlock.y = 0; // Start at the top game.addChild(currentBlock); tetrisBlocks.push(currentBlock); } // Add screen asset to the top of the map var screen = game.attachAsset('screen', { anchorX: 0.5, anchorY: 0.5, x: 1024, y: 880 }); // Add horizontal line to the half of the map var horizontalLine = game.attachAsset('horizontalLine', { anchorX: 0.5, anchorY: 0.5, x: 1024 - 50, y: 1366 + 165 }); // Add a thin lined black frame 100 units from the top of the map and move it right by 650 units var frame = game.attachAsset('frame', { anchorX: 0.5, anchorY: 0.0, x: 1024 + 650, // Move the frame right by 650 units y: 100 }); // Add handconsole asset to the game background var handconsole = game.attachAsset('handconsole', { anchorX: 0.5, anchorY: 0.5, x: 1024, y: 1366 }); game.setChildIndex(handconsole, game.children.length - 1); // Add 'left' asset to the center of the 'handconsole' asset var left = game.attachAsset('left', { anchorX: 0.5, anchorY: 0.5, x: handconsole.x - 780, y: handconsole.y + 995 }); game.setChildIndex(left, game.children.length - 1); // Add 'up' asset next to the 'left' asset right by 225 units and move it up by 169 units var up = game.attachAsset('up', { anchorX: 0.5, anchorY: 0.5, x: left.x + 225, y: left.y - 169 }); game.setChildIndex(up, game.children.length - 1); // Add 'right' asset next to the 'left' asset right by 445 units var right = game.attachAsset('right', { anchorX: 0.5, anchorY: 0.5, x: left.x + 445, y: left.y }); game.setChildIndex(right, game.children.length - 1); // Add 'down' asset next to the 'left' asset right by 225 units var down = game.attachAsset('down', { anchorX: 0.5, anchorY: 0.5, x: left.x + 225, y: left.y }); game.setChildIndex(down, game.children.length - 1); // Handle game update game.update = function () { if (!currentBlock) { spawnBlock(); } else { for (var i = 0; i < tetrisBlocks.length; i++) { if (currentBlock !== tetrisBlocks[i] && currentBlock.intersects(tetrisBlocks[i])) { currentBlock = null; break; } } if (currentBlock) { if (currentBlock.y + currentBlock.height > 2732) { currentBlock.y = 2732 - currentBlock.height; currentBlock.update = function () {}; // Stop the block from moving spawnBlock(); } else if (currentBlock.y + currentBlock.height >= 1366 + 165) { currentBlock.update = function () {}; // Stop the block from moving when it touches the horizontal line spawnBlock(); } else { for (var i = 0; i < tetrisBlocks.length; i++) { if (currentBlock !== tetrisBlocks[i] && currentBlock.y + currentBlock.height >= tetrisBlocks[i].y) { currentBlock.y = tetrisBlocks[i].y - currentBlock.height; currentBlock.update = function () {}; // Stop the block from moving spawnBlock(); break; } } currentBlock.update(); } } } }; // Start the game by spawning the first block spawnBlock(); // Add click event to the game game.down = function (x, y, obj) { if (currentBlock) { currentBlock.rotate(); } else { spawnBlock(); } };
===================================================================
--- original.js
+++ change.js
@@ -188,13 +188,13 @@
x: left.x + 445,
y: left.y
});
game.setChildIndex(right, game.children.length - 1);
-// Add 'down' asset next to the 'left' asset right by 200 units
+// Add 'down' asset next to the 'left' asset right by 225 units
var down = game.attachAsset('down', {
anchorX: 0.5,
anchorY: 0.5,
- x: left.x + 200,
+ x: left.x + 225,
y: left.y
});
game.setChildIndex(down, game.children.length - 1);
// Handle game update