User prompt
elimizde silah olsun ve mermisi düzgün gitsin ve claim zoneleri 2 kere sıkınca bizim olabilsin uzaktan sıkabilelim mermi sonsuza kadar gitsin sağ altta mermisi yazsın 7 şarjörü olsun köpek öldürünce 2 şarjör çıksın
User prompt
köpek bizi takip etmiyor düz gidip duruyor bizi full takip etsin kovalasın ve bizi yakalayınca 3 saniye gerisayım başlasın ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
köpekte her 10 saniyede bir gelsin ve bizden hızlı gitsin
User prompt
0.5 saniyede bir sarı şeyden çıksın o power up 10 saniyede bir çıksın ve hızlandırması 5 saniye sürsün veuzaktan karakterimizin uzağında doğan köpek çıksın 1 tane her 35 saniyede o köpek karakterimize saldırsın ve saldırınca karakterimiz hemewn ölmesin bir sahne çıksın ekrana hızlıca dokun desin dokununca bizi bıraksın sanki kolumuzdan tutmuşta elimizi sallıyormusuz gibi ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
you win final score değilde record = saniyesi yazsın yukarıda territory : yazan yerde territory = 15 WİN yazsın ve herşeyin hitboxu büyüsün
User prompt
o sarı şeyden claim yazan şeyden her 3 saniyede bir çıksın
User prompt
power uplar en fazla 2 tane çıksın ve claim yazan sarı daireler alınca gitsin o seffaklık kalmasın ve ondan en fazla 5 tane çıksın ve oyunda süre olsun kronometre yukarda olsun ve oyun bitince rekorunun süresi yazsın ve o sarı şeyden 15 tane alınca bitsin ↪💡 Consider importing and using the following plugins: @upit/tween.v1, @upit/storage.v1
User prompt
o power up tan yavaş yavaş her 5 saniyede 1 tane çıksın
User prompt
fikrimi değiştirdim o araba değil power up olsun hız versin deyince ve alınca gitsin ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
1 tane araba doğsun rastgele bir yerde o arabaya binince hızımız artsın
User prompt
claim olan yuvarlaklar az sayıda oluşsun
Code edit (1 edits merged)
Please save this source code
User prompt
biraz daha büyüsün ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
claim yazıları okunacak gibi olsun büyüsün ↪💡 Consider importing and using the following plugins: @upit/tween.v1
Initial prompt
Please save this source code
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); var storage = LK.import("@upit/storage.v1"); /**** * Classes ****/ var Bullet = Container.expand(function () { var self = Container.call(this); var bulletGraphics = self.attachAsset('bullet', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 15; self.targetX = 0; self.targetY = 0; self.update = function () { var dx = self.targetX - self.x; var dy = self.targetY - self.y; var distance = Math.sqrt(dx * dx + dy * dy); if (distance > 5) { var moveX = dx / distance * self.speed; var moveY = dy / distance * self.speed; self.x += moveX; self.y += moveY; } }; self.setTarget = function (x, y) { self.targetX = x; self.targetY = y; }; return self; }); var Character = Container.expand(function () { var self = Container.call(this); var characterGraphics = self.attachAsset('character', { anchorX: 0.5, anchorY: 0.5 }); self.targetX = 0; self.targetY = 0; self.moveSpeed = 8; self.baseSpeed = 8; self.carSpeed = 16; self.inCar = false; self.update = function () { var dx = self.targetX - self.x; var dy = self.targetY - self.y; var distance = Math.sqrt(dx * dx + dy * dy); if (distance > 5) { var moveX = dx / distance * self.moveSpeed; var moveY = dy / distance * self.moveSpeed; var newX = self.x + moveX; var newY = self.y + moveY; // Keep character within bounds (accounting for character size) if (newX >= 90 && newX <= 1958 && newY >= 90 && newY <= 2642) { self.x = newX; self.y = newY; } } }; self.setTarget = function (x, y) { self.targetX = x; self.targetY = y; }; self.applySpeedBoost = function () { self.moveSpeed = self.carSpeed; LK.setTimeout(function () { self.moveSpeed = self.baseSpeed; }, 5000); // Speed boost lasts 5 seconds }; self.shoot = function (targetX, targetY) { if (ammoCount > 0) { var bullet = new Bullet(); bullet.x = self.x; bullet.y = self.y; bullet.setTarget(targetX, targetY); bullets.push(bullet); game.addChild(bullet); ammoCount--; updateAmmoDisplay(); } }; return self; }); var ClaimZone = Container.expand(function () { var self = Container.call(this); var zoneGraphics = self.attachAsset('claimZone', { anchorX: 0.5, anchorY: 0.5 }); var claimText = new Text2('CLAIM', { size: 32, fill: '#FFFFFF' }); claimText.anchor.set(0.5, 1); claimText.y = -45; self.addChild(claimText); // Add pulsing animation to make text more readable function startClaimTextAnimation() { tween(claimText, { scaleX: 1.5, scaleY: 1.5 }, { duration: 800, easing: tween.easeInOut, onFinish: function onFinish() { tween(claimText, { scaleX: 1.0, scaleY: 1.0 }, { duration: 800, easing: tween.easeInOut, onFinish: startClaimTextAnimation }); } }); } startClaimTextAnimation(); self.isClaimed = false; self.hitsRequired = 2; self.currentHits = 0; self.hit = function () { if (!self.isClaimed) { self.currentHits++; claimText.setText('CLAIM (' + self.currentHits + '/' + self.hitsRequired + ')'); if (self.currentHits >= self.hitsRequired) { return self.claim(); } } return false; }; self.claim = function () { if (!self.isClaimed) { self.isClaimed = true; self.removeChild(zoneGraphics); self.removeChild(claimText); var claimedGraphics = self.attachAsset('claimedZone', { anchorX: 0.5, anchorY: 0.5, alpha: 1.0 }); var claimedText = new Text2('CLAIMED', { size: 20, fill: '#FFFFFF' }); claimedText.anchor.set(0.5, 1); claimedText.y = -40; self.addChild(claimedText); return true; } return false; }; return self; }); var Dog = Container.expand(function () { var self = Container.call(this); var dogGraphics = self.attachAsset('dog', { anchorX: 0.5, anchorY: 0.5 }); self.targetX = 0; self.targetY = 0; self.moveSpeed = 12; self.isAttacking = false; self.update = function () { if (self.isAttacking && character) { // Always chase the character's current position self.targetX = character.x; self.targetY = character.y; var dx = self.targetX - self.x; var dy = self.targetY - self.y; var distance = Math.sqrt(dx * dx + dy * dy); if (distance > 5) { var moveX = dx / distance * self.moveSpeed; var moveY = dy / distance * self.moveSpeed; self.x += moveX; self.y += moveY; } } }; self.attackTarget = function (targetX, targetY) { self.targetX = targetX; self.targetY = targetY; self.isAttacking = true; }; return self; }); var PowerUp = Container.expand(function () { var self = Container.call(this); var powerUpGraphics = self.attachAsset('powerUp', { anchorX: 0.5, anchorY: 0.5 }); var powerUpText = new Text2('SPEED', { size: 24, fill: '#FFFFFF' }); powerUpText.anchor.set(0.5, 0.5); self.addChild(powerUpText); // Add pulsing animation to power up function startPowerUpAnimation() { tween(self, { scaleX: 1.3, scaleY: 1.3 }, { duration: 600, easing: tween.easeInOut, onFinish: function onFinish() { tween(self, { scaleX: 1.0, scaleY: 1.0 }, { duration: 600, easing: tween.easeInOut, onFinish: startPowerUpAnimation }); } }); } startPowerUpAnimation(); return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x2E8B57 }); /**** * Game Code ****/ var character = new Character(); character.x = 1024; character.y = 1366; game.addChild(character); var claimZones = []; var totalZones = 5; // Power up management var powerUps = []; // Game timer var gameStartTime = Date.now(); var gameTimer = 0; // Dog management var dogs = []; var isUnderAttack = false; var attackOverlay = null; var attackCountdown = 0; var attackCountdownTimer = null; // Weapon system var bullets = []; var ammoCount = 7; var maxAmmo = 7; // Ammo display var ammoTxt = new Text2('Ammo: 7', { size: 50, fill: '#FFFFFF' }); ammoTxt.anchor.set(1, 1); LK.gui.bottomRight.addChild(ammoTxt); function updateAmmoDisplay() { ammoTxt.setText('Ammo: ' + ammoCount); } // Function to create power up at random location function createPowerUp() { var powerUp = new PowerUp(); var powerUpValidPosition = false; var powerUpAttempts = 0; while (!powerUpValidPosition && powerUpAttempts < 50) { powerUp.x = 150 + Math.random() * 1748; powerUp.y = 150 + Math.random() * 2432; // Check distance from character var powerUpDx = powerUp.x - character.x; var powerUpDy = powerUp.y - character.y; var distanceFromCharacter = Math.sqrt(powerUpDx * powerUpDx + powerUpDy * powerUpDy); if (distanceFromCharacter > 200) { powerUpValidPosition = true; } powerUpAttempts++; } powerUps.push(powerUp); game.addChild(powerUp); } // Function to create attack screen function createAttackScreen() { if (attackOverlay) return; isUnderAttack = true; // Create semi-transparent overlay attackOverlay = new Container(); var overlay = LK.getAsset('wall', { anchorX: 0, anchorY: 0, x: 0, y: 0, width: 2048, height: 2732, alpha: 0.7, tint: 0xFF0000 }); attackOverlay.addChild(overlay); // Create tap text var tapText = new Text2('TAP QUICKLY!', { size: 120, fill: '#FFFFFF' }); tapText.anchor.set(0.5, 0.5); tapText.x = 1024; tapText.y = 1366; attackOverlay.addChild(tapText); // Create countdown text var countdownText = new Text2('3', { size: 150, fill: '#FF0000' }); countdownText.anchor.set(0.5, 0.5); countdownText.x = 1024; countdownText.y = 1500; attackOverlay.addChild(countdownText); attackOverlay.countdownText = countdownText; // Update countdown display var countdownUpdateTimer = LK.setInterval(function () { if (attackOverlay && attackOverlay.countdownText) { attackOverlay.countdownText.setText(attackCountdown.toString()); } }, 100); attackOverlay.countdownUpdateTimer = countdownUpdateTimer; // Add pulsing animation function startTapAnimation() { tween(tapText, { scaleX: 1.5, scaleY: 1.5 }, { duration: 300, easing: tween.easeInOut, onFinish: function onFinish() { tween(tapText, { scaleX: 1.0, scaleY: 1.0 }, { duration: 300, easing: tween.easeInOut, onFinish: startTapAnimation }); } }); } startTapAnimation(); game.addChild(attackOverlay); } // Function to remove attack screen function removeAttackScreen() { if (attackOverlay) { if (attackCountdownTimer) { LK.clearInterval(attackCountdownTimer); attackCountdownTimer = null; } if (attackOverlay.countdownUpdateTimer) { LK.clearInterval(attackOverlay.countdownUpdateTimer); } attackOverlay.destroy(); attackOverlay = null; isUnderAttack = false; attackCountdown = 0; } } // Function to create dog at random edge position function createDog() { var dog = new Dog(); // Spawn dog at random edge, far from character var edge = Math.floor(Math.random() * 4); // 0=top, 1=right, 2=bottom, 3=left switch (edge) { case 0: // top dog.x = 150 + Math.random() * 1748; dog.y = 150; break; case 1: // right dog.x = 1898; dog.y = 150 + Math.random() * 2432; break; case 2: // bottom dog.x = 150 + Math.random() * 1748; dog.y = 2582; break; case 3: // left dog.x = 150; dog.y = 150 + Math.random() * 2432; break; } dogs.push(dog); game.addChild(dog); } // Spawn first power up immediately createPowerUp(); // Set timer to spawn dogs every 10 seconds LK.setInterval(function () { if (dogs.length < 1) { createDog(); } }, 10000); // Set timer to spawn power ups every 10 seconds LK.setInterval(function () { if (powerUps.length < 2) { createPowerUp(); } }, 10000); // Set timer to spawn claim zones every 0.5 seconds LK.setInterval(function () { if (claimZones.length < 5) { var zone = createClaimZone(); claimZones.push(zone); game.addChild(zone); } }, 500); // Create walls around the perimeter var walls = []; // Top wall for (var i = 0; i < 42; i++) { var topWall = LK.getAsset('wall', { anchorX: 0.5, anchorY: 0.5, x: i * 50 + 25, y: 25 }); game.addChild(topWall); walls.push(topWall); } // Bottom wall for (var i = 0; i < 42; i++) { var bottomWall = LK.getAsset('wall', { anchorX: 0.5, anchorY: 0.5, x: i * 50 + 25, y: 2707 }); game.addChild(bottomWall); walls.push(bottomWall); } // Left wall for (var i = 1; i < 54; i++) { var leftWall = LK.getAsset('wall', { anchorX: 0.5, anchorY: 0.5, x: 25, y: i * 50 + 25 }); game.addChild(leftWall); walls.push(leftWall); } // Right wall for (var i = 1; i < 54; i++) { var rightWall = LK.getAsset('wall', { anchorX: 0.5, anchorY: 0.5, x: 2023, y: i * 50 + 25 }); game.addChild(rightWall); walls.push(rightWall); } // Create initial claim zones function createClaimZone() { var zone = new ClaimZone(); var validPosition = false; var attempts = 0; while (!validPosition && attempts < 50) { zone.x = 150 + Math.random() * 1748; zone.y = 150 + Math.random() * 2432; // Check distance from character var dx = zone.x - character.x; var dy = zone.y - character.y; var distanceFromCharacter = Math.sqrt(dx * dx + dy * dy); // Check distance from other zones var tooClose = false; for (var i = 0; i < claimZones.length; i++) { var otherZone = claimZones[i]; var zdx = zone.x - otherZone.x; var zdy = zone.y - otherZone.y; var distanceFromZone = Math.sqrt(zdx * zdx + zdy * zdy); if (distanceFromZone < 200) { tooClose = true; break; } } if (distanceFromCharacter > 150 && !tooClose) { validPosition = true; } attempts++; } return zone; } // Generate initial claim zones for (var i = 0; i < totalZones; i++) { var zone = createClaimZone(); claimZones.push(zone); game.addChild(zone); } // Score display var scoreTxt = new Text2('Territory: 0', { size: 60, fill: '#FFFFFF' }); scoreTxt.anchor.set(0.5, 0); LK.gui.top.addChild(scoreTxt); // Timer display var timerTxt = new Text2('Time: 00:00', { size: 50, fill: '#FFFFFF' }); timerTxt.anchor.set(0.5, 0); timerTxt.y = 80; LK.gui.top.addChild(timerTxt); // Mouse/touch controls game.move = function (x, y, obj) { character.setTarget(x, y); }; game.down = function (x, y, obj) { if (isUnderAttack) { // Handle attack screen tap removeAttackScreen(); // Remove all dogs and give ammo reward for (var d = dogs.length - 1; d >= 0; d--) { dogs[d].destroy(); // Give 2 ammo clips (14 bullets) for killing dog ammoCount = Math.min(ammoCount + 14, maxAmmo * 10); // Allow stacking up to 70 bullets updateAmmoDisplay(); } dogs = []; } else { // Shoot at target location character.shoot(x, y); } }; // Main game loop game.update = function () { // Update timer gameTimer = Math.floor((Date.now() - gameStartTime) / 1000); var minutes = Math.floor(gameTimer / 60); var seconds = gameTimer % 60; var timeString = (minutes < 10 ? '0' : '') + minutes + ':' + (seconds < 10 ? '0' : '') + seconds; timerTxt.setText('Time: ' + timeString); // Check for power up collection for (var p = powerUps.length - 1; p >= 0; p--) { var powerUp = powerUps[p]; var powerUpDx = character.x - powerUp.x; var powerUpDy = character.y - powerUp.y; var powerUpDistance = Math.sqrt(powerUpDx * powerUpDx + powerUpDy * powerUpDy); if (powerUpDistance < 75) { character.applySpeedBoost(); powerUp.destroy(); powerUps.splice(p, 1); } } // Handle dog attacks for (var d = dogs.length - 1; d >= 0; d--) { var dog = dogs[d]; if (!dog.isAttacking) { dog.attackTarget(character.x, character.y); } // Check if dog reached character var dogDx = character.x - dog.x; var dogDy = character.y - dog.y; var dogDistance = Math.sqrt(dogDx * dogDx + dogDy * dogDy); if (dogDistance < 100 && !isUnderAttack) { createAttackScreen(); // Start 3 second countdown attackCountdown = 3; attackCountdownTimer = LK.setInterval(function () { attackCountdown--; if (attackCountdown <= 0) { LK.clearInterval(attackCountdownTimer); // Game over if player doesn't tap in time LK.showGameOver(); } }, 1000); } } // Handle attack screen taps if (isUnderAttack) { // This will be handled by the down event } // Handle bullet collisions and movement for (var b = bullets.length - 1; b >= 0; b--) { var bullet = bullets[b]; // Check bullet collision with claim zones var bulletHitZone = false; for (var z = 0; z < claimZones.length; z++) { var zone = claimZones[z]; if (!zone.isClaimed) { var bulletZoneDx = bullet.x - zone.x; var bulletZoneDy = bullet.y - zone.y; var bulletZoneDistance = Math.sqrt(bulletZoneDx * bulletZoneDx + bulletZoneDy * bulletZoneDy); if (bulletZoneDistance < 60) { if (zone.hit()) { LK.setScore(LK.getScore() + 1); if (LK.getScore() >= 15) { scoreTxt.setText('Territory: 15 WIN'); } else { scoreTxt.setText('Territory: ' + LK.getScore()); } LK.getSound('claim').play(); // Remove claimed zone claimZones.splice(z, 1); zone.destroy(); // Check win condition if (LK.getScore() >= 15) { var currentTime = storage.bestTime || 999999; if (gameTimer < currentTime) { storage.bestTime = gameTimer; } var recordMinutes = Math.floor(storage.bestTime / 60); var recordSeconds = storage.bestTime % 60; var recordTimeString = (recordMinutes < 10 ? '0' : '') + recordMinutes + ':' + (recordSeconds < 10 ? '0' : '') + recordSeconds; LK.showYouWin('Record: ' + recordTimeString); } } bullet.destroy(); bullets.splice(b, 1); bulletHitZone = true; break; } } } // Remove bullets that go off screen if (!bulletHitZone && (bullet.x < 0 || bullet.x > 2048 || bullet.y < 0 || bullet.y > 2732)) { bullet.destroy(); bullets.splice(b, 1); } } // Check for zone claims (keep original touch-based claiming as backup) for (var i = claimZones.length - 1; i >= 0; i--) { var zone = claimZones[i]; if (!zone.isClaimed) { var dx = character.x - zone.x; var dy = character.y - zone.y; var distance = Math.sqrt(dx * dx + dy * dy); if (distance < 75) { if (zone.hit()) { LK.setScore(LK.getScore() + 1); if (LK.getScore() >= 15) { scoreTxt.setText('Territory: 15 WIN'); } else { scoreTxt.setText('Territory: ' + LK.getScore()); } LK.getSound('claim').play(); // Remove claimed zone instead of creating new one claimZones.splice(i, 1); zone.destroy(); // Check win condition - game ends at 15 claims if (LK.getScore() >= 15) { // Store the record time var currentTime = storage.bestTime || 999999; if (gameTimer < currentTime) { storage.bestTime = gameTimer; } // Format the record time for display var recordMinutes = Math.floor(storage.bestTime / 60); var recordSeconds = storage.bestTime % 60; var recordTimeString = (recordMinutes < 10 ? '0' : '') + recordMinutes + ':' + (recordSeconds < 10 ? '0' : '') + recordSeconds; LK.showYouWin('Record: ' + recordTimeString); } } } } } };
===================================================================
--- original.js
+++ change.js
@@ -6,8 +6,34 @@
/****
* Classes
****/
+var Bullet = Container.expand(function () {
+ var self = Container.call(this);
+ var bulletGraphics = self.attachAsset('bullet', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.speed = 15;
+ self.targetX = 0;
+ self.targetY = 0;
+ self.update = function () {
+ var dx = self.targetX - self.x;
+ var dy = self.targetY - self.y;
+ var distance = Math.sqrt(dx * dx + dy * dy);
+ if (distance > 5) {
+ var moveX = dx / distance * self.speed;
+ var moveY = dy / distance * self.speed;
+ self.x += moveX;
+ self.y += moveY;
+ }
+ };
+ self.setTarget = function (x, y) {
+ self.targetX = x;
+ self.targetY = y;
+ };
+ return self;
+});
var Character = Container.expand(function () {
var self = Container.call(this);
var characterGraphics = self.attachAsset('character', {
anchorX: 0.5,
@@ -44,8 +70,20 @@
LK.setTimeout(function () {
self.moveSpeed = self.baseSpeed;
}, 5000); // Speed boost lasts 5 seconds
};
+ self.shoot = function (targetX, targetY) {
+ if (ammoCount > 0) {
+ var bullet = new Bullet();
+ bullet.x = self.x;
+ bullet.y = self.y;
+ bullet.setTarget(targetX, targetY);
+ bullets.push(bullet);
+ game.addChild(bullet);
+ ammoCount--;
+ updateAmmoDisplay();
+ }
+ };
return self;
});
var ClaimZone = Container.expand(function () {
var self = Container.call(this);
@@ -81,8 +119,20 @@
});
}
startClaimTextAnimation();
self.isClaimed = false;
+ self.hitsRequired = 2;
+ self.currentHits = 0;
+ self.hit = function () {
+ if (!self.isClaimed) {
+ self.currentHits++;
+ claimText.setText('CLAIM (' + self.currentHits + '/' + self.hitsRequired + ')');
+ if (self.currentHits >= self.hitsRequired) {
+ return self.claim();
+ }
+ }
+ return false;
+ };
self.claim = function () {
if (!self.isClaimed) {
self.isClaimed = true;
self.removeChild(zoneGraphics);
@@ -200,8 +250,22 @@
var isUnderAttack = false;
var attackOverlay = null;
var attackCountdown = 0;
var attackCountdownTimer = null;
+// Weapon system
+var bullets = [];
+var ammoCount = 7;
+var maxAmmo = 7;
+// Ammo display
+var ammoTxt = new Text2('Ammo: 7', {
+ size: 50,
+ fill: '#FFFFFF'
+});
+ammoTxt.anchor.set(1, 1);
+LK.gui.bottomRight.addChild(ammoTxt);
+function updateAmmoDisplay() {
+ ammoTxt.setText('Ammo: ' + ammoCount);
+}
// Function to create power up at random location
function createPowerUp() {
var powerUp = new PowerUp();
var powerUpValidPosition = false;
@@ -460,15 +524,19 @@
game.down = function (x, y, obj) {
if (isUnderAttack) {
// Handle attack screen tap
removeAttackScreen();
- // Remove all dogs
+ // Remove all dogs and give ammo reward
for (var d = dogs.length - 1; d >= 0; d--) {
dogs[d].destroy();
+ // Give 2 ammo clips (14 bullets) for killing dog
+ ammoCount = Math.min(ammoCount + 14, maxAmmo * 10); // Allow stacking up to 70 bullets
+ updateAmmoDisplay();
}
dogs = [];
} else {
- character.setTarget(x, y);
+ // Shoot at target location
+ character.shoot(x, y);
}
};
// Main game loop
game.update = function () {
@@ -517,17 +585,65 @@
// Handle attack screen taps
if (isUnderAttack) {
// This will be handled by the down event
}
- // Check for zone claims
+ // Handle bullet collisions and movement
+ for (var b = bullets.length - 1; b >= 0; b--) {
+ var bullet = bullets[b];
+ // Check bullet collision with claim zones
+ var bulletHitZone = false;
+ for (var z = 0; z < claimZones.length; z++) {
+ var zone = claimZones[z];
+ if (!zone.isClaimed) {
+ var bulletZoneDx = bullet.x - zone.x;
+ var bulletZoneDy = bullet.y - zone.y;
+ var bulletZoneDistance = Math.sqrt(bulletZoneDx * bulletZoneDx + bulletZoneDy * bulletZoneDy);
+ if (bulletZoneDistance < 60) {
+ if (zone.hit()) {
+ LK.setScore(LK.getScore() + 1);
+ if (LK.getScore() >= 15) {
+ scoreTxt.setText('Territory: 15 WIN');
+ } else {
+ scoreTxt.setText('Territory: ' + LK.getScore());
+ }
+ LK.getSound('claim').play();
+ // Remove claimed zone
+ claimZones.splice(z, 1);
+ zone.destroy();
+ // Check win condition
+ if (LK.getScore() >= 15) {
+ var currentTime = storage.bestTime || 999999;
+ if (gameTimer < currentTime) {
+ storage.bestTime = gameTimer;
+ }
+ var recordMinutes = Math.floor(storage.bestTime / 60);
+ var recordSeconds = storage.bestTime % 60;
+ var recordTimeString = (recordMinutes < 10 ? '0' : '') + recordMinutes + ':' + (recordSeconds < 10 ? '0' : '') + recordSeconds;
+ LK.showYouWin('Record: ' + recordTimeString);
+ }
+ }
+ bullet.destroy();
+ bullets.splice(b, 1);
+ bulletHitZone = true;
+ break;
+ }
+ }
+ }
+ // Remove bullets that go off screen
+ if (!bulletHitZone && (bullet.x < 0 || bullet.x > 2048 || bullet.y < 0 || bullet.y > 2732)) {
+ bullet.destroy();
+ bullets.splice(b, 1);
+ }
+ }
+ // Check for zone claims (keep original touch-based claiming as backup)
for (var i = claimZones.length - 1; i >= 0; i--) {
var zone = claimZones[i];
if (!zone.isClaimed) {
var dx = character.x - zone.x;
var dy = character.y - zone.y;
var distance = Math.sqrt(dx * dx + dy * dy);
if (distance < 75) {
- if (zone.claim()) {
+ if (zone.hit()) {
LK.setScore(LK.getScore() + 1);
if (LK.getScore() >= 15) {
scoreTxt.setText('Territory: 15 WIN');
} else {