User prompt
online skor tablosu ekler misin ↪💡 Consider importing and using the following plugins: @upit/storage.v1
User prompt
ARAKAYA ŞARKI KOY
User prompt
MENÜDEKİ ÇUNUKLARI SİL
User prompt
MENÜDE KAÇ WİN ALSIĞIN YAZSIN ↪💡 Consider importing and using the following plugins: @upit/storage.v1
User prompt
KEMALDEV YAZISINA 2 KERE BASARSAN WİN AL
User prompt
Add anything you want to the game ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Menu gta 2 style ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Menu gta 2 style ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
3 adet daha hero ekle
User prompt
Oyun ekranını biraz aşağı al ortala
User prompt
LOGADA OLSUN BAŞTA ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
KEMALDEV WRITE BEFORE THE MENU WHEN THE GAME STARTS ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
LET IT BE WRITE KEMALDEV AND THEN IT BE THE LOGO
User prompt
Let the game be fun and fluent ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Please fix the bug: 'Uncaught ReferenceError: scoreText is not defined' in or related to this line: 'scoreText.setText('Score: ' + LK.getScore());' Line Number: 273
User prompt
Game not showing fix
User prompt
make the menu visible
User prompt
Please fix the bug: 'Cannot read properties of undefined (reading '0')' in or related to this line: 'if (grid[y][x] === null) {' Line Number: 227
User prompt
Add menu
User prompt
remove the numbers from the heroes
Code edit (1 edits merged)
Please save this source code
Initial prompt
Hero Fusion Academy
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ var Hero = Container.expand(function (tier) { var self = Container.call(this); self.tier = tier || 1; self.gridX = -1; self.gridY = -1; self.isDragging = false; self.originalX = 0; self.originalY = 0; var heroAssets = ['heroTier1', 'heroTier2', 'heroTier3', 'heroTier4', 'heroTier5', 'heroTier6']; var heroGraphics = self.attachAsset(heroAssets[self.tier - 1], { anchorX: 0.5, anchorY: 0.5 }); // Add tier text var tierText = new Text2(self.tier.toString(), { size: 40, fill: 0xFFFFFF }); tierText.anchor.set(0.5, 0.5); self.addChild(tierText); self.setGridPosition = function (gridX, gridY) { self.gridX = gridX; self.gridY = gridY; self.x = GRID_START_X + gridX * CELL_SIZE + CELL_SIZE / 2; self.y = GRID_START_Y + gridY * CELL_SIZE + CELL_SIZE / 2; self.originalX = self.x; self.originalY = self.y; }; self.down = function (x, y, obj) { if (!gameOver) { self.isDragging = true; draggedHero = self; self.originalX = self.x; self.originalY = self.y; tween(self, { scaleX: 1.1, scaleY: 1.1 }, { duration: 100 }); } }; self.up = function (x, y, obj) { if (self.isDragging) { self.isDragging = false; draggedHero = null; tween(self, { scaleX: 1, scaleY: 1 }, { duration: 100 }); // Check for merge var targetGridX = Math.floor((self.x - GRID_START_X) / CELL_SIZE); var targetGridY = Math.floor((self.y - GRID_START_Y) / CELL_SIZE); if (targetGridX >= 0 && targetGridX < GRID_WIDTH && targetGridY >= 0 && targetGridY < GRID_HEIGHT) { var targetHero = grid[targetGridY][targetGridX]; if (targetHero && targetHero !== self && targetHero.tier === self.tier) { // Merge! performMerge(self, targetHero); return; } } // Return to original position tween(self, { x: self.originalX, y: self.originalY }, { duration: 200 }); } }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x1a1a1a }); /**** * Game Code ****/ var GRID_WIDTH = 5; var GRID_HEIGHT = 7; var CELL_SIZE = 140; var GRID_START_X = (2048 - GRID_WIDTH * CELL_SIZE) / 2; var GRID_START_Y = 400; var grid = []; var heroes = []; var draggedHero = null; var gameOver = false; var spawnTimer = 0; var spawnInterval = 180; // 3 seconds at 60fps // Initialize grid for (var y = 0; y < GRID_HEIGHT; y++) { grid[y] = []; for (var x = 0; x < GRID_WIDTH; x++) { grid[y][x] = null; // Create grid cell visuals var cell = LK.getAsset('gridCell', { anchorX: 0.5, anchorY: 0.5 }); cell.x = GRID_START_X + x * CELL_SIZE + CELL_SIZE / 2; cell.y = GRID_START_Y + y * CELL_SIZE + CELL_SIZE / 2; cell.alpha = 0.3; game.addChild(cell); } } // Score display var scoreText = new Text2('Score: 0', { size: 80, fill: 0xFFFFFF }); scoreText.anchor.set(0.5, 0); LK.gui.top.addChild(scoreText); // Title var titleText = new Text2('Hero Fusion Academy', { size: 100, fill: 0xFFD700 }); titleText.anchor.set(0.5, 0); titleText.x = 2048 / 2; titleText.y = 150; game.addChild(titleText); // Instructions var instructionText = new Text2('Drag matching heroes to merge them!', { size: 60, fill: 0xFFFFFF }); instructionText.anchor.set(0.5, 0); instructionText.x = 2048 / 2; instructionText.y = 250; game.addChild(instructionText); function getEmptyCell() { var emptyCells = []; for (var y = 0; y < GRID_HEIGHT; y++) { for (var x = 0; x < GRID_WIDTH; x++) { if (grid[y][x] === null) { emptyCells.push({ x: x, y: y }); } } } return emptyCells.length > 0 ? emptyCells[Math.floor(Math.random() * emptyCells.length)] : null; } function spawnHero() { var emptyCell = getEmptyCell(); if (emptyCell) { var tier = Math.random() < 0.8 ? 1 : 2; // 80% chance for tier 1, 20% for tier 2 var hero = new Hero(tier); hero.setGridPosition(emptyCell.x, emptyCell.y); grid[emptyCell.y][emptyCell.x] = hero; heroes.push(hero); game.addChild(hero); // Spawn animation hero.scaleX = 0; hero.scaleY = 0; tween(hero, { scaleX: 1, scaleY: 1 }, { duration: 300, easing: tween.bounceOut }); LK.getSound('spawn').play(); } else { // Grid is full - game over gameOver = true; LK.setTimeout(function () { LK.showGameOver(); }, 1000); } } function performMerge(hero1, hero2) { if (hero1.tier >= 6) return; // Max tier reached // Calculate score based on tier var scoreIncrease = hero1.tier * 100; LK.setScore(LK.getScore() + scoreIncrease); scoreText.setText('Score: ' + LK.getScore()); // Remove both heroes from grid grid[hero1.gridY][hero1.gridX] = null; grid[hero2.gridY][hero2.gridX] = null; // Create new hero with higher tier var newHero = new Hero(hero1.tier + 1); newHero.setGridPosition(hero2.gridX, hero2.gridY); grid[hero2.gridY][hero2.gridX] = newHero; heroes.push(newHero); game.addChild(newHero); // Merge animation newHero.scaleX = 0; newHero.scaleY = 0; tween(newHero, { scaleX: 1.2, scaleY: 1.2 }, { duration: 200, easing: tween.easeOut }); tween(newHero, { scaleX: 1, scaleY: 1 }, { duration: 200, easing: tween.easeIn }); // Flash effect LK.effects.flashObject(newHero, 0xFFFFFF, 500); // Remove old heroes hero1.destroy(); hero2.destroy(); // Remove from heroes array var index1 = heroes.indexOf(hero1); if (index1 > -1) heroes.splice(index1, 1); var index2 = heroes.indexOf(hero2); if (index2 > -1) heroes.splice(index2, 1); LK.getSound('merge').play(); // Check for win condition (tier 6 hero created) if (newHero.tier >= 6) { LK.setTimeout(function () { LK.showYouWin(); }, 1000); } } game.move = function (x, y, obj) { if (draggedHero && draggedHero.isDragging) { draggedHero.x = x; draggedHero.y = y; } }; game.update = function () { if (!gameOver) { spawnTimer++; if (spawnTimer >= spawnInterval) { spawnHero(); spawnTimer = 0; // Gradually decrease spawn interval to increase difficulty if (spawnInterval > 120) { spawnInterval -= 2; } } } }; // Spawn initial heroes spawnHero(); spawnHero();
===================================================================
--- original.js
+++ change.js
@@ -1,6 +1,259 @@
-/****
+/****
+* Plugins
+****/
+var tween = LK.import("@upit/tween.v1");
+
+/****
+* Classes
+****/
+var Hero = Container.expand(function (tier) {
+ var self = Container.call(this);
+ self.tier = tier || 1;
+ self.gridX = -1;
+ self.gridY = -1;
+ self.isDragging = false;
+ self.originalX = 0;
+ self.originalY = 0;
+ var heroAssets = ['heroTier1', 'heroTier2', 'heroTier3', 'heroTier4', 'heroTier5', 'heroTier6'];
+ var heroGraphics = self.attachAsset(heroAssets[self.tier - 1], {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ // Add tier text
+ var tierText = new Text2(self.tier.toString(), {
+ size: 40,
+ fill: 0xFFFFFF
+ });
+ tierText.anchor.set(0.5, 0.5);
+ self.addChild(tierText);
+ self.setGridPosition = function (gridX, gridY) {
+ self.gridX = gridX;
+ self.gridY = gridY;
+ self.x = GRID_START_X + gridX * CELL_SIZE + CELL_SIZE / 2;
+ self.y = GRID_START_Y + gridY * CELL_SIZE + CELL_SIZE / 2;
+ self.originalX = self.x;
+ self.originalY = self.y;
+ };
+ self.down = function (x, y, obj) {
+ if (!gameOver) {
+ self.isDragging = true;
+ draggedHero = self;
+ self.originalX = self.x;
+ self.originalY = self.y;
+ tween(self, {
+ scaleX: 1.1,
+ scaleY: 1.1
+ }, {
+ duration: 100
+ });
+ }
+ };
+ self.up = function (x, y, obj) {
+ if (self.isDragging) {
+ self.isDragging = false;
+ draggedHero = null;
+ tween(self, {
+ scaleX: 1,
+ scaleY: 1
+ }, {
+ duration: 100
+ });
+ // Check for merge
+ var targetGridX = Math.floor((self.x - GRID_START_X) / CELL_SIZE);
+ var targetGridY = Math.floor((self.y - GRID_START_Y) / CELL_SIZE);
+ if (targetGridX >= 0 && targetGridX < GRID_WIDTH && targetGridY >= 0 && targetGridY < GRID_HEIGHT) {
+ var targetHero = grid[targetGridY][targetGridX];
+ if (targetHero && targetHero !== self && targetHero.tier === self.tier) {
+ // Merge!
+ performMerge(self, targetHero);
+ return;
+ }
+ }
+ // Return to original position
+ tween(self, {
+ x: self.originalX,
+ y: self.originalY
+ }, {
+ duration: 200
+ });
+ }
+ };
+ return self;
+});
+
+/****
* Initialize Game
-****/
+****/
var game = new LK.Game({
- backgroundColor: 0x000000
-});
\ No newline at end of file
+ backgroundColor: 0x1a1a1a
+});
+
+/****
+* Game Code
+****/
+var GRID_WIDTH = 5;
+var GRID_HEIGHT = 7;
+var CELL_SIZE = 140;
+var GRID_START_X = (2048 - GRID_WIDTH * CELL_SIZE) / 2;
+var GRID_START_Y = 400;
+var grid = [];
+var heroes = [];
+var draggedHero = null;
+var gameOver = false;
+var spawnTimer = 0;
+var spawnInterval = 180; // 3 seconds at 60fps
+// Initialize grid
+for (var y = 0; y < GRID_HEIGHT; y++) {
+ grid[y] = [];
+ for (var x = 0; x < GRID_WIDTH; x++) {
+ grid[y][x] = null;
+ // Create grid cell visuals
+ var cell = LK.getAsset('gridCell', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ cell.x = GRID_START_X + x * CELL_SIZE + CELL_SIZE / 2;
+ cell.y = GRID_START_Y + y * CELL_SIZE + CELL_SIZE / 2;
+ cell.alpha = 0.3;
+ game.addChild(cell);
+ }
+}
+// Score display
+var scoreText = new Text2('Score: 0', {
+ size: 80,
+ fill: 0xFFFFFF
+});
+scoreText.anchor.set(0.5, 0);
+LK.gui.top.addChild(scoreText);
+// Title
+var titleText = new Text2('Hero Fusion Academy', {
+ size: 100,
+ fill: 0xFFD700
+});
+titleText.anchor.set(0.5, 0);
+titleText.x = 2048 / 2;
+titleText.y = 150;
+game.addChild(titleText);
+// Instructions
+var instructionText = new Text2('Drag matching heroes to merge them!', {
+ size: 60,
+ fill: 0xFFFFFF
+});
+instructionText.anchor.set(0.5, 0);
+instructionText.x = 2048 / 2;
+instructionText.y = 250;
+game.addChild(instructionText);
+function getEmptyCell() {
+ var emptyCells = [];
+ for (var y = 0; y < GRID_HEIGHT; y++) {
+ for (var x = 0; x < GRID_WIDTH; x++) {
+ if (grid[y][x] === null) {
+ emptyCells.push({
+ x: x,
+ y: y
+ });
+ }
+ }
+ }
+ return emptyCells.length > 0 ? emptyCells[Math.floor(Math.random() * emptyCells.length)] : null;
+}
+function spawnHero() {
+ var emptyCell = getEmptyCell();
+ if (emptyCell) {
+ var tier = Math.random() < 0.8 ? 1 : 2; // 80% chance for tier 1, 20% for tier 2
+ var hero = new Hero(tier);
+ hero.setGridPosition(emptyCell.x, emptyCell.y);
+ grid[emptyCell.y][emptyCell.x] = hero;
+ heroes.push(hero);
+ game.addChild(hero);
+ // Spawn animation
+ hero.scaleX = 0;
+ hero.scaleY = 0;
+ tween(hero, {
+ scaleX: 1,
+ scaleY: 1
+ }, {
+ duration: 300,
+ easing: tween.bounceOut
+ });
+ LK.getSound('spawn').play();
+ } else {
+ // Grid is full - game over
+ gameOver = true;
+ LK.setTimeout(function () {
+ LK.showGameOver();
+ }, 1000);
+ }
+}
+function performMerge(hero1, hero2) {
+ if (hero1.tier >= 6) return; // Max tier reached
+ // Calculate score based on tier
+ var scoreIncrease = hero1.tier * 100;
+ LK.setScore(LK.getScore() + scoreIncrease);
+ scoreText.setText('Score: ' + LK.getScore());
+ // Remove both heroes from grid
+ grid[hero1.gridY][hero1.gridX] = null;
+ grid[hero2.gridY][hero2.gridX] = null;
+ // Create new hero with higher tier
+ var newHero = new Hero(hero1.tier + 1);
+ newHero.setGridPosition(hero2.gridX, hero2.gridY);
+ grid[hero2.gridY][hero2.gridX] = newHero;
+ heroes.push(newHero);
+ game.addChild(newHero);
+ // Merge animation
+ newHero.scaleX = 0;
+ newHero.scaleY = 0;
+ tween(newHero, {
+ scaleX: 1.2,
+ scaleY: 1.2
+ }, {
+ duration: 200,
+ easing: tween.easeOut
+ });
+ tween(newHero, {
+ scaleX: 1,
+ scaleY: 1
+ }, {
+ duration: 200,
+ easing: tween.easeIn
+ });
+ // Flash effect
+ LK.effects.flashObject(newHero, 0xFFFFFF, 500);
+ // Remove old heroes
+ hero1.destroy();
+ hero2.destroy();
+ // Remove from heroes array
+ var index1 = heroes.indexOf(hero1);
+ if (index1 > -1) heroes.splice(index1, 1);
+ var index2 = heroes.indexOf(hero2);
+ if (index2 > -1) heroes.splice(index2, 1);
+ LK.getSound('merge').play();
+ // Check for win condition (tier 6 hero created)
+ if (newHero.tier >= 6) {
+ LK.setTimeout(function () {
+ LK.showYouWin();
+ }, 1000);
+ }
+}
+game.move = function (x, y, obj) {
+ if (draggedHero && draggedHero.isDragging) {
+ draggedHero.x = x;
+ draggedHero.y = y;
+ }
+};
+game.update = function () {
+ if (!gameOver) {
+ spawnTimer++;
+ if (spawnTimer >= spawnInterval) {
+ spawnHero();
+ spawnTimer = 0;
+ // Gradually decrease spawn interval to increase difficulty
+ if (spawnInterval > 120) {
+ spawnInterval -= 2;
+ }
+ }
+ }
+};
+// Spawn initial heroes
+spawnHero();
+spawnHero();
\ No newline at end of file
pixel art Hulk. In-Game asset. 2d. High contrast. No shadows
attack on titan colossal titan pixel art. In-Game asset. 2d. High contrast. No shadows
KANEKİ PİXEL ART GHOUL. In-Game asset. 2d. High contrast. No shadows
PİXEL ART SİLVER SURFER. In-Game asset. 2d. High contrast. No shadows
Pixel art
pixel art red gurdian. In-Game asset. 2d. High contrast. No shadows
pixel art Hero. In-Game asset. 2d. High contrast. No shadows
PNG