/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ var MemeItem = Container.expand(function (level) { var self = Container.call(this); self.level = level || 1; self.isDragging = false; self.originalX = 0; self.originalY = 0; self.gridX = -1; self.gridY = -1; var memeNames = ["capuchino assasino", "brr brr patapim", "fruli frula", "shimpanzini bananini", "lirili larila", "tung tung sahur", "capuchino assasino supreme", "ultimate brainrot chaos"]; var memeGraphics = self.attachAsset('meme' + self.level, { anchorX: 0.5, anchorY: 0.5 }); var memeText = new Text2(memeNames[self.level - 1], { size: 48, fill: 0xFFFFFF }); memeText.anchor.set(0.5, 0.5); self.addChild(memeText); self.setGridPosition = function (x, y) { self.gridX = x; self.gridY = y; self.x = 170 + x * 310; self.y = 400 + y * 70; self.originalX = self.x; self.originalY = self.y; }; self.down = function (x, y, obj) { if (!self.isDragging) { self.isDragging = true; self.originalX = self.x; self.originalY = self.y; draggedItem = self; } }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x1a1a1a }); /**** * Game Code ****/ var grid = []; var gridWidth = 6; var gridHeight = 5; var draggedItem = null; var gameOver = false; var nextMeme = null; // Initialize grid for (var y = 0; y < gridHeight; y++) { grid[y] = []; for (var x = 0; x < gridWidth; x++) { grid[y][x] = null; var cell = game.addChild(LK.getAsset('emptyCell', { anchorX: 0.5, anchorY: 0.5 })); cell.x = 170 + x * 310; cell.y = 400 + y * 70; } } // Create title var titleText = new Text2('BRAINROT MERGE', { size: 120, fill: 0xFF4444 }); titleText.anchor.set(0.5, 0.5); titleText.x = 1024; titleText.y = 200; game.addChild(titleText); // Create score display var scoreText = new Text2('Score: 0', { size: 80, fill: 0xFFFFFF }); scoreText.anchor.set(0.5, 0); LK.gui.top.addChild(scoreText); // Create next meme preview var nextMemeText = new Text2('Next:', { size: 60, fill: 0xFFFFFF }); nextMemeText.anchor.set(0.5, 0.5); nextMemeText.x = 1024; nextMemeText.y = 1800; game.addChild(nextMemeText); function spawnNextMeme() { var level = Math.floor(Math.random() * 3) + 1; nextMeme = new MemeItem(level); nextMeme.x = 1024; nextMeme.y = 1900; game.addChild(nextMeme); } function findEmptyCell() { for (var y = 0; y < gridHeight; y++) { for (var x = 0; x < gridWidth; x++) { if (grid[y][x] === null) { return { x: x, y: y }; } } } return null; } function getGridPosition(worldX, worldY) { var x = Math.round((worldX - 170) / 310); var y = Math.round((worldY - 400) / 70); if (x >= 0 && x < gridWidth && y >= 0 && y < gridHeight) { return { x: x, y: y }; } return null; } function placeMeme(meme, gridX, gridY) { if (grid[gridY][gridX] !== null) { return false; } grid[gridY][gridX] = meme; meme.setGridPosition(gridX, gridY); LK.getSound('place').play(); return true; } function checkForMerges() { var merged = false; for (var y = 0; y < gridHeight; y++) { for (var x = 0; x < gridWidth - 1; x++) { var current = grid[y][x]; var next = grid[y][x + 1]; if (current && next && current.level === next.level && current.level < 8) { // Merge horizontally var newLevel = current.level + 1; var newMeme = new MemeItem(newLevel); grid[y][x] = newMeme; grid[y][x + 1] = null; game.addChild(newMeme); newMeme.setGridPosition(x, y); current.destroy(); next.destroy(); LK.setScore(LK.getScore() + newLevel * 10); scoreText.setText('Score: ' + LK.getScore()); LK.getSound('merge').play(); merged = true; break; } } if (merged) break; } if (!merged) { for (var x = 0; x < gridWidth; x++) { for (var y = 0; y < gridHeight - 1; y++) { var current = grid[y][x]; var below = grid[y + 1][x]; if (current && below && current.level === below.level && current.level < 8) { // Merge vertically var newLevel = current.level + 1; var newMeme = new MemeItem(newLevel); grid[y][x] = newMeme; grid[y + 1][x] = null; game.addChild(newMeme); newMeme.setGridPosition(x, y); current.destroy(); below.destroy(); LK.setScore(LK.getScore() + newLevel * 10); scoreText.setText('Score: ' + LK.getScore()); LK.getSound('merge').play(); merged = true; break; } } if (merged) break; } } return merged; } function checkGameOver() { var emptyCell = findEmptyCell(); if (!emptyCell) { gameOver = true; LK.showGameOver(); return true; } return false; } // Initial spawn spawnNextMeme(); game.move = function (x, y, obj) { if (draggedItem && draggedItem.isDragging) { draggedItem.x = x; draggedItem.y = y; } }; game.up = function (x, y, obj) { if (draggedItem && draggedItem.isDragging) { var gridPos = getGridPosition(x, y); if (gridPos && grid[gridPos.y][gridPos.x] === null) { // Valid placement if (placeMeme(draggedItem, gridPos.x, gridPos.y)) { draggedItem.isDragging = false; draggedItem = null; // Check for merges var keepMerging = true; while (keepMerging) { keepMerging = checkForMerges(); } // Check game over if (!checkGameOver()) { spawnNextMeme(); } } } else { // Invalid placement - return to original position tween(draggedItem, { x: draggedItem.originalX, y: draggedItem.originalY }, { duration: 300, easing: tween.easeOut }); draggedItem.isDragging = false; draggedItem = null; } } }; game.update = function () { // Game loop runs here };
/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
/****
* Classes
****/
var MemeItem = Container.expand(function (level) {
var self = Container.call(this);
self.level = level || 1;
self.isDragging = false;
self.originalX = 0;
self.originalY = 0;
self.gridX = -1;
self.gridY = -1;
var memeNames = ["capuchino assasino", "brr brr patapim", "fruli frula", "shimpanzini bananini", "lirili larila", "tung tung sahur", "capuchino assasino supreme", "ultimate brainrot chaos"];
var memeGraphics = self.attachAsset('meme' + self.level, {
anchorX: 0.5,
anchorY: 0.5
});
var memeText = new Text2(memeNames[self.level - 1], {
size: 48,
fill: 0xFFFFFF
});
memeText.anchor.set(0.5, 0.5);
self.addChild(memeText);
self.setGridPosition = function (x, y) {
self.gridX = x;
self.gridY = y;
self.x = 170 + x * 310;
self.y = 400 + y * 70;
self.originalX = self.x;
self.originalY = self.y;
};
self.down = function (x, y, obj) {
if (!self.isDragging) {
self.isDragging = true;
self.originalX = self.x;
self.originalY = self.y;
draggedItem = self;
}
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x1a1a1a
});
/****
* Game Code
****/
var grid = [];
var gridWidth = 6;
var gridHeight = 5;
var draggedItem = null;
var gameOver = false;
var nextMeme = null;
// Initialize grid
for (var y = 0; y < gridHeight; y++) {
grid[y] = [];
for (var x = 0; x < gridWidth; x++) {
grid[y][x] = null;
var cell = game.addChild(LK.getAsset('emptyCell', {
anchorX: 0.5,
anchorY: 0.5
}));
cell.x = 170 + x * 310;
cell.y = 400 + y * 70;
}
}
// Create title
var titleText = new Text2('BRAINROT MERGE', {
size: 120,
fill: 0xFF4444
});
titleText.anchor.set(0.5, 0.5);
titleText.x = 1024;
titleText.y = 200;
game.addChild(titleText);
// Create score display
var scoreText = new Text2('Score: 0', {
size: 80,
fill: 0xFFFFFF
});
scoreText.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreText);
// Create next meme preview
var nextMemeText = new Text2('Next:', {
size: 60,
fill: 0xFFFFFF
});
nextMemeText.anchor.set(0.5, 0.5);
nextMemeText.x = 1024;
nextMemeText.y = 1800;
game.addChild(nextMemeText);
function spawnNextMeme() {
var level = Math.floor(Math.random() * 3) + 1;
nextMeme = new MemeItem(level);
nextMeme.x = 1024;
nextMeme.y = 1900;
game.addChild(nextMeme);
}
function findEmptyCell() {
for (var y = 0; y < gridHeight; y++) {
for (var x = 0; x < gridWidth; x++) {
if (grid[y][x] === null) {
return {
x: x,
y: y
};
}
}
}
return null;
}
function getGridPosition(worldX, worldY) {
var x = Math.round((worldX - 170) / 310);
var y = Math.round((worldY - 400) / 70);
if (x >= 0 && x < gridWidth && y >= 0 && y < gridHeight) {
return {
x: x,
y: y
};
}
return null;
}
function placeMeme(meme, gridX, gridY) {
if (grid[gridY][gridX] !== null) {
return false;
}
grid[gridY][gridX] = meme;
meme.setGridPosition(gridX, gridY);
LK.getSound('place').play();
return true;
}
function checkForMerges() {
var merged = false;
for (var y = 0; y < gridHeight; y++) {
for (var x = 0; x < gridWidth - 1; x++) {
var current = grid[y][x];
var next = grid[y][x + 1];
if (current && next && current.level === next.level && current.level < 8) {
// Merge horizontally
var newLevel = current.level + 1;
var newMeme = new MemeItem(newLevel);
grid[y][x] = newMeme;
grid[y][x + 1] = null;
game.addChild(newMeme);
newMeme.setGridPosition(x, y);
current.destroy();
next.destroy();
LK.setScore(LK.getScore() + newLevel * 10);
scoreText.setText('Score: ' + LK.getScore());
LK.getSound('merge').play();
merged = true;
break;
}
}
if (merged) break;
}
if (!merged) {
for (var x = 0; x < gridWidth; x++) {
for (var y = 0; y < gridHeight - 1; y++) {
var current = grid[y][x];
var below = grid[y + 1][x];
if (current && below && current.level === below.level && current.level < 8) {
// Merge vertically
var newLevel = current.level + 1;
var newMeme = new MemeItem(newLevel);
grid[y][x] = newMeme;
grid[y + 1][x] = null;
game.addChild(newMeme);
newMeme.setGridPosition(x, y);
current.destroy();
below.destroy();
LK.setScore(LK.getScore() + newLevel * 10);
scoreText.setText('Score: ' + LK.getScore());
LK.getSound('merge').play();
merged = true;
break;
}
}
if (merged) break;
}
}
return merged;
}
function checkGameOver() {
var emptyCell = findEmptyCell();
if (!emptyCell) {
gameOver = true;
LK.showGameOver();
return true;
}
return false;
}
// Initial spawn
spawnNextMeme();
game.move = function (x, y, obj) {
if (draggedItem && draggedItem.isDragging) {
draggedItem.x = x;
draggedItem.y = y;
}
};
game.up = function (x, y, obj) {
if (draggedItem && draggedItem.isDragging) {
var gridPos = getGridPosition(x, y);
if (gridPos && grid[gridPos.y][gridPos.x] === null) {
// Valid placement
if (placeMeme(draggedItem, gridPos.x, gridPos.y)) {
draggedItem.isDragging = false;
draggedItem = null;
// Check for merges
var keepMerging = true;
while (keepMerging) {
keepMerging = checkForMerges();
}
// Check game over
if (!checkGameOver()) {
spawnNextMeme();
}
}
} else {
// Invalid placement - return to original position
tween(draggedItem, {
x: draggedItem.originalX,
y: draggedItem.originalY
}, {
duration: 300,
easing: tween.easeOut
});
draggedItem.isDragging = false;
draggedItem = null;
}
}
};
game.update = function () {
// Game loop runs here
};