User prompt
oyun 1000 puana ulaştığında biter ve tüm ekranı kaplayan tebrik görseli çıkar ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
500 puanda çıkan mole a tıklandığında 10 puan yerine 50 puan versin
User prompt
500 puanda çıkan hole ve mole büyüklüğü yarısına düşürülsün
User prompt
oyun 500 puana ulaşınca 9 hole kaybolur ve onun yerine ortada normal bir hole un 10 katı büyüklükte bir hole dan mole çıkar ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
başlat yazısı silinsin
User prompt
oyun başlamadan önce beyaz bir ekran ve hemen ortasındada başlatma butonu olsun ve bu butona basıldığında oyun başlasın ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
bottom bar görselini sağ alt köşeye getirin
User prompt
sol alt köşeye bir kare eklensin
User prompt
ekranın en aşağısına yatay bir dikdörtgen koyulsun
User prompt
bonus her 7 saniyede bir değilde 20 saniye aralıklarla gelsin
User prompt
her 7 saniyede 1 tane yukarıdan bonus düşsün ve bu bonusa tıklandığında 5 saniyeliğine tüm hole lardan mole lar çıksın ve 5 saniye sonra geri eski akışında devam etsin oyun ve bu tekrarlansın 7 saniye aralıklarla ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
200 puana ulaşıldığında bu sefer 16 hole ve mole yerine 25 hole ve mole olsun
User prompt
2. seviyede hata düzeltilsin ve hammer ön planda olsun
User prompt
ilk level 100 puan alınınca biter ve 2. level başlar ve 2. level da 9 mole ve hole yerine 16 mole ve hole olur
User prompt
mole karakteri biraz daha yukarı alınsın
User prompt
mole karakteri biraz daha yukarda çıksın
User prompt
hole görselleri bi tık aşağı taşınsın
Code edit (1 edits merged)
Please save this source code
User prompt
Whack-a-Mole Frenzy
Initial prompt
bir köstebek vurma oyunu 9 tane delik olucak ve her birinden rasgele köstebekler çıkıcak bizde çekiçle onlara vurucaz
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ var Bonus = Container.expand(function () { var self = Container.call(this); var bonusGraphics = self.attachAsset('mole', { anchorX: 0.5, anchorY: 0.5, tint: 0xFFD700 // Gold color for bonus }); self.speed = 5; self.update = function () { self.y += self.speed; }; self.down = function (x, y, obj) { // Activate bonus mode bonusActive = true; bonusEndTime = LK.ticks + 300; // 5 seconds at 60fps // Show all moles immediately for (var i = 0; i < holes.length; i++) { if (!holes[i].hasMole) { holes[i].showMole(); } } // Remove this bonus item for (var i = bonusItems.length - 1; i >= 0; i--) { if (bonusItems[i] === self) { bonusItems.splice(i, 1); game.removeChild(self); break; } } }; return self; }); var Hammer = Container.expand(function () { var self = Container.call(this); var hammerGraphics = self.attachAsset('hammer', { anchorX: 0.5, anchorY: 0.5, rotation: Math.PI / 4 }); self.isAnimating = false; self.swing = function () { if (!self.isAnimating) { self.isAnimating = true; var originalRotation = hammerGraphics.rotation; tween(hammerGraphics, { rotation: originalRotation - Math.PI / 6, scaleX: 1.2, scaleY: 1.2 }, { duration: 100, easing: tween.easeOut, onFinish: function onFinish() { tween(hammerGraphics, { rotation: originalRotation, scaleX: 1, scaleY: 1 }, { duration: 200, easing: tween.easeIn, onFinish: function onFinish() { self.isAnimating = false; } }); } }); } }; return self; }); var Hole = Container.expand(function () { var self = Container.call(this); var holeGraphics = self.attachAsset('hole', { anchorX: 0.5, anchorY: 0.5 }); self.hasMole = false; self.mole = null; self.moleVisible = false; self.lastMoleState = false; self.showMole = function () { if (!self.hasMole) { self.mole = self.addChild(LK.getAsset('mole', { anchorX: 0.5, anchorY: 0.5, y: 50 })); self.hasMole = true; self.moleVisible = true; // Animate mole popping up tween(self.mole, { y: -80 }, { duration: 200, easing: tween.easeOut }); // Schedule mole to disappear LK.setTimeout(function () { if (self.mole && self.hasMole) { self.hideMole(); } }, 1500 + Math.random() * 1000); } }; self.hideMole = function () { if (self.hasMole && self.mole) { self.moleVisible = false; tween(self.mole, { y: 50 }, { duration: 200, easing: tween.easeIn, onFinish: function onFinish() { if (self.mole) { self.removeChild(self.mole); self.mole = null; self.hasMole = false; } } }); } }; self.hitMole = function () { if (self.hasMole && self.moleVisible && self.mole) { self.moleVisible = false; LK.setScore(LK.getScore() + 10); scoreTxt.setText(LK.getScore()); LK.getSound('hit').play(); // Flash mole white when hit tween(self.mole, { tint: 0xffffff }, { duration: 100, onFinish: function onFinish() { if (self.mole) { tween(self.mole, { tint: 0xffffff }, { duration: 100, onFinish: function onFinish() { self.hideMole(); } }); } } }); return true; } return false; }; self.down = function (x, y, obj) { if (!self.hitMole()) { // Missed or hit empty hole LK.getSound('miss').play(); } }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x90EE90 }); /**** * Game Code ****/ var holes = []; var hammer; var scoreTxt; var gameSpeed = 1; var nextMoleTime = 0; var speedIncreaseTimer = 0; var currentLevel = 1; var levelTarget = 100; var gridSize = 3; // 3x3 for level 1, 4x4 for level 2 var bonusDropTimer = 0; var bonusActive = false; var bonusEndTime = 0; var bonusItems = []; // Create score display scoreTxt = new Text2('0', { size: 120, fill: 0xFFFFFF }); scoreTxt.anchor.set(0.5, 0); LK.gui.top.addChild(scoreTxt); scoreTxt.setText(LK.getScore()); // Create grid of holes based on current level function createHoleGrid() { // Clear existing holes for (var i = 0; i < holes.length; i++) { if (holes[i]) { game.removeChild(holes[i]); } } holes = []; var spacing = gridSize === 3 ? 300 : gridSize === 4 ? 240 : 200; // Smaller spacing for larger grids var totalWidth = (gridSize - 1) * spacing; var totalHeight = (gridSize - 1) * spacing; var startX = 2048 / 2 - totalWidth / 2; var startY = 2732 / 2 - totalHeight / 2 - 100; for (var row = 0; row < gridSize; row++) { for (var col = 0; col < gridSize; col++) { var hole = new Hole(); hole.x = startX + col * spacing; hole.y = startY + row * spacing; holes.push(hole); game.addChild(hole); } } // Ensure hammer stays on top after adding holes if (hammer) { game.removeChild(hammer); game.addChild(hammer); } } // Create initial hole grid createHoleGrid(); // Create hammer cursor hammer = new Hammer(); game.addChild(hammer); // Game event handlers game.move = function (x, y, obj) { hammer.x = x; hammer.y = y; }; game.down = function (x, y, obj) { hammer.swing(); }; // Game update loop game.update = function () { // Handle bonus drop timer (every 20 seconds) bonusDropTimer++; if (bonusDropTimer >= 1200) { // 20 seconds at 60fps var bonus = new Bonus(); bonus.x = Math.random() * 1800 + 124; // Random X position avoiding edges bonus.y = -100; // Start above screen bonusItems.push(bonus); game.addChild(bonus); bonusDropTimer = 0; } // Update bonus items for (var i = bonusItems.length - 1; i >= 0; i--) { var bonus = bonusItems[i]; if (bonus.y > 2832) { // Off screen bottom bonusItems.splice(i, 1); game.removeChild(bonus); } } // Check if bonus mode should end if (bonusActive && LK.ticks >= bonusEndTime) { bonusActive = false; } // Increase game speed over time speedIncreaseTimer++; if (speedIncreaseTimer >= 1800) { // Every 30 seconds at 60fps gameSpeed += 0.2; speedIncreaseTimer = 0; } // Spawn moles randomly (unless bonus mode is active) if (!bonusActive && LK.ticks >= nextMoleTime) { var availableHoles = []; for (var i = 0; i < holes.length; i++) { if (!holes[i].hasMole) { availableHoles.push(holes[i]); } } if (availableHoles.length > 0) { var randomHole = availableHoles[Math.floor(Math.random() * availableHoles.length)]; randomHole.showMole(); } // Set next mole spawn time (gets faster with gameSpeed) var baseDelay = 120; // 2 seconds at 60fps var randomDelay = Math.random() * 180; // 0-3 seconds random nextMoleTime = LK.ticks + (baseDelay + randomDelay) / gameSpeed; } // Check for level progression if (currentLevel === 1 && LK.getScore() >= levelTarget) { currentLevel = 2; gridSize = 4; levelTarget = 200; // Progress to level 3 at 200 points gameSpeed = 1; // Reset game speed for new level createHoleGrid(); } else if (currentLevel === 2 && LK.getScore() >= levelTarget) { currentLevel = 3; gridSize = 5; levelTarget = 999999; // No more level progression after level 3 gameSpeed = 1; // Reset game speed for new level createHoleGrid(); } // Track mole state changes for any additional logic for (var i = 0; i < holes.length; i++) { var hole = holes[i]; if (hole.lastMoleState !== hole.moleVisible) { hole.lastMoleState = hole.moleVisible; } } };
===================================================================
--- original.js
+++ change.js
@@ -238,12 +238,12 @@
hammer.swing();
};
// Game update loop
game.update = function () {
- // Handle bonus drop timer (every 7 seconds)
+ // Handle bonus drop timer (every 20 seconds)
bonusDropTimer++;
- if (bonusDropTimer >= 420) {
- // 7 seconds at 60fps
+ if (bonusDropTimer >= 1200) {
+ // 20 seconds at 60fps
var bonus = new Bonus();
bonus.x = Math.random() * 1800 + 124; // Random X position avoiding edges
bonus.y = -100; // Start above screen
bonusItems.push(bonus);
Modern App Store icon, high definition, square with rounded corners, for a game titled "Whack-a-Mole Frenzy" and with the description "Classic whack-a-mole game with 9 holes where moles randomly appear. Tap quickly with your hammer to score points before they disappear!". No text on icon!
güzel ışıklı bir çekiç. In-Game asset. 2d. High contrast. No shadows
bir köstebek çukuru ama köstebeksiz etrafında çatlaklar olan ve yukarı doğru çıkan bir delik. In-Game asset. 2d. High contrast. No shadows
tatlı ve küçük yavru bir köstebek. In-Game asset. 2d. High contrast. No shadows
(This game ends at 1000 points) yazısı olsun ve arkasındada 3 tane köstebek olsun. In-Game asset. 2d. High contrast. No shadows
bir tane şık görünümlü bir başlatma butonu olsun ve onun hemen üstünde 3 tane köstebek dursun. In-Game asset. 2d. High contrast. No shadows