User prompt
Oyunu mobile ve Pc de oynanabilir hale getir
User prompt
Oyuncu varlığı kapak varlığından geçemesin orası duvar şeklinde olsun
User prompt
Düşman varlığı sayısını arttır
User prompt
12 adet kapak varlığı yap ve aralarında boşluk biraz daha fazla olsun rastgele biçimde yerleşilsin
User prompt
Kapak varlığını daha çok kullan ve kapak varlığına mermi geldiğinde merminin yok olması şeklinde ayarla
Code edit (1 edits merged)
Please save this source code
User prompt
Tactical Strike: Elite Ops
Initial prompt
valorant 2 yap
/****
* Plugins
****/
var tween = LK.import("@upit/tween.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.damage = 25;
self.targetX = 0;
self.targetY = 0;
self.directionX = 0;
self.directionY = 0;
self.setTarget = function (x, y) {
self.targetX = x;
self.targetY = y;
var dx = x - self.x;
var dy = y - self.y;
var distance = Math.sqrt(dx * dx + dy * dy);
self.directionX = dx / distance;
self.directionY = dy / distance;
};
self.update = function () {
self.x += self.directionX * self.speed;
self.y += self.directionY * self.speed;
};
return self;
});
var Cover = Container.expand(function () {
var self = Container.call(this);
var coverGraphics = self.attachAsset('cover', {
anchorX: 0.5,
anchorY: 0.5
});
return self;
});
var Enemy = Container.expand(function () {
var self = Container.call(this);
var enemyGraphics = self.attachAsset('enemy', {
anchorX: 0.5,
anchorY: 0.5
});
self.health = 20;
self.speed = 2;
self.damage = 15;
self.lastAttack = 0;
self.attackCooldown = 120; // 2 seconds at 60fps
self.targetX = Math.random() * 2048;
self.targetY = Math.random() * 2732;
self.changeTargetTime = LK.ticks + Math.random() * 180; // Change direction every 1-3 seconds
self.takeDamage = function (damage) {
self.health -= damage;
if (self.health <= 0) {
return true; // enemy died
}
return false;
};
self.update = function () {
// Change movement target periodically
if (LK.ticks > self.changeTargetTime) {
self.targetX = Math.random() * 2048;
self.targetY = Math.random() * 2732;
self.changeTargetTime = LK.ticks + Math.random() * 180;
}
// Move towards target
var dx = self.targetX - self.x;
var dy = self.targetY - self.y;
var distance = Math.sqrt(dx * dx + dy * dy);
if (distance > 10) {
self.x += dx / distance * self.speed;
self.y += dy / distance * self.speed;
}
// Attack player if close enough
var playerDistance = Math.sqrt((player.x - self.x) * (player.x - self.x) + (player.y - self.y) * (player.y - self.y));
if (playerDistance < 200 && LK.ticks - self.lastAttack > self.attackCooldown) {
self.lastAttack = LK.ticks;
var playerDied = player.takeDamage(self.damage);
if (playerDied) {
gameOver = true;
}
LK.getSound('playerHit').play();
LK.effects.flashObject(player, 0xff0000, 500);
}
};
return self;
});
var Player = Container.expand(function () {
var self = Container.call(this);
var playerGraphics = self.attachAsset('player', {
anchorX: 0.5,
anchorY: 0.5
});
self.health = 100;
self.maxHealth = 100;
self.ammo = 30;
self.maxAmmo = 30;
self.lastShot = 0;
self.shootCooldown = 200; // milliseconds
self.ammoRegenTime = 0;
self.ammoRegenDelay = 2000; // 2 seconds
self.takeDamage = function (damage) {
self.health -= damage;
if (self.health <= 0) {
self.health = 0;
return true; // player died
}
return false;
};
self.canShoot = function () {
return self.ammo > 0 && LK.ticks - self.lastShot > self.shootCooldown / 16.67;
};
self.shoot = function () {
if (self.canShoot()) {
self.ammo--;
self.lastShot = LK.ticks;
self.ammoRegenTime = LK.ticks + self.ammoRegenDelay / 16.67;
return true;
}
return false;
};
self.update = function () {
// Regenerate ammo after delay
if (self.ammo < self.maxAmmo && LK.ticks > self.ammoRegenTime) {
if (LK.ticks % 30 === 0) {
// Regenerate every half second
self.ammo++;
}
}
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x2d4a2b
});
/****
* Game Code
****/
var player;
var enemies = [];
var bullets = [];
var covers = [];
var dragNode = null;
var gameOver = false;
var currentWave = 1;
var enemiesKilled = 0;
var waveEnemiesCount = 3;
var waveInProgress = false;
// UI Elements
var healthBarBg = LK.getAsset('healthBar', {
x: 100,
y: 100,
scaleX: 1,
scaleY: 1,
alpha: 0.3
});
var healthBarFill = LK.getAsset('healthBar', {
x: 100,
y: 100,
scaleX: 1,
scaleY: 1
});
var ammoBarBg = LK.getAsset('ammoBar', {
x: 100,
y: 150,
scaleX: 1,
scaleY: 1,
alpha: 0.3
});
var ammoBarFill = LK.getAsset('ammoBar', {
x: 100,
y: 150,
scaleX: 1,
scaleY: 1
});
game.addChild(healthBarBg);
game.addChild(healthBarFill);
game.addChild(ammoBarBg);
game.addChild(ammoBarFill);
var waveText = new Text2('Wave: 1', {
size: 80,
fill: 0xFFFFFF
});
waveText.anchor.set(0.5, 0);
LK.gui.top.addChild(waveText);
var scoreText = new Text2('Score: 0', {
size: 60,
fill: 0xFFFFFF
});
scoreText.anchor.set(1, 0);
LK.gui.topRight.addChild(scoreText);
// Add mobile control hints
var controlHint = new Text2('Drag player to move • Tap to shoot', {
size: 40,
fill: 0xCCCCCC
});
controlHint.anchor.set(0.5, 1);
LK.gui.bottom.addChild(controlHint);
// Position control hint slightly above bottom
controlHint.y = -50;
// Initialize player
player = game.addChild(new Player());
player.x = 1024;
player.y = 2000;
// Create cover objects
for (var i = 0; i < 12; i++) {
var cover = game.addChild(new Cover());
// Create 3 rows of 4 covers with more spacing and random positioning
var row = Math.floor(i / 4);
var col = i % 4;
cover.x = 300 + col * 500 + Math.random() * 150 - 75; // More spacing between columns with random offset
cover.y = 700 + row * 650 + Math.random() * 250 - 125; // More spacing between rows with random offset
covers.push(cover);
}
function spawnWave() {
waveInProgress = true;
var enemiesToSpawn = waveEnemiesCount * 2 + (currentWave - 1) * 2;
for (var i = 0; i < enemiesToSpawn; i++) {
var enemy = game.addChild(new Enemy());
enemy.x = Math.random() * 2048;
enemy.y = Math.random() * 800; // Spawn in upper part of screen
enemy.health += (currentWave - 1) * 5; // Increase health each wave
enemy.speed += (currentWave - 1) * 0.5; // Increase speed each wave
enemies.push(enemy);
}
waveText.setText('Wave: ' + currentWave);
}
function updateUI() {
// Update health bar
var healthPercent = player.health / player.maxHealth;
healthBarFill.scaleX = healthPercent;
// Update ammo bar
var ammoPercent = player.ammo / player.maxAmmo;
ammoBarFill.scaleX = ammoPercent;
// Update score
scoreText.setText('Score: ' + LK.getScore());
}
function handleMove(x, y, obj) {
// Update mouse position for keyboard shooting
mousePosition.x = x;
mousePosition.y = y;
if (dragNode && !gameOver) {
// Store original position
var originalX = dragNode.x;
var originalY = dragNode.y;
// Try to move to new position
dragNode.x = x;
dragNode.y = y;
// Check collision with cover objects
var collisionDetected = false;
for (var i = 0; i < covers.length; i++) {
if (dragNode.intersects(covers[i])) {
collisionDetected = true;
break;
}
}
// Keep player within screen bounds
if (dragNode.x < 87.5 || dragNode.x > 1960.5 || dragNode.y < 87.5 || dragNode.y > 2644.5) {
collisionDetected = true;
}
// If collision detected, revert to original position
if (collisionDetected) {
dragNode.x = originalX;
dragNode.y = originalY;
}
}
}
game.move = handleMove;
// Keyboard state tracking
var keysPressed = {};
var mousePosition = {
x: 1024,
y: 1366
};
// Add keyboard event listeners
LK.on('keydown', function (event) {
keysPressed[event.key.toLowerCase()] = true;
});
LK.on('keyup', function (event) {
keysPressed[event.key.toLowerCase()] = false;
});
// Track mouse position for shooting
LK.on('mousemove', function (event) {
mousePosition.x = event.x;
mousePosition.y = event.y;
});
game.down = function (x, y, obj) {
if (gameOver) return;
// Update mouse position for shooting
mousePosition.x = x;
mousePosition.y = y;
// Check if clicking on player for dragging
var playerDistance = Math.sqrt((player.x - x) * (player.x - x) + (player.y - y) * (player.y - y));
if (playerDistance < 50) {
dragNode = player;
handleMove(x, y, obj);
} else {
// Shoot at clicked location
if (player.shoot()) {
var bullet = game.addChild(new Bullet());
bullet.x = player.x;
bullet.y = player.y;
bullet.setTarget(x, y);
bullets.push(bullet);
LK.getSound('shoot').play();
}
}
};
game.up = function (x, y, obj) {
dragNode = null;
};
// Start first wave
spawnWave();
game.update = function () {
if (gameOver) return;
// Handle keyboard movement (WASD)
var moveSpeed = 8;
var originalX = player.x;
var originalY = player.y;
var moved = false;
if (keysPressed['w'] || keysPressed['arrowup']) {
player.y -= moveSpeed;
moved = true;
}
if (keysPressed['s'] || keysPressed['arrowdown']) {
player.y += moveSpeed;
moved = true;
}
if (keysPressed['a'] || keysPressed['arrowleft']) {
player.x -= moveSpeed;
moved = true;
}
if (keysPressed['d'] || keysPressed['arrowright']) {
player.x += moveSpeed;
moved = true;
}
// Check collision with cover objects if player moved
if (moved) {
var collisionDetected = false;
for (var i = 0; i < covers.length; i++) {
if (player.intersects(covers[i])) {
collisionDetected = true;
break;
}
}
// Keep player within screen bounds
if (player.x < 87.5 || player.x > 1960.5 || player.y < 87.5 || player.y > 2644.5) {
collisionDetected = true;
}
// If collision detected, revert to original position
if (collisionDetected) {
player.x = originalX;
player.y = originalY;
}
}
// Handle keyboard shooting (spacebar)
if (keysPressed[' '] && player.canShoot()) {
if (player.shoot()) {
var bullet = game.addChild(new Bullet());
bullet.x = player.x;
bullet.y = player.y;
bullet.setTarget(mousePosition.x, mousePosition.y);
bullets.push(bullet);
LK.getSound('shoot').play();
}
}
// Update bullets
for (var i = bullets.length - 1; i >= 0; i--) {
var bullet = bullets[i];
// Check if bullet is off screen
if (bullet.x < -50 || bullet.x > 2098 || bullet.y < -50 || bullet.y > 2782) {
bullet.destroy();
bullets.splice(i, 1);
continue;
}
// Check bullet-enemy collisions
var bulletHit = false;
for (var j = enemies.length - 1; j >= 0; j--) {
var enemy = enemies[j];
if (bullet.intersects(enemy)) {
var enemyDied = enemy.takeDamage(bullet.damage);
if (enemyDied) {
LK.setScore(LK.getScore() + 10);
enemiesKilled++;
LK.effects.flashObject(enemy, 0xffffff, 300);
enemy.destroy();
enemies.splice(j, 1);
}
LK.getSound('enemyHit').play();
bullet.destroy();
bullets.splice(i, 1);
bulletHit = true;
break;
}
}
if (bulletHit) continue;
// Check bullet-cover collisions
for (var k = covers.length - 1; k >= 0; k--) {
var cover = covers[k];
if (bullet.intersects(cover)) {
bullet.destroy();
bullets.splice(i, 1);
bulletHit = true;
break;
}
}
if (bulletHit) continue;
}
// Check if wave is complete
if (waveInProgress && enemies.length === 0) {
waveInProgress = false;
currentWave++;
// Restore some health and ammo between waves
player.health = Math.min(player.maxHealth, player.health + 20);
player.ammo = Math.min(player.maxAmmo, player.ammo + 10);
// Start next wave after delay
LK.setTimeout(function () {
if (!gameOver) {
spawnWave();
}
}, 2000);
}
// Check for game over conditions
if (player.health <= 0) {
gameOver = true;
LK.showGameOver();
}
// Check for win condition (survive 10 waves)
if (currentWave > 10 && enemies.length === 0) {
LK.showYouWin();
}
updateUI();
}; ===================================================================
--- original.js
+++ change.js
@@ -199,8 +199,17 @@
fill: 0xFFFFFF
});
scoreText.anchor.set(1, 0);
LK.gui.topRight.addChild(scoreText);
+// Add mobile control hints
+var controlHint = new Text2('Drag player to move • Tap to shoot', {
+ size: 40,
+ fill: 0xCCCCCC
+});
+controlHint.anchor.set(0.5, 1);
+LK.gui.bottom.addChild(controlHint);
+// Position control hint slightly above bottom
+controlHint.y = -50;
// Initialize player
player = game.addChild(new Player());
player.x = 1024;
player.y = 2000;
@@ -237,8 +246,11 @@
// Update score
scoreText.setText('Score: ' + LK.getScore());
}
function handleMove(x, y, obj) {
+ // Update mouse position for keyboard shooting
+ mousePosition.x = x;
+ mousePosition.y = y;
if (dragNode && !gameOver) {
// Store original position
var originalX = dragNode.x;
var originalY = dragNode.y;
@@ -252,18 +264,43 @@
collisionDetected = true;
break;
}
}
+ // Keep player within screen bounds
+ if (dragNode.x < 87.5 || dragNode.x > 1960.5 || dragNode.y < 87.5 || dragNode.y > 2644.5) {
+ collisionDetected = true;
+ }
// If collision detected, revert to original position
if (collisionDetected) {
dragNode.x = originalX;
dragNode.y = originalY;
}
}
}
game.move = handleMove;
+// Keyboard state tracking
+var keysPressed = {};
+var mousePosition = {
+ x: 1024,
+ y: 1366
+};
+// Add keyboard event listeners
+LK.on('keydown', function (event) {
+ keysPressed[event.key.toLowerCase()] = true;
+});
+LK.on('keyup', function (event) {
+ keysPressed[event.key.toLowerCase()] = false;
+});
+// Track mouse position for shooting
+LK.on('mousemove', function (event) {
+ mousePosition.x = event.x;
+ mousePosition.y = event.y;
+});
game.down = function (x, y, obj) {
if (gameOver) return;
+ // Update mouse position for shooting
+ mousePosition.x = x;
+ mousePosition.y = y;
// Check if clicking on player for dragging
var playerDistance = Math.sqrt((player.x - x) * (player.x - x) + (player.y - y) * (player.y - y));
if (playerDistance < 50) {
dragNode = player;
@@ -286,8 +323,59 @@
// Start first wave
spawnWave();
game.update = function () {
if (gameOver) return;
+ // Handle keyboard movement (WASD)
+ var moveSpeed = 8;
+ var originalX = player.x;
+ var originalY = player.y;
+ var moved = false;
+ if (keysPressed['w'] || keysPressed['arrowup']) {
+ player.y -= moveSpeed;
+ moved = true;
+ }
+ if (keysPressed['s'] || keysPressed['arrowdown']) {
+ player.y += moveSpeed;
+ moved = true;
+ }
+ if (keysPressed['a'] || keysPressed['arrowleft']) {
+ player.x -= moveSpeed;
+ moved = true;
+ }
+ if (keysPressed['d'] || keysPressed['arrowright']) {
+ player.x += moveSpeed;
+ moved = true;
+ }
+ // Check collision with cover objects if player moved
+ if (moved) {
+ var collisionDetected = false;
+ for (var i = 0; i < covers.length; i++) {
+ if (player.intersects(covers[i])) {
+ collisionDetected = true;
+ break;
+ }
+ }
+ // Keep player within screen bounds
+ if (player.x < 87.5 || player.x > 1960.5 || player.y < 87.5 || player.y > 2644.5) {
+ collisionDetected = true;
+ }
+ // If collision detected, revert to original position
+ if (collisionDetected) {
+ player.x = originalX;
+ player.y = originalY;
+ }
+ }
+ // Handle keyboard shooting (spacebar)
+ if (keysPressed[' '] && player.canShoot()) {
+ if (player.shoot()) {
+ var bullet = game.addChild(new Bullet());
+ bullet.x = player.x;
+ bullet.y = player.y;
+ bullet.setTarget(mousePosition.x, mousePosition.y);
+ bullets.push(bullet);
+ LK.getSound('shoot').play();
+ }
+ }
// Update bullets
for (var i = bullets.length - 1; i >= 0; i--) {
var bullet = bullets[i];
// Check if bullet is off screen