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);
// 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) {
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;
}
}
// If collision detected, revert to original position
if (collisionDetected) {
dragNode.x = originalX;
dragNode.y = originalY;
}
}
}
game.move = handleMove;
game.down = function (x, y, obj) {
if (gameOver) return;
// 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;
// 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
@@ -238,10 +238,27 @@
scoreText.setText('Score: ' + LK.getScore());
}
function handleMove(x, y, obj) {
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;
+ }
+ }
+ // If collision detected, revert to original position
+ if (collisionDetected) {
+ dragNode.x = originalX;
+ dragNode.y = originalY;
+ }
}
}
game.move = handleMove;
game.down = function (x, y, obj) {