User prompt
itemlerin bulunduğu kısımı alta al tıpkı bir online oyundaki inventory gibi gözüksün
User prompt
Upgrade ışığoı daha hızlı ama sabit hızda haraket etsin ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Işık noktası tam yuvarlak olsun ve daha küçük olsn ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Şerit üzerinde gden bir cizim ve sadece onun etrafında renkk olacak şekilde animasyonu ayarla şerit üzerinde ışık olmasın ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Upgrade geçme efekti yatay olmalı, yanma efekti kırmızı renk olmadı ve yine şerit halinde yatay olmalı. Işık animasyonu da şerit üzerindeki bir ışık hüzmesinin soldan başlayarak sağa doğru yavaşça bi tur gitttikten sonra en sola hızlıca geri gelip sağ tarafa yine yavaşça gitmesi şşeklinde olmalı ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
İtemler yandığında seviye düşmesin, direkt kaybolsun. Upgrade efektini şerif halinde soldan sağa doğru daha yavaş bir animasyonla yap ↪💡 Consider importing and using the following plugins: @upit/tween.v1
Code edit (1 edits merged)
Please save this source code
User prompt
Magic Anvil Upgrade
Initial prompt
Bana Knight Online World oyunundaki Magic Anvil tarzı bir oyun yap. Eşya seçme penceresi olsun oradakii eşyaları sürükle bırak yöntemiyle +1 den +8 e kadar upgrade edebileyim. Upgrade edilirken altın sarısı ile krem rengi arasında bir animasyon oluşsun.
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ var Item = Container.expand(function (itemType, enhanceLevel) { var self = Container.call(this); self.itemType = itemType || 'sword'; self.enhanceLevel = enhanceLevel || 0; self.originalX = 0; self.originalY = 0; self.isDragging = false; // Create item graphics based on type var itemGraphics = self.attachAsset(self.itemType, { anchorX: 0.5, anchorY: 0.5 }); // Enhancement level text self.levelText = new Text2('+' + self.enhanceLevel, { size: 40, fill: 0xFFD700 }); self.levelText.anchor.set(0.5, 0.5); self.levelText.x = 0; self.levelText.y = -itemGraphics.height / 2 - 30; self.addChild(self.levelText); if (self.enhanceLevel === 0) { self.levelText.visible = false; } self.updateEnhanceLevel = function (newLevel) { self.enhanceLevel = newLevel; if (self.enhanceLevel === 0) { self.levelText.visible = false; } else { self.levelText.visible = true; self.levelText.setText('+' + self.enhanceLevel); } }; self.setOriginalPosition = function (x, y) { self.originalX = x; self.originalY = y; }; self.returnToOriginalPosition = function () { tween(self, { x: self.originalX, y: self.originalY }, { duration: 300 }); }; self.down = function (x, y, obj) { self.isDragging = true; draggedItem = self; }; self.up = function (x, y, obj) { self.isDragging = false; draggedItem = null; }; return self; }); var UpgradeEffect = Container.expand(function () { var self = Container.call(this); var glowEffect = self.attachAsset('upgrade_glow', { anchorX: 0.5, anchorY: 0.5 }); glowEffect.alpha = 0; glowEffect.scaleX = 0.5; glowEffect.scaleY = 0.5; self.playSuccessEffect = function () { glowEffect.alpha = 1; glowEffect.scaleX = 0.5; glowEffect.scaleY = 0.5; tween(glowEffect, { alpha: 0, scaleX: 2, scaleY: 2 }, { duration: 1000, easing: tween.easeOut }); }; self.playFailEffect = function () { glowEffect.alpha = 0.5; glowEffect.scaleX = 1; glowEffect.scaleY = 1; tween(glowEffect, { alpha: 0 }, { duration: 500, easing: tween.easeOut }); }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x2F4F4F }); /**** * Game Code ****/ var inventoryPanel = game.addChild(LK.getAsset('inventory_panel', { anchorX: 0.5, anchorY: 0, x: 1024, y: 100 })); var anvilArea = game.addChild(LK.getAsset('anvil_area', { anchorX: 0.5, anchorY: 0.5, x: 1024, y: 1500 })); var upgradeEffect = game.addChild(new UpgradeEffect()); upgradeEffect.x = 1024; upgradeEffect.y = 1500; // Create inventory items var inventoryItems = []; var itemTypes = ['sword', 'armor', 'helmet', 'shield', 'ring']; var itemsPerRow = 5; var startX = 1024 - (itemsPerRow - 1) * 160 / 2; var startY = 200; for (var i = 0; i < 15; i++) { var itemType = itemTypes[i % itemTypes.length]; var item = new Item(itemType, 0); var row = Math.floor(i / itemsPerRow); var col = i % itemsPerRow; item.x = startX + col * 160; item.y = startY + row * 140; item.setOriginalPosition(item.x, item.y); inventoryItems.push(item); game.addChild(item); } // Game variables var draggedItem = null; var totalUpgrades = 0; var successfulUpgrades = 0; var maxItems = 15; // UI Elements var scoreTxt = new Text2('Upgrades: 0', { size: 80, fill: 0xFFD700 }); scoreTxt.anchor.set(0.5, 0); LK.gui.top.addChild(scoreTxt); var instructionTxt = new Text2('Drag items to anvil to upgrade', { size: 60, fill: 0xFFFFFF }); instructionTxt.anchor.set(0.5, 0); instructionTxt.x = 1024; instructionTxt.y = 50; game.addChild(instructionTxt); // Upgrade success rates based on level var upgradeRates = { 0: 0.95, // +0 to +1 1: 0.85, // +1 to +2 2: 0.75, // +2 to +3 3: 0.65, // +3 to +4 4: 0.50, // +4 to +5 5: 0.35, // +5 to +6 6: 0.20, // +6 to +7 7: 0.10 // +7 to +8 }; function attemptUpgrade(item) { if (item.enhanceLevel >= 8) { return; // Max level reached } var successRate = upgradeRates[item.enhanceLevel]; var success = Math.random() < successRate; if (success) { // Successful upgrade item.updateEnhanceLevel(item.enhanceLevel + 1); upgradeEffect.playSuccessEffect(); LK.getSound('upgrade_success').play(); successfulUpgrades++; // Update score LK.setScore(successfulUpgrades); scoreTxt.setText('Upgrades: ' + successfulUpgrades); // Win condition if (successfulUpgrades >= 20) { LK.showYouWin(); } } else { // Failed upgrade upgradeEffect.playFailEffect(); LK.getSound('upgrade_fail').play(); // Chance to downgrade or destroy if (item.enhanceLevel > 0) { var downgradeChance = 0.3 + item.enhanceLevel * 0.1; if (Math.random() < downgradeChance) { if (Math.random() < 0.5 && item.enhanceLevel > 3) { // Destroy item (remove from inventory) var itemIndex = inventoryItems.indexOf(item); if (itemIndex > -1) { inventoryItems.splice(itemIndex, 1); item.destroy(); maxItems--; // Check if no items left if (maxItems <= 0) { LK.setTimeout(function () { LK.showGameOver(); }, 1000); } } } else { // Downgrade item.updateEnhanceLevel(Math.max(0, item.enhanceLevel - 1)); } } } } totalUpgrades++; } function isItemInAnvilArea(item) { var anvilBounds = { left: anvilArea.x - anvilArea.width / 2, right: anvilArea.x + anvilArea.width / 2, top: anvilArea.y - anvilArea.height / 2, bottom: anvilArea.y + anvilArea.height / 2 }; return item.x >= anvilBounds.left && item.x <= anvilBounds.right && item.y >= anvilBounds.top && item.y <= anvilBounds.bottom; } // Game event handlers game.move = function (x, y, obj) { if (draggedItem) { draggedItem.x = x; draggedItem.y = y; } }; game.down = function (x, y, obj) { // Check if clicking on anvil area with an item if (isItemInAnvilArea({ x: x, y: y })) { for (var i = 0; i < inventoryItems.length; i++) { var item = inventoryItems[i]; if (isItemInAnvilArea(item)) { attemptUpgrade(item); item.returnToOriginalPosition(); break; } } } }; game.up = function (x, y, obj) { if (draggedItem) { if (isItemInAnvilArea(draggedItem)) { attemptUpgrade(draggedItem); } draggedItem.returnToOriginalPosition(); draggedItem = null; } }; game.update = function () { // Update game state if (totalUpgrades > 50 && successfulUpgrades < 5) { LK.showGameOver(); } };
===================================================================
--- original.js
+++ change.js
@@ -1,6 +1,276 @@
-/****
+/****
+* Plugins
+****/
+var tween = LK.import("@upit/tween.v1");
+
+/****
+* Classes
+****/
+var Item = Container.expand(function (itemType, enhanceLevel) {
+ var self = Container.call(this);
+ self.itemType = itemType || 'sword';
+ self.enhanceLevel = enhanceLevel || 0;
+ self.originalX = 0;
+ self.originalY = 0;
+ self.isDragging = false;
+ // Create item graphics based on type
+ var itemGraphics = self.attachAsset(self.itemType, {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ // Enhancement level text
+ self.levelText = new Text2('+' + self.enhanceLevel, {
+ size: 40,
+ fill: 0xFFD700
+ });
+ self.levelText.anchor.set(0.5, 0.5);
+ self.levelText.x = 0;
+ self.levelText.y = -itemGraphics.height / 2 - 30;
+ self.addChild(self.levelText);
+ if (self.enhanceLevel === 0) {
+ self.levelText.visible = false;
+ }
+ self.updateEnhanceLevel = function (newLevel) {
+ self.enhanceLevel = newLevel;
+ if (self.enhanceLevel === 0) {
+ self.levelText.visible = false;
+ } else {
+ self.levelText.visible = true;
+ self.levelText.setText('+' + self.enhanceLevel);
+ }
+ };
+ self.setOriginalPosition = function (x, y) {
+ self.originalX = x;
+ self.originalY = y;
+ };
+ self.returnToOriginalPosition = function () {
+ tween(self, {
+ x: self.originalX,
+ y: self.originalY
+ }, {
+ duration: 300
+ });
+ };
+ self.down = function (x, y, obj) {
+ self.isDragging = true;
+ draggedItem = self;
+ };
+ self.up = function (x, y, obj) {
+ self.isDragging = false;
+ draggedItem = null;
+ };
+ return self;
+});
+var UpgradeEffect = Container.expand(function () {
+ var self = Container.call(this);
+ var glowEffect = self.attachAsset('upgrade_glow', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ glowEffect.alpha = 0;
+ glowEffect.scaleX = 0.5;
+ glowEffect.scaleY = 0.5;
+ self.playSuccessEffect = function () {
+ glowEffect.alpha = 1;
+ glowEffect.scaleX = 0.5;
+ glowEffect.scaleY = 0.5;
+ tween(glowEffect, {
+ alpha: 0,
+ scaleX: 2,
+ scaleY: 2
+ }, {
+ duration: 1000,
+ easing: tween.easeOut
+ });
+ };
+ self.playFailEffect = function () {
+ glowEffect.alpha = 0.5;
+ glowEffect.scaleX = 1;
+ glowEffect.scaleY = 1;
+ tween(glowEffect, {
+ alpha: 0
+ }, {
+ duration: 500,
+ easing: tween.easeOut
+ });
+ };
+ return self;
+});
+
+/****
* Initialize Game
-****/
+****/
var game = new LK.Game({
- backgroundColor: 0x000000
-});
\ No newline at end of file
+ backgroundColor: 0x2F4F4F
+});
+
+/****
+* Game Code
+****/
+var inventoryPanel = game.addChild(LK.getAsset('inventory_panel', {
+ anchorX: 0.5,
+ anchorY: 0,
+ x: 1024,
+ y: 100
+}));
+var anvilArea = game.addChild(LK.getAsset('anvil_area', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: 1024,
+ y: 1500
+}));
+var upgradeEffect = game.addChild(new UpgradeEffect());
+upgradeEffect.x = 1024;
+upgradeEffect.y = 1500;
+// Create inventory items
+var inventoryItems = [];
+var itemTypes = ['sword', 'armor', 'helmet', 'shield', 'ring'];
+var itemsPerRow = 5;
+var startX = 1024 - (itemsPerRow - 1) * 160 / 2;
+var startY = 200;
+for (var i = 0; i < 15; i++) {
+ var itemType = itemTypes[i % itemTypes.length];
+ var item = new Item(itemType, 0);
+ var row = Math.floor(i / itemsPerRow);
+ var col = i % itemsPerRow;
+ item.x = startX + col * 160;
+ item.y = startY + row * 140;
+ item.setOriginalPosition(item.x, item.y);
+ inventoryItems.push(item);
+ game.addChild(item);
+}
+// Game variables
+var draggedItem = null;
+var totalUpgrades = 0;
+var successfulUpgrades = 0;
+var maxItems = 15;
+// UI Elements
+var scoreTxt = new Text2('Upgrades: 0', {
+ size: 80,
+ fill: 0xFFD700
+});
+scoreTxt.anchor.set(0.5, 0);
+LK.gui.top.addChild(scoreTxt);
+var instructionTxt = new Text2('Drag items to anvil to upgrade', {
+ size: 60,
+ fill: 0xFFFFFF
+});
+instructionTxt.anchor.set(0.5, 0);
+instructionTxt.x = 1024;
+instructionTxt.y = 50;
+game.addChild(instructionTxt);
+// Upgrade success rates based on level
+var upgradeRates = {
+ 0: 0.95,
+ // +0 to +1
+ 1: 0.85,
+ // +1 to +2
+ 2: 0.75,
+ // +2 to +3
+ 3: 0.65,
+ // +3 to +4
+ 4: 0.50,
+ // +4 to +5
+ 5: 0.35,
+ // +5 to +6
+ 6: 0.20,
+ // +6 to +7
+ 7: 0.10 // +7 to +8
+};
+function attemptUpgrade(item) {
+ if (item.enhanceLevel >= 8) {
+ return; // Max level reached
+ }
+ var successRate = upgradeRates[item.enhanceLevel];
+ var success = Math.random() < successRate;
+ if (success) {
+ // Successful upgrade
+ item.updateEnhanceLevel(item.enhanceLevel + 1);
+ upgradeEffect.playSuccessEffect();
+ LK.getSound('upgrade_success').play();
+ successfulUpgrades++;
+ // Update score
+ LK.setScore(successfulUpgrades);
+ scoreTxt.setText('Upgrades: ' + successfulUpgrades);
+ // Win condition
+ if (successfulUpgrades >= 20) {
+ LK.showYouWin();
+ }
+ } else {
+ // Failed upgrade
+ upgradeEffect.playFailEffect();
+ LK.getSound('upgrade_fail').play();
+ // Chance to downgrade or destroy
+ if (item.enhanceLevel > 0) {
+ var downgradeChance = 0.3 + item.enhanceLevel * 0.1;
+ if (Math.random() < downgradeChance) {
+ if (Math.random() < 0.5 && item.enhanceLevel > 3) {
+ // Destroy item (remove from inventory)
+ var itemIndex = inventoryItems.indexOf(item);
+ if (itemIndex > -1) {
+ inventoryItems.splice(itemIndex, 1);
+ item.destroy();
+ maxItems--;
+ // Check if no items left
+ if (maxItems <= 0) {
+ LK.setTimeout(function () {
+ LK.showGameOver();
+ }, 1000);
+ }
+ }
+ } else {
+ // Downgrade
+ item.updateEnhanceLevel(Math.max(0, item.enhanceLevel - 1));
+ }
+ }
+ }
+ }
+ totalUpgrades++;
+}
+function isItemInAnvilArea(item) {
+ var anvilBounds = {
+ left: anvilArea.x - anvilArea.width / 2,
+ right: anvilArea.x + anvilArea.width / 2,
+ top: anvilArea.y - anvilArea.height / 2,
+ bottom: anvilArea.y + anvilArea.height / 2
+ };
+ return item.x >= anvilBounds.left && item.x <= anvilBounds.right && item.y >= anvilBounds.top && item.y <= anvilBounds.bottom;
+}
+// Game event handlers
+game.move = function (x, y, obj) {
+ if (draggedItem) {
+ draggedItem.x = x;
+ draggedItem.y = y;
+ }
+};
+game.down = function (x, y, obj) {
+ // Check if clicking on anvil area with an item
+ if (isItemInAnvilArea({
+ x: x,
+ y: y
+ })) {
+ for (var i = 0; i < inventoryItems.length; i++) {
+ var item = inventoryItems[i];
+ if (isItemInAnvilArea(item)) {
+ attemptUpgrade(item);
+ item.returnToOriginalPosition();
+ break;
+ }
+ }
+ }
+};
+game.up = function (x, y, obj) {
+ if (draggedItem) {
+ if (isItemInAnvilArea(draggedItem)) {
+ attemptUpgrade(draggedItem);
+ }
+ draggedItem.returnToOriginalPosition();
+ draggedItem = null;
+ }
+};
+game.update = function () {
+ // Update game state
+ if (totalUpgrades > 50 && successfulUpgrades < 5) {
+ LK.showGameOver();
+ }
+};
\ No newline at end of file
Raptor from Knight Online. In-Game asset. 2d. High contrast. No shadows
Cancel Button for medeivel concept. In-Game asset. 2d. High contrast. No shadows
Confirm Button for medeivel concept. In-Game asset. 2d. High contrast. No shadows
rectangular frame, medevil concept without text and dark color platte. In-Game asset. 2d. High contrast. No shadows
rectangular frame, without text, wooden color palette with good concept. In-Game asset. 2d. High contrast. No shadows
Chitin Shield. In-Game asset. 2d. High contrast. No shadows
Gray dagger from medevil . No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat
warsctyhe. No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat
içinde yazı olmayan, kenarlında boşluk olmayan 15 adet bölmeden oluşan bir inventory. In-Game asset. 2d. High contrast. No shadows
a wooden frame. In-Game asset. 2d. High contrast. No shadows
Smal enchancement scrool from online game with shine effected. In-Game asset. 2d. High contrast. No shadows