User prompt
v101 sil
User prompt
oyunu verisyon 1.0.1 olarak güncelle
User prompt
oyunun ismini Denoş Blok Oyunu yap
User prompt
oyun verisyonu 2 yap
User prompt
oyunun verisoyunu 2 yap
User prompt
ana menüdeki play buttonu arka planı kaldır
User prompt
menü tuşuna basınca oyun bitti ekranı gelmesin
User prompt
oyunun içerisine bir buton yerleştir o butona basınca oyundan ana menüye aktarsın
User prompt
oynu duraklat butonunu oyundan kaldır
User prompt
play buttonu arkaplan kaldır
User prompt
play buttonu şeffaf olsun
Code edit (4 edits merged)
Please save this source code
User prompt
skor barı çalışmıyor
User prompt
bunu bir mobil oyun için ayarla
User prompt
ana menüde oyunu duraklat buttonu yerine oyunu kapat buttonu ekle
User prompt
oyunu duraklat buttonunun karşısında ana menüye geri dönmek için assetlerden geri butonu ekle
User prompt
ana menüye geri dönmek için oyun içerisine assetlerden geri butonu ekle
User prompt
ana menüye geri dönmek için oyun içerisine geri butonu ekle
Code edit (1 edits merged)
Please save this source code
User prompt
ana menüdeki festive match! yerine "CEOMRX" yaz
/**** * Classes ****/ 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; particle.y = y; this.particles.push(particle); this.addChild(particle); } }; 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); for (var j = 0; j < 10; j++) { if (rowFilled) { self.grid[i][j].setFill(false); self.spawnParticles(self.grid[i][j].x, self.grid[i][j].y, self.grid[i][j].getTint()); } if (colFilled) { self.grid[j][i].setFill(false); self.spawnParticles(self.grid[j][i].x, self.grid[j][i].y, self.grid[j][i].getTint()); } } } } 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) { 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; } } 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.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 ****/ // Main menu overlay var mainMenuOverlay = new Container(); mainMenuOverlay.zIndex = 10000; // ensure on top // Semi-transparent background var menuBg = LK.getAsset('tileBackground', { anchorX: 0.5, anchorY: 0.5 }); // Make sure the background fully covers the screen menuBg.width = 2048; menuBg.height = 2732; menuBg.x = 2048 / 2; menuBg.y = 2732 / 2; menuBg.alpha = 0.85; mainMenuOverlay.addChild(menuBg); // Title text var titleText = new Text2('DENOŞ BLOK OYUNU', { size: 180, fill: 0xD83318, font: 'Impact', stroke: '#fff', strokeThickness: 18 }); titleText.anchor.set(0.5, 0.5); titleText.x = 2048 / 2; titleText.y = 900; mainMenuOverlay.addChild(titleText); // Play button var playBtnBg = LK.getAsset('background', { anchorX: 0.5, anchorY: 0.5 }); playBtnBg.width = 600; playBtnBg.height = 220; playBtnBg.tint = 0x83de44; playBtnBg.x = 2048 / 2; playBtnBg.y = 1500; mainMenuOverlay.addChild(playBtnBg); var playBtnText = new Text2('Oyna', { size: 120, fill: "#fff", font: 'Impact', stroke: '#2a636e', strokeThickness: 10 }); playBtnText.anchor.set(0.5, 0.5); playBtnText.x = 2048 / 2; playBtnText.y = 1500; mainMenuOverlay.addChild(playBtnText); // Block gameplay until play is pressed var gameStarted = false; game.addChild(mainMenuOverlay); function startGame() { if (gameStarted) { return; } gameStarted = true; mainMenuOverlay.visible = false; // --- original game setup code below --- gameBackground = game.attachAsset('gameBackground', { anchorX: 0.5, anchorY: 0.5 }); gameBackground.x = 2048 / 2; gameBackground.y = 2732 / 2 + 65; blocks = []; dragTarget = undefined; board = game.addChild(new Board()); board.x = 2048 / 2; board.y = 2732 / 2 - 250 + 30; targetOffset = undefined; game.createBlock = function (index) { var block = new Block(board); block.x = 2048 / 2 + (index - 1) * (block.width + 30); 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); 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); } }; score = 0; game.createBlocks(); scoreTxt = new Text2('0', { size: 150, fill: 0xFFFFFF, font: 'Impact', stroke: '#2a636e', strokeThickness: 16 }); scoreTxt.anchor.set(.5, 0); LK.gui.top.addChild(scoreTxt); // --- Add Asset-based Back Button --- var backBtnAsset = LK.getAsset('back', { anchorX: 0.5, anchorY: 0.5 }); backBtnAsset.width = 180; backBtnAsset.height = 180; backBtnAsset.x = 2048 - 180; backBtnAsset.y = 120; backBtnAsset.zIndex = 10001; backBtnAsset.interactive = true; backBtnAsset.buttonMode = true; backBtnAsset.visible = false; backBtnAsset.on('down', function (x, y, obj) { // Hide game UI and show main menu mainMenuOverlay.visible = true; gameStarted = false; // Remove all blocks and board from game if (typeof board !== "undefined" && board) { board.destroy(); board = undefined; } if (typeof blocks !== "undefined" && blocks) { for (var i = 0; i < blocks.length; i++) { if (blocks[i]) { blocks[i].destroy(); } } blocks = []; } if (typeof gameBackground !== "undefined" && gameBackground) { gameBackground.destroy(); gameBackground = undefined; } if (typeof scoreTxt !== "undefined" && scoreTxt) { scoreTxt.setText("0"); } // Hide back button backBtnAsset.visible = false; }); LK.gui.top.addChild(backBtnAsset); // Show back button only when game is started LK.on('tick', function () { if (typeof backBtnAsset !== "undefined") { backBtnAsset.visible = !!gameStarted; } }); 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; }; var isGameOver = false; LK.on('tick', function () { if (typeof board !== "undefined" && board && typeof board.tick === "function") { board.tick(); } if (isGameOver || !game.isMovePossible()) { LK.effects.flashScreen(0xffffff, 1000); LK.showGameOver(); isGameOver = true; } for (var a = blocks.length - 1; a >= 0; a--) { if (blocks[a]) { if (blocks[a] != dragTarget) { blocks[a].moveTowardsHomePosition(); } else { blocks[a].moveToDragTarget(); } } } }); } // Play button interaction playBtnBg.interactive = true; playBtnBg.buttonMode = true; playBtnBg.on('down', function () { startGame(); }); playBtnText.interactive = true; playBtnText.buttonMode = true; playBtnText.on('down', function () { startGame(); });
===================================================================
--- original.js
+++ change.js
@@ -461,34 +461,22 @@
strokeThickness: 16
});
scoreTxt.anchor.set(.5, 0);
LK.gui.top.addChild(scoreTxt);
- // --- Add Back Button ---
- var backBtnBg = LK.getAsset('background', {
+ // --- Add Asset-based Back Button ---
+ var backBtnAsset = LK.getAsset('back', {
anchorX: 0.5,
anchorY: 0.5
});
- backBtnBg.width = 320;
- backBtnBg.height = 120;
- backBtnBg.tint = 0xd83318;
- backBtnBg.x = 2048 - 220;
- backBtnBg.y = 120;
- backBtnBg.zIndex = 10001;
- var backBtnText = new Text2('Geri', {
- size: 70,
- fill: "#fff",
- font: 'Impact',
- stroke: '#2a636e',
- strokeThickness: 8
- });
- backBtnText.anchor.set(0.5, 0.5);
- backBtnText.x = backBtnBg.x;
- backBtnText.y = backBtnBg.y;
- backBtnText.zIndex = 10002;
- // Make back button interactive for finger/touch
- backBtnBg.interactive = true;
- backBtnBg.buttonMode = true;
- backBtnBg.on('down', function (x, y, obj) {
+ backBtnAsset.width = 180;
+ backBtnAsset.height = 180;
+ backBtnAsset.x = 2048 - 180;
+ backBtnAsset.y = 120;
+ backBtnAsset.zIndex = 10001;
+ backBtnAsset.interactive = true;
+ backBtnAsset.buttonMode = true;
+ backBtnAsset.visible = false;
+ backBtnAsset.on('down', function (x, y, obj) {
// Hide game UI and show main menu
mainMenuOverlay.visible = true;
gameStarted = false;
// Remove all blocks and board from game
@@ -511,27 +499,16 @@
if (typeof scoreTxt !== "undefined" && scoreTxt) {
scoreTxt.setText("0");
}
// Hide back button
- backBtnBg.visible = false;
- backBtnText.visible = false;
+ backBtnAsset.visible = false;
});
- backBtnText.interactive = true;
- backBtnText.buttonMode = true;
- backBtnText.on('down', function (x, y, obj) {
- backBtnBg.emit('down', x, y, obj);
- });
- // Add to GUI overlay so it stays on top
- LK.gui.top.addChild(backBtnBg);
- LK.gui.top.addChild(backBtnText);
+ LK.gui.top.addChild(backBtnAsset);
// Show back button only when game is started
LK.on('tick', function () {
- if (typeof backBtnBg !== "undefined") {
- backBtnBg.visible = !!gameStarted;
+ if (typeof backBtnAsset !== "undefined") {
+ backBtnAsset.visible = !!gameStarted;
}
- if (typeof backBtnText !== "undefined") {
- backBtnText.visible = !!gameStarted;
- }
});
game.isMovePossible = function () {
for (var a = 0; a < blocks.length; a++) {
if (blocks[a]) {
White square with tight round corners, flat shaded, hyper casual game. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Background for relaxing puzzle game. Pastel colors, flat shaded, vector art. Flowers. Blocks. Relaxing. Clouds Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
White particle cloud. Cartoon. Bright outline. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Perfectly square red Christmas decoration. Cartoon. Cute art style
Perfectly square purple Christmas decoration. Cartoon. Cute art style
Perfectly square yellow Christmas decoration. Cartoon style. Cute art style. Simple vector style.
Perfectly square bright blue Christmas decoration with cute happyy face. Cartoon style. Cute art style. Simple vector style.
Perfectly square bright purple Christmas decoration with cute happyy face. Cartoon style. Cute art style. Simple vector style.
Perfectly square bright green Christmas decoration with cute happyy face. Cartoon style. Cute art style. Simple vector style. No Shadows
Perfectly square bright cobalt blue Christmas decoration with cute happyy face. Cartoon style. Cute art style. Simple vector style. No Shadows Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
back button. In-Game asset. 2d. High contrast. No shadows