User prompt
Hayır içindeki boş kareleri silelim
User prompt
Oyuna bir asset ekleyelim bu assetin işlevi animasyon olucak bunlara ben 3 veya 4 adet daha resim ekleyeceğim ve böylece oyunda animasyonumuz olucak bu asset çerçeve gibi 4 kare olucak ama içi boş ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Skor yazısını sağ tarafa doğru kaydiralim
User prompt
Test düğmesini sil
User prompt
Test düğmesine bastığımızda yazıları görebilelim
User prompt
Test düğmesini ekranın en önüne getirki basabilelim
User prompt
Biraz aşağıya indir
User prompt
Düğmeye basınca yazılar çıksın
User prompt
Yazıları test etmek için bir düğme ekleyelim
User prompt
Yazıların renkleri yeşilden sarı sarıdan kırmızıya dönsün ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Kodun hatasını düzelt
User prompt
6 dan sonra sadece crazy!!! Çıkmaya devam etsin daha si olmasın ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Yazı art artda 3 kerede wow kelimesi yazsın 4,amazing olsun ,5 kelime maniac olsun,6 kelime crazyy!!! Olsun ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Please fix the bug: 'TypeError: Cannot read properties of null (reading 'y')' in or related to this line: 'tween(streakText, {' Line Number: 503 ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Yazı yı diğer çapraz taraftan konumu ise sağ yukarı ya taşı ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Bu yazı çıktığı zaman animasyonu git gelli olsun ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Oyuna bir streak işlevi ekleyelim bloklar kısa sürede patladığı Zaman art arda ekranda çapraz şekilde bir yazı çıksın örneğin oyuncu bir sıra blok patlattı ekranda good kelimesi yer alsın 5 saniye içinde bir sıra daha blok yok olursa super kelimesi yer alsın ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Make an asset so that a sound is heard when the blocks are destroyed
User prompt
Fala sesini arkaplan müziği olarak ata ve sürekli döngüye şok
User prompt
Renkleri her bir bloğun rengine uyumlu hale getir 'örneğin 1 blok 1ci yok olma efektini rengiyle aynı olmalıdir' ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Bloklarin yok olduğu zaman çıkan efektlerin renklerini bloklarla uygun hale getir ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Blok 1 in hazırda duran aralıklarını hafif aç
User prompt
renk tonunun da colFilled'a aktarıldığından emin olun
User prompt
Migrate to the latest version of LK
Remix started
Copy Blockmas
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ var AnimationFrame = Container.expand(function () { var self = Container.call(this); // Create main frame background var frameBackground = self.attachAsset('animationFrame', { anchorX: 0.5, anchorY: 0.5 }); // Create 4 solid squares (2x2 grid) var squareSize = 70; var spacing = 10; var startX = -squareSize - spacing / 2; var startY = -squareSize - spacing / 2; self.squares = []; for (var i = 0; i < 2; i++) { for (var j = 0; j < 2; j++) { // Create solid square var square = LK.getAsset('animationFrame', { anchorX: 0.5, anchorY: 0.5, scaleX: squareSize / 320, scaleY: squareSize / 320 }); square.x = startX + j * (squareSize + spacing); square.y = startY + i * (squareSize + spacing); self.addChild(square); self.squares.push({ outer: square }); } } // Animation properties self.animationSpeed = 0.1; self.animationTime = 0; // Update method for animation self.update = function () { self.animationTime += self.animationSpeed; // Animate each square with different phases for (var i = 0; i < self.squares.length; i++) { var square = self.squares[i]; var phase = (self.animationTime + i * 0.5) % (Math.PI * 2); var pulse = Math.sin(phase) * 0.1 + 1; square.outer.scaleX = squareSize / 320 * pulse; square.outer.scaleY = squareSize / 320 * pulse; // Color animation var colorIntensity = Math.sin(phase * 2) * 0.3 + 0.7; var grayValue = Math.floor(0x44 + (0xAA - 0x44) * colorIntensity); square.outer.tint = (grayValue << 16) + (grayValue << 8) + grayValue; } }; return self; }); var Block = Container.expand(function (board) { var self = Container.call(this); var hsvToRgb = function hsvToRgb(h, s, v) { var r, g, b; var i = Math.floor(h * 6); var f = h * 6 - i; var p = v * (1 - s); var q = v * (1 - f * s); var t = v * (1 - (1 - f) * s); switch (i % 6) { case 0: r = v, g = t, b = p; break; case 1: r = q, g = v, b = p; break; case 2: r = p, g = v, b = t; break; case 3: r = p, g = q, b = v; break; case 4: r = t, g = p, b = v; break; case 5: r = v, g = p, b = q; break; } return (Math.round(r * 255) << 16) + (Math.round(g * 255) << 8) + Math.round(b * 255); }; var ShapeTypes = { SINGLE: [[1]], TRI: [[1, 1, 1]], QUAD: [[1, 1, 1, 1]], LSHAPE: [[1, 0, 0], [1, 0, 0], [1, 1, 1]], BLOCK: [[1, 1], [1, 1]], SMALLLSHAPE: [[1, 0], [1, 1]] }; var shapes = Object.values(ShapeTypes); var offset = Math.floor(Math.random() * shapes.length); self.offset = offset; self.shape = shapes[offset]; var hue = offset % shapes.length / shapes.length; self.color = hsvToRgb(hue, 0.6, 1); self.rotateShapeRandomly = function () { var rotations = Math.floor(Math.random() * 4); for (var r = 0; r < rotations; r++) { self.shape = self.shape[0].map(function (val, index) { return self.shape.map(function (row) { return row[index]; }).reverse(); }); } }; self.rotateShapeRandomly(); self.blocks = []; var background = self.attachAsset('background', { anchorX: 0.5, anchorY: 0.5 }); background.alpha = 0; var blockSize = 160; background.width = 4 * blockSize; background.height = 4 * blockSize; self.addChild(background); self.offsetX = 0; self.offsetY = 0; var blockOffsetX = (background.width / 2 - self.shape[0].length * blockSize) / 2 - blockSize / 2; var blockOffsetY = (background.height / 2 - self.shape.length * blockSize) / 2 - blockSize / 2; for (var i = 0; i < self.shape.length; i++) { for (var j = 0; j < self.shape[i].length; j++) { if (self.shape[i][j] === 1) { var block = self.createAsset('block_' + offset, { anchorX: 0.5, anchorY: 0.5 }); block.x = j * blockSize + blockOffsetX; block.y = i * blockSize + blockOffsetY; self.blocks.push(block); self.addChild(block); } } } self.startX = 0; self.startY = 0; self.moveTowardsHomePosition = function () { var dx = self.startX - self.x; var dy = self.startY - self.y; var distance = Math.sqrt(dx * dx + dy * dy); if (distance > 1) { self.x += dx * 0.3; self.y += dy * 0.3; } else { self.x = self.startX; self.y = self.startY; } }; var currentX = 0; var currentY = 0; self.moveToDragTarget = function () { var ox = -this.targetX; var oy = (LK.is.mobile ? 400 : 0) - this.targetY; this.targetX += ox / 5; this.targetY += oy / 5; this.x = currentX - this.targetX; this.y = currentY - this.targetY; }; self._move_migrated = function (x, y) { currentX = x; currentY = y; self.x = x - this.targetX; self.y = y - this.targetY; }; self.setStartPosition = function (x, y) { self.startX = x; self.startY = y; }; self.getOverlappingCells = function () { var cells = []; var boardPos = { x: -board.x + self.x + 160 * 4 + blockOffsetX + 160, y: -board.y + self.y + 160 * 4 + blockOffsetY + 160 }; var startX = Math.floor(boardPos.x / 160); var startY = Math.floor(boardPos.y / 160); for (var i = 0; i < self.shape.length; i++) { for (var j = 0; j < self.shape[i].length; j++) { if (self.shape[i][j] === 1) { var cell = board.grid && board.grid[startY + i] && board.grid[startY + i][startX + j]; if (cell && !cell.filled) { cells.push(cell); } else { return null; } } } } return cells; }; self.showOverlap = function () { var cells = self.getOverlappingCells(); if (cells) { for (var a = 0; a < cells.length; a++) { var cell = cells[a]; cell.setTint(self.color); } } }; self.rotateShapeRandomly = function () { var rotations = Math.floor(Math.random() * 4); for (var r = 0; r < rotations; r++) { self.shape = self.shape[0].map(function (val, index) { return self.shape.map(function (row) { return row[index]; }).reverse(); }); } }; }); var Board = Container.expand(function () { var self = Container.call(this); self.particles = []; Board.prototype.spawnParticles = function (x, y, tint) { for (var i = 0; i < 10; i++) { var particle = new Particle(tint); particle.x = x + (Math.random() - 0.5) * 50; particle.y = y + (Math.random() - 0.5) * 50; this.particles.push(particle); this.addChild(particle); // Add tween effect for particles with matching block color tween(particle, { scaleX: 0, scaleY: 0, alpha: 0, x: particle.x + (Math.random() - 0.5) * 100, y: particle.y + (Math.random() - 0.5) * 100 }, { duration: 800, easing: tween.easeOut, onFinish: function onFinish() { if (particle.parent) { particle.destroy(); } } }); } }; self.grid = new Array(10).fill(null).map(function () { return new Array(10).fill(null); }); var size = 158; var totalWidth = 10 * size; var totalHeight = 10 * size; for (var i = 0; i < 10; i++) { for (var j = 0; j < 10; j++) { var cell = new Cell(); cell.x = i * size - totalWidth / 2 + size / 2; cell.y = j * size - totalHeight / 2 + size / 2; self.grid[j][i] = cell; self.addChild(cell); } } self.removeTint = function () { for (var i = 0; i < 10; i++) { for (var j = 0; j < 10; j++) { if (!self.grid[i][j].filled) { self.grid[i][j].setTint(0xffffff); } } } }; self.checkLines = function () { var rowsRemoved = 0; for (var i = 0; i < 10; i++) { var rowFilled = true; var colFilled = true; for (var j = 0; j < 10; j++) { if (!self.grid[i][j].filled) { rowFilled = false; } if (!self.grid[j][i].filled) { colFilled = false; } } if (rowFilled || colFilled) { rowsRemoved += (rowFilled ? 1 : 0) + (colFilled ? 1 : 0); // Play destruction sound when blocks are destroyed LK.getSound('blockDestroy').play(); // Handle streak system var currentTime = Date.now(); if (currentTime - lastLinesClearedTime <= streakTimeout && lastLinesClearedTime > 0) { streakLevel = Math.min(streakLevel + 1, 6); // Cap at level 6 } else { streakLevel = 1; } lastLinesClearedTime = currentTime; // Show streak text game.showStreakText(streakLevel); for (var j = 0; j < 10; j++) { if (rowFilled) { var blockColor = self.grid[i][j].getBlockColor() || 0xffffff; self.spawnParticles(self.grid[i][j].x, self.grid[i][j].y, blockColor); self.grid[i][j].setFill(false); } if (colFilled) { var blockColor = self.grid[j][i].getBlockColor() || 0xffffff; self.spawnParticles(self.grid[j][i].x, self.grid[j][i].y, blockColor); self.grid[j][i].setFill(false); } } } } return rowsRemoved; }; self.tick = function () { for (var i = self.particles.length - 1; i >= 0; i--) { var particle = self.particles[i]; if (particle) { particle.tick(); if (particle.alpha <= 0) { self.particles.splice(i, 1); } } } for (var i = 0; i < 10; i++) { for (var j = 0; j < 10; j++) { self.grid[i][j].tick(i, j); } } }; self.placeBlock = function () {}; }); var Cell = Container.expand(function () { var self = Container.call(this); self.filled = false; var yOffsetArray = [-25, -10, -20, -25, -25, -20]; var empty = self.attachAsset('cell', { anchorX: 0.5, anchorY: 0.5 }); empty.alpa = .8; var filled; var currentOffset; empty.y = 2; self.currentTint = 0xffffff; self.setFill = function (isFilled, asset, offset, color) { self.filled = isFilled; empty.visible = !self.filled; if (isFilled) { if (asset) { asset.x = 0; asset.y = yOffsetArray[offset] || -15; currentOffset = offset; self.addChild(asset); filled = asset; if (color) { self.currentTint = color; self.blockColor = color; // Store the original block color } } } else { if (filled) { filled.destroy(); filled = null; } } }; self.tick = function (i, j) { if (filled) { var offset = Math.cos(((i + j) * 3 + LK.ticks / 2) / 6) / 20; var ty = yOffsetArray[currentOffset] || -15; filled.y = ty + Math.abs(offset * 200) - 5; filled.rotation = offset; } }; self.getTint = function () { return self.currentTint; }; self.getBlockColor = function () { return self.blockColor || self.currentTint; }; self.setTint = function (tint) { self.currentTint = tint; empty.tint = tint; }; self.setFill(false); }); var Particle = Container.expand(function (tint) { var self = Container.call(this); self.tint = tint; var particleGraphics = self.attachAsset('particle', { anchorX: 0.5, anchorY: 0.5 }); particleGraphics.rotation = Math.random() * Math.PI * 2; particleGraphics.tint = self.tint; self.vx = Math.random() * 4 - 2; self.vy = Math.random() * 4 - 2; self.alpha = 1; self.lifetime = 60; self.tick = function () { self.x += self.vx; self.y += self.vy; self.alpha -= 1 / self.lifetime; if (self.alpha <= 0) { self.destroy(); } }; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x000000 }); /**** * Game Code ****/ var gameBackground = game.attachAsset('gameBackground', { anchorX: 0.5, anchorY: 0.5 }); gameBackground.x = 2048 / 2; gameBackground.y = 2732 / 2 + 65; var blocks = []; var dragTarget; var board = game.addChild(new Board()); board.x = 2048 / 2; board.y = 2732 / 2 - 250 + 30; var targetOffset; game.createBlock = function (index) { var block = new Block(board); block.x = 2048 / 2 + (index - 1) * (block.width + 50); block.y = 2732 + block.height; block.setStartPosition(block.x, 2732 - block.height / 2 - 30); blocks.push(block); game.addChild(block); block.on('down', function (x, y, obj) { dragTarget = this; var pos = this.toLocal(obj.global); var targetPos = game.toLocal(obj.global); this.targetX = pos.x; this.targetY = pos.y; dragTarget._move_migrated(targetPos.x, targetPos.y); }); }; game.on('move', function (x, y, obj) { if (dragTarget) { board.removeTint(); var pos = game.toLocal(obj.global); dragTarget._move_migrated(pos.x, pos.y); dragTarget.showOverlap(); } }); game.on('up', function (x, y, obj) { if (dragTarget) { var cells = dragTarget.getOverlappingCells(); if (cells) { for (var a = 0; a < cells.length; a++) { cells[a].setFill(true, dragTarget.blocks[a], dragTarget.offset, dragTarget.color); cells[a].setTint(dragTarget.color); } blocks[blocks.indexOf(dragTarget)] = undefined; dragTarget.destroy(); if (!blocks.some(function (block) { return block; })) { game.createBlocks(); } var pointsToAdd = board.checkLines(); if (pointsToAdd) { score += Math.pow(pointsToAdd, 2) * 10; LK.setScore(score); scoreTxt.setText(score); } } board.removeTint(); dragTarget = undefined; } }); game.createBlocks = function () { for (var i = 0; i < 3; i++) { game.createBlock(i); } }; game.showStreakText = function (level) { // Remove existing streak text if any if (streakText && streakText.parent) { streakText.destroy(); } var message = ''; var color = 0xFFFFFF; if (level === 1) { message = 'GOOD'; color = 0x00FF00; // Green } else if (level === 2) { message = 'SUPER'; color = 0x80FF00; // Green-Yellow } else if (level === 3) { message = 'WOW'; color = 0xFFFF00; // Yellow } else if (level === 4) { message = 'AMAZING'; color = 0xFF8000; // Yellow-Orange } else if (level === 5) { message = 'MANIAC'; color = 0xFF4000; // Orange-Red } else if (level >= 6) { message = 'CRAZYY!!!'; color = 0xFF0000; // Red } if (message) { var newStreakText = new Text2(message, { size: 200, fill: color, font: 'Impact', stroke: '#000000', strokeThickness: 8 }); // Position diagonally across screen (top-right diagonal style) newStreakText.anchor.set(0.5, 0.5); newStreakText.x = 2048 - 300; // Move to right side newStreakText.y = 400; // Move to upper area newStreakText.rotation = -0.2; // Slight diagonal angle newStreakText.alpha = 0; newStreakText.scaleX = 0.5; newStreakText.scaleY = 0.5; game.addChild(newStreakText); streakText = newStreakText; // Animate streak text appearance with elastic bounce effect tween(newStreakText, { alpha: 1, scaleX: 1.3, scaleY: 1.3 }, { duration: 600, easing: tween.elasticOut, onFinish: function onFinish() { // Add a secondary bounce effect tween(newStreakText, { scaleX: 1.1, scaleY: 1.1 }, { duration: 200, easing: tween.bounceOut, onFinish: function onFinish() { // Animate text disappearance after showing tween(newStreakText, { alpha: 0, scaleX: 0.8, scaleY: 0.8, y: newStreakText.y - 100 }, { duration: 1500, easing: tween.elasticIn, onFinish: function onFinish() { if (newStreakText && newStreakText.parent) { newStreakText.destroy(); if (streakText === newStreakText) { streakText = null; } } } }); } }); } }); } }; var score = 0; var lastLinesClearedTime = 0; var streakLevel = 0; var streakTimeout = 5000; // 5 seconds in milliseconds var streakText = null; game.createBlocks(); // Create animated frame instance var animationFrame = game.addChild(new AnimationFrame()); animationFrame.x = 2048 / 2; animationFrame.y = 400; // Position at top area var scoreTxt = new Text2('0', { size: 150, fill: 0xFFFFFF, font: 'Impact', stroke: '#2a636e', strokeThickness: 16 }); scoreTxt.anchor.set(1, 0); LK.gui.topRight.addChild(scoreTxt); game.isMovePossible = function () { for (var a = 0; a < blocks.length; a++) { if (blocks[a]) { for (var i = 0; i < 10; i++) { for (var j = 0; j < 10; j++) { if (board.grid[i][j].filled) { continue; } var canPlace = true; for (var k = 0; k < blocks[a].shape.length; k++) { for (var l = 0; l < blocks[a].shape[k].length; l++) { if (blocks[a].shape[k][l] === 1) { if (i + k < 0 || i + k >= 10 || j + l < 0 || j + l >= 10 || board.grid[i + k][j + l].filled) { canPlace = false; break; } } } if (!canPlace) { break; } } if (canPlace) { return true; } } } } } return false; }; // Play Fala music as background music with continuous looping LK.playMusic('Fala'); var isGameOver = false; LK.on('tick', function () { board.tick(); if (isGameOver || !game.isMovePossible()) { LK.effects.flashScreen(0xffffff, 1000); LK.showGameOver(); } for (var a = blocks.length - 1; a >= 0; a--) { if (blocks[a]) { if (blocks[a] != dragTarget) { blocks[a].moveTowardsHomePosition(); } else { blocks[a].moveToDragTarget(); } } } });
===================================================================
--- original.js
+++ change.js
@@ -12,39 +12,28 @@
var frameBackground = self.attachAsset('animationFrame', {
anchorX: 0.5,
anchorY: 0.5
});
- // Create 4 hollow squares (2x2 grid)
+ // Create 4 solid squares (2x2 grid)
var squareSize = 70;
var spacing = 10;
var startX = -squareSize - spacing / 2;
var startY = -squareSize - spacing / 2;
self.squares = [];
for (var i = 0; i < 2; i++) {
for (var j = 0; j < 2; j++) {
- // Create hollow square using border technique
- var outerSquare = LK.getAsset('animationFrame', {
+ // Create solid square
+ var square = LK.getAsset('animationFrame', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: squareSize / 320,
scaleY: squareSize / 320
});
- var innerSquare = LK.getAsset('animationFrame', {
- anchorX: 0.5,
- anchorY: 0.5,
- scaleX: (squareSize - 8) / 320,
- scaleY: (squareSize - 8) / 320
- });
- outerSquare.x = startX + j * (squareSize + spacing);
- outerSquare.y = startY + i * (squareSize + spacing);
- innerSquare.x = outerSquare.x;
- innerSquare.y = outerSquare.y;
- innerSquare.tint = 0x000000; // Make inner square black to create hollow effect
- self.addChild(outerSquare);
- self.addChild(innerSquare);
+ square.x = startX + j * (squareSize + spacing);
+ square.y = startY + i * (squareSize + spacing);
+ self.addChild(square);
self.squares.push({
- outer: outerSquare,
- inner: innerSquare
+ outer: square
});
}
}
// Animation properties
@@ -59,10 +48,8 @@
var phase = (self.animationTime + i * 0.5) % (Math.PI * 2);
var pulse = Math.sin(phase) * 0.1 + 1;
square.outer.scaleX = squareSize / 320 * pulse;
square.outer.scaleY = squareSize / 320 * pulse;
- square.inner.scaleX = (squareSize - 8) / 320 * pulse;
- square.inner.scaleY = (squareSize - 8) / 320 * pulse;
// Color animation
var colorIntensity = Math.sin(phase * 2) * 0.3 + 0.7;
var grayValue = Math.floor(0x44 + (0xAA - 0x44) * colorIntensity);
square.outer.tint = (grayValue << 16) + (grayValue << 8) + grayValue;
White particle cloud. Cartoon. Bright outline. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Perfectly square bright purple Christmas decoration with cute happyy face. Cartoon style. Cute art style. Simple vector style.
Bunun herşeyini aynı yap sadece rengini koyu siyah ve mor yap surat ifadesi de kızgın ve yüzünde küçük sıyrık ve kesikler olsun
Bunun hiç birşey ni değiştirme sadece rengini koyu yeşil ve açık yeşil nükleer işareti koy ve arkaplanı olmasın
Bunun hiç birşey ni değiştirme sadece rengini koyu mavi ve açık gri ve alnına ters haç koy ve arkaplanı olmasın
Bunun hiç birşey ni değiştirme sadece rengini koyu kırmızı ve açık kırmızı.gözlerinin bebeklerini büyült ve kafasına şeytan boynuzlari koy ve arkaplanı olmasın
Bunun hiç birşey ni değiştirme sadece rengini koyu hayalet beyazı ve açık mor hayalet etekleri olsun alt kısmında ve arkaplanı olmasın
Düz arkaplan ama rengi koyu siyah ve açık kırmızı çizikler sıyrıklar olsun. In-Game asset. 2d. High contrast. No shadows
Bunun aynısı olsun yanlızca stili korku temalı olsun iç kısımdaki beyaz kısmı siyah ve kırmızı çizikler ve kesikler ekle
Rengini koyu yap mat olsun
Hiç birseyi değiştirme aynısını yap