User prompt
add lava block
User prompt
add ice block
User prompt
add water block
User prompt
add tree leaf block
User prompt
add tree wood block
User prompt
add iron, gold, diamond block
User prompt
DELETE ALL! kaldır onu break butonundan sonra gelmesini sağla
User prompt
add gold ore, diamond ore
User prompt
iron cevherinin assetini iron yap
User prompt
add iron ore
User prompt
cobblestone bloğunun assetini stoone yap
User prompt
Add cobblestone block
User prompt
add regular stone block
User prompt
Builde geçince DELETE ALL! butonu yok olsun
User prompt
DELETE ALL! butonunu buildin altına yaz
User prompt
Arka planın opaklığını artır
User prompt
UI arka planı şeffaf yapma
User prompt
ui arka planının arkasının altındaki stoneları yok et
User prompt
ui arka planının arkasındaki stoneları yok et
User prompt
ui arka planının arkasındaki stoneları yok et
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ var Block = Container.expand(function (blockType) { var self = Container.call(this); this.blockType = blockType; this.gridX = 0; this.gridY = 0; var blockGraphics = self.attachAsset(blockType, { anchorX: 0.5, anchorY: 0.5 }); // Add slight border effect blockGraphics.alpha = 0.9; self.setGridPosition = function (gridX, gridY) { self.gridX = gridX; self.gridY = gridY; self.x = gridX * 80 + 40; self.y = gridY * 80 + 40; }; return self; }); var DeleteAllButton = Container.expand(function () { var self = Container.call(this); var buttonBackground = self.attachAsset('uiButton', { anchorX: 0.5, anchorY: 0.5 }); buttonBackground.tint = 0xFF0000; var buttonText = new Text2('DELETE ALL!', { size: 32, fill: 0xFFFFFF }); buttonText.anchor.set(0.5, 0.5); self.addChild(buttonText); self.x = 1024; self.y = 2400; self.visible = false; self.show = function () { self.visible = true; // Animate in self.alpha = 0; tween(self, { alpha: 1 }, { duration: 300 }); }; self.hide = function () { self.visible = false; }; self.down = function (x, y, obj) { // Delete all blocks for (var gridKey in gameGrid) { var block = gameGrid[gridKey]; if (block) { block.destroy(); } } gameGrid = {}; self.hide(); LK.getSound('break').play(); }; return self; }); var GridHighlight = Container.expand(function () { var self = Container.call(this); var highlightGraphics = self.attachAsset('highlight', { anchorX: 0.5, anchorY: 0.5 }); highlightGraphics.alpha = 0.3; self.visible = false; self.showAt = function (gridX, gridY) { self.x = gridX * 80 + 40; self.y = gridY * 80 + 40; self.visible = true; }; self.hide = function () { self.visible = false; }; return self; }); var InventorySlot = Container.expand(function (blockType, index) { var self = Container.call(this); this.blockType = blockType; this.count = -1; // Unlimited blocks var slotBackground = self.attachAsset('inventorySlot', { anchorX: 0.5, anchorY: 0.5 }); var blockPreview = self.attachAsset(blockType, { anchorX: 0.5, anchorY: 0.5, scaleX: 0.8, scaleY: 0.8 }); // No count display for unlimited blocks self.x = 150 + index * 120; self.y = 2600; self.updateCount = function (newCount) { // Unlimited blocks - no count updates needed }; self.down = function (x, y, obj) { selectedBlockType = self.blockType; updateSelectedIndicator(); }; return self; }); var ModeButton = Container.expand(function () { var self = Container.call(this); var buttonBackground = self.attachAsset('uiButton', { anchorX: 0.5, anchorY: 0.5 }); var buttonText = new Text2('BUILD', { size: 36, fill: 0xFFFFFF }); buttonText.anchor.set(0.5, 0.5); self.addChild(buttonText); self.x = 1024; self.y = 2500; self.updateMode = function (isBuildMode) { if (isBuildMode) { buttonText.setText('BUILD'); buttonBackground.tint = 0x00AA00; } else { buttonText.setText('BREAK'); buttonBackground.tint = 0xAA0000; } }; self.down = function (x, y, obj) { isBuildMode = !isBuildMode; self.updateMode(isBuildMode); // Hide DELETE ALL! button when switching to build mode if (isBuildMode && deleteAllButton) { deleteAllButton.hide(); } }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x87CEEB }); /**** * Game Code ****/ // Sound effects // UI elements // Grid-based building blocks // Game state variables var gameGrid = {}; var gridWidth = 25; var gridHeight = 30; var isBuildMode = true; var selectedBlockType = 'stone'; // UI elements var gridHighlight; var inventorySlots = []; var modeButton; var selectedIndicator; var deleteAllButton; // Add UI area background first (behind other elements) var uiBackground = LK.getAsset('inventorySlot', { anchorX: 0.5, anchorY: 0, scaleX: 20.48, scaleY: 3.32 }); uiBackground.x = 1024; uiBackground.y = 2400; uiBackground.tint = 0xffffff; uiBackground.alpha = 0.95; game.addChild(uiBackground); // Initialize grid highlight gridHighlight = game.addChild(new GridHighlight()); // Initialize inventory var blockTypes = ['stone', 'wood', 'dirt', 'grass', 'cobblestone', 'iron_ore', 'gold_ore', 'diamond_ore', 'iron_block', 'gold_block', 'diamond_block', 'wood_block', 'tree_leaf', 'water', 'ice', 'lava']; for (var i = 0; i < blockTypes.length; i++) { var slot = new InventorySlot(blockTypes[i], i); inventorySlots.push(slot); game.addChild(slot); } // Initialize mode button modeButton = game.addChild(new ModeButton()); modeButton.updateMode(isBuildMode); // DELETE ALL! button will be created when needed deleteAllButton = null; // Remove any existing stone blocks behind and below UI area (y >= 2400) for (var gridKey in gameGrid) { var block = gameGrid[gridKey]; if (block && block.blockType === 'stone' && block.y >= 2400) { block.destroy(); delete gameGrid[gridKey]; } } // Also remove stone blocks below the UI area for (var gridY = 30; gridY <= 40; gridY++) { for (var gridX = 0; gridX < gridWidth; gridX++) { var gridKey = getGridKey(gridX, gridY); var block = gameGrid[gridKey]; if (block && block.blockType === 'stone') { block.destroy(); delete gameGrid[gridKey]; } } } // Add bottom border for (var j = 0; j < 26; j++) { var bottomBorderBlock = LK.getAsset('dirt', { anchorX: 0.5, anchorY: 0.5, scaleX: 0.6, scaleY: 0.6 }); bottomBorderBlock.x = j * 80 + 40; bottomBorderBlock.y = 2700; bottomBorderBlock.alpha = 0.3; bottomBorderBlock.tint = 0x444444; game.addChild(bottomBorderBlock); } // Selected block indicator selectedIndicator = LK.getAsset('highlight', { anchorX: 0.5, anchorY: 0.5, scaleX: 1.2, scaleY: 1.2 }); selectedIndicator.alpha = 0.5; game.addChild(selectedIndicator); function updateSelectedIndicator() { for (var i = 0; i < inventorySlots.length; i++) { if (inventorySlots[i].blockType === selectedBlockType) { selectedIndicator.x = inventorySlots[i].x; selectedIndicator.y = inventorySlots[i].y; break; } } } updateSelectedIndicator(); function worldToGrid(worldX, worldY) { return { x: Math.floor(worldX / 80), y: Math.floor(worldY / 80) }; } function isValidGridPosition(gridX, gridY) { return true; // Allow placing blocks anywhere } function getGridKey(gridX, gridY) { return gridX + ',' + gridY; } function hasBlockAt(gridX, gridY) { return gameGrid[getGridKey(gridX, gridY)] !== undefined; } function getInventorySlot(blockType) { for (var i = 0; i < inventorySlots.length; i++) { if (inventorySlots[i].blockType === blockType) { return inventorySlots[i]; } } return null; } function placeBlock(gridX, gridY, blockType) { if (!isValidGridPosition(gridX, gridY) || hasBlockAt(gridX, gridY)) { return false; } var slot = getInventorySlot(blockType); if (!slot) { return false; } var block = new Block(blockType); block.setGridPosition(gridX, gridY); game.addChild(block); gameGrid[getGridKey(gridX, gridY)] = block; // Keep unlimited blocks - no count decrement LK.getSound('place').play(); // Place animation block.alpha = 0; tween(block, { alpha: 1 }, { duration: 200 }); return true; } function breakBlock(gridX, gridY) { var gridKey = getGridKey(gridX, gridY); var block = gameGrid[gridKey]; if (!block) { return false; } var slot = getInventorySlot(block.blockType); if (slot) { slot.updateCount(slot.count + 1); } LK.getSound('break').play(); // Break animation tween(block, { alpha: 0, scaleX: 0.5, scaleY: 0.5 }, { duration: 200, onFinish: function onFinish() { block.destroy(); } }); delete gameGrid[gridKey]; // Create DELETE ALL! button if it doesn't exist if (!deleteAllButton) { deleteAllButton = game.addChild(new DeleteAllButton()); deleteAllButton.y = 2580; // Position below BUILD button } // Show delete all button after breaking deleteAllButton.show(); return true; } var lastHoverGridX = -1; var lastHoverGridY = -1; game.move = function (x, y, obj) { // Only show highlight in build area if (y < 2400) { var gridPos = worldToGrid(x, y); if (gridPos.x !== lastHoverGridX || gridPos.y !== lastHoverGridY) { if (isBuildMode && !hasBlockAt(gridPos.x, gridPos.y)) { gridHighlight.showAt(gridPos.x, gridPos.y); } else if (!isBuildMode && hasBlockAt(gridPos.x, gridPos.y)) { gridHighlight.showAt(gridPos.x, gridPos.y); } else { gridHighlight.hide(); } lastHoverGridX = gridPos.x; lastHoverGridY = gridPos.y; } } else { gridHighlight.hide(); lastHoverGridX = -1; lastHoverGridY = -1; } }; game.down = function (x, y, obj) { // Only allow building/breaking in the main game area if (y < 2400) { var gridPos = worldToGrid(x, y); if (isBuildMode) { placeBlock(gridPos.x, gridPos.y, selectedBlockType); } else { breakBlock(gridPos.x, gridPos.y); } } }; game.update = function () { // Update game state if needed };
===================================================================
--- original.js
+++ change.js
@@ -185,9 +185,9 @@
game.addChild(uiBackground);
// Initialize grid highlight
gridHighlight = game.addChild(new GridHighlight());
// Initialize inventory
-var blockTypes = ['stone', 'wood', 'dirt', 'grass', 'cobblestone', 'iron_ore', 'gold_ore', 'diamond_ore', 'iron_block', 'gold_block', 'diamond_block', 'wood_block', 'tree_leaf', 'water', 'ice'];
+var blockTypes = ['stone', 'wood', 'dirt', 'grass', 'cobblestone', 'iron_ore', 'gold_ore', 'diamond_ore', 'iron_block', 'gold_block', 'diamond_block', 'wood_block', 'tree_leaf', 'water', 'ice', 'lava'];
for (var i = 0; i < blockTypes.length; i++) {
var slot = new InventorySlot(blockTypes[i], i);
inventorySlots.push(slot);
game.addChild(slot);