User prompt
düşman askerleri olsun hareket etsinler . ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
silah dürbünj özelliğini kaldır.
User prompt
zoom özelliğini kaldır.
User prompt
oyun ekranını göster.
Code edit (1 edits merged)
Please save this source code
User prompt
Sniper Elite: Precision Strike
Initial prompt
keskin nişancı oyunu olsun .Düşman askerlerini vursun .ekranda zom özelliği olsun.Dürbün olsun.
/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
/****
* Classes
****/
var Enemy = Container.expand(function () {
var self = Container.call(this);
var enemyGraphics = self.attachAsset('enemy', {
anchorX: 0.5,
anchorY: 1.0
});
// Movement properties
self.speed = 1 + Math.random() * 2;
self.direction = (Math.random() - 0.5) * 2;
self.changeDirectionTimer = 0;
self.lastX = 0;
self.lastY = 0;
self.isMoving = false;
// Start initial movement
self.startMovement = function () {
if (self.isMoving) return;
self.isMoving = true;
var targetX = 200 + Math.random() * 3600;
var targetY = self.y + (Math.random() - 0.5) * 200;
targetY = Math.max(1600, Math.min(2200, targetY));
var distance = Math.sqrt(Math.pow(targetX - self.x, 2) + Math.pow(targetY - self.y, 2));
var duration = distance * 20; // Adjust speed by changing multiplier
tween(self, {
x: targetX,
y: targetY
}, {
duration: duration,
easing: tween.linear,
onFinish: function onFinish() {
self.isMoving = false;
// Start next movement after a short delay
LK.setTimeout(function () {
if (self && !self.destroyed) {
self.startMovement();
}
}, 500 + Math.random() * 1500);
}
});
};
self.update = function () {
// Store last position for collision detection
self.lastX = self.x;
self.lastY = self.y;
// Start movement if not already moving
if (!self.isMoving) {
self.startMovement();
}
};
return self;
});
var HitMarker = Container.expand(function () {
var self = Container.call(this);
var markerGraphics = self.attachAsset('hitMarker', {
anchorX: 0.5,
anchorY: 0.5
});
self.timer = 0;
self.lifetime = 60; // 1 second at 60fps
self.update = function () {
self.timer++;
// Fade out over time
markerGraphics.alpha = 1 - self.timer / self.lifetime;
if (self.timer >= self.lifetime) {
self.destroy();
}
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x000000
});
/****
* Game Code
****/
// Game variables
var enemies = [];
var hitMarkers = [];
var battlefield;
var cameraX = 0;
var cameraY = 0;
var targetCameraX = 0;
var targetCameraY = 0;
var score = 0;
// Create battlefield background
battlefield = game.addChild(LK.getAsset('background', {
anchorX: 0.5,
anchorY: 0.5,
x: 2048,
y: 2048
}));
// Create score display
var scoreTxt = new Text2('Score: 0', {
size: 60,
fill: 0xFFFFFF
});
scoreTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreTxt);
scoreTxt.y = 100;
// Spawn initial enemies
for (var i = 0; i < 8; i++) {
var enemy = new Enemy();
enemy.x = 500 + Math.random() * 3000;
enemy.y = 1600 + Math.random() * 600;
enemies.push(enemy);
battlefield.addChild(enemy);
}
// Touch controls
game.down = function (x, y, obj) {
// Convert screen coordinates to battlefield coordinates
var battlefieldPos = battlefield.toLocal({
x: x - game.x,
y: y - game.y
});
// Check for enemy hits
var hit = false;
for (var i = enemies.length - 1; i >= 0; i--) {
var enemy = enemies[i];
var distance = Math.sqrt(Math.pow(battlefieldPos.x - enemy.x, 2) + Math.pow(battlefieldPos.y - enemy.y, 2));
// Hit detection with some tolerance
if (distance < 60) {
// Create hit marker
var hitMarker = new HitMarker();
hitMarker.x = enemy.x;
hitMarker.y = enemy.y;
hitMarkers.push(hitMarker);
battlefield.addChild(hitMarker);
// Remove enemy
enemy.destroy();
enemies.splice(i, 1);
// Update score
score += 10;
LK.setScore(score);
scoreTxt.setText('Score: ' + score);
// Play hit sound
LK.getSound('hit').play();
hit = true;
break;
}
}
if (!hit) {
// Play miss sound
LK.getSound('shoot').play();
}
// Spawn new enemy if less than 8
if (enemies.length < 8) {
var newEnemy = new Enemy();
newEnemy.x = 500 + Math.random() * 3000;
newEnemy.y = 1600 + Math.random() * 600;
enemies.push(newEnemy);
battlefield.addChild(newEnemy);
}
};
// Camera movement with touch
game.move = function (x, y, obj) {
// Update target camera position based on touch
targetCameraX = -(x - 1024) * 2;
targetCameraY = -(y - 1366) * 1.5;
// Clamp camera bounds
targetCameraX = Math.max(-1500, Math.min(1500, targetCameraX));
targetCameraY = Math.max(-800, Math.min(800, targetCameraY));
};
// Game update loop
game.update = function () {
// Smooth camera movement
cameraX += (targetCameraX - cameraX) * 0.1;
cameraY += (targetCameraY - cameraY) * 0.1;
// Apply camera position to battlefield
battlefield.x = 2048 + cameraX;
battlefield.y = 2048 + cameraY;
// Clean up destroyed hit markers
for (var i = hitMarkers.length - 1; i >= 0; i--) {
var marker = hitMarkers[i];
if (marker.timer >= marker.lifetime) {
hitMarkers.splice(i, 1);
}
}
// Win condition
if (score >= 100) {
LK.showYouWin();
}
}; ===================================================================
--- original.js
+++ change.js
@@ -1,5 +1,10 @@
/****
+* Plugins
+****/
+var tween = LK.import("@upit/tween.v1");
+
+/****
* Classes
****/
var Enemy = Container.expand(function () {
var self = Container.call(this);
@@ -12,30 +17,43 @@
self.direction = (Math.random() - 0.5) * 2;
self.changeDirectionTimer = 0;
self.lastX = 0;
self.lastY = 0;
+ self.isMoving = false;
+ // Start initial movement
+ self.startMovement = function () {
+ if (self.isMoving) return;
+ self.isMoving = true;
+ var targetX = 200 + Math.random() * 3600;
+ var targetY = self.y + (Math.random() - 0.5) * 200;
+ targetY = Math.max(1600, Math.min(2200, targetY));
+ var distance = Math.sqrt(Math.pow(targetX - self.x, 2) + Math.pow(targetY - self.y, 2));
+ var duration = distance * 20; // Adjust speed by changing multiplier
+ tween(self, {
+ x: targetX,
+ y: targetY
+ }, {
+ duration: duration,
+ easing: tween.linear,
+ onFinish: function onFinish() {
+ self.isMoving = false;
+ // Start next movement after a short delay
+ LK.setTimeout(function () {
+ if (self && !self.destroyed) {
+ self.startMovement();
+ }
+ }, 500 + Math.random() * 1500);
+ }
+ });
+ };
self.update = function () {
// Store last position for collision detection
self.lastX = self.x;
self.lastY = self.y;
- // Change direction randomly
- self.changeDirectionTimer++;
- if (self.changeDirectionTimer > 180) {
- // Change direction every 3 seconds
- self.direction = (Math.random() - 0.5) * 2;
- self.changeDirectionTimer = 0;
+ // Start movement if not already moving
+ if (!self.isMoving) {
+ self.startMovement();
}
- // Move horizontally
- self.x += self.direction * self.speed;
- // Keep within battlefield bounds
- if (self.x < 200) {
- self.x = 200;
- self.direction = Math.abs(self.direction);
- }
- if (self.x > 3800) {
- self.x = 3800;
- self.direction = -Math.abs(self.direction);
- }
};
return self;
});
var HitMarker = Container.expand(function () {
@@ -91,12 +109,12 @@
scoreTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreTxt);
scoreTxt.y = 100;
// Spawn initial enemies
-for (var i = 0; i < 5; i++) {
+for (var i = 0; i < 8; i++) {
var enemy = new Enemy();
enemy.x = 500 + Math.random() * 3000;
- enemy.y = 1800 + Math.random() * 400;
+ enemy.y = 1600 + Math.random() * 600;
enemies.push(enemy);
battlefield.addChild(enemy);
}
// Touch controls
@@ -135,13 +153,13 @@
if (!hit) {
// Play miss sound
LK.getSound('shoot').play();
}
- // Spawn new enemy if less than 5
- if (enemies.length < 5) {
+ // Spawn new enemy if less than 8
+ if (enemies.length < 8) {
var newEnemy = new Enemy();
newEnemy.x = 500 + Math.random() * 3000;
- newEnemy.y = 1800 + Math.random() * 400;
+ newEnemy.y = 1600 + Math.random() * 600;
enemies.push(newEnemy);
battlefield.addChild(newEnemy);
}
};
hareketli silah. In-Game asset. 2d. High contrast. No shadows
duman. In-Game asset. 2d. High contrast. No shadows
zombie. In-Game asset. 2d. High contrast. No shadows
dinazor. In-Game asset. 2d. High contrast. No shadows
kuş bakışı silahlı kule.. In-Game asset. 2d. High contrast. No shadows
dairesel mevzi.. In-Game asset. 2d. High contrast. No shadows
roket namlusu kuş bakışı ,üstten görünüm.. In-Game asset. 2d. High contrast. No shadows
patlama efekti alev duman. In-Game asset. 2d. High contrast. No shadows