User prompt
50 mermi veren kutular spavnlansın 100 puandan sonra spavnlansın raskele yerlerde
User prompt
Oyun başladığında 1 seviyeli silah daha kolay çıksın 2 seviyeli silah 500 puandan sonra çıksın 3 seviyeli silah ise 1000 puandan sonra çıksın hareket tuşlarına asset ekle
User prompt
Yön tuşlarını 200 × 200 yap ve düşmanlar seviye arttıkça daha fazla puan versin
User prompt
Yerde nadiren saha güçlü silahlar oluşsun onları alıp düşmana ateş edildiğimde daha fazla ateş hasar versin 3 tane silah oluşsun 1 ci silah 1 süviye 2ci silah 2 süviye 3cü silah 3 seviye olsun ve her seviyede daha fazla can alsın karakter yerden silahları alsın ve yeni silahla ateş etsin 2 seviye silah alındığında artık 1seviye silah oluşmasın ve alınamasın 3 seviye silah alındığında 1 ve 2 seviye silahlar oluşmasın ve alınamasın
User prompt
Ok butonlarını 100 × 100 yap
User prompt
Ok tuşlarını büyüt her düşman oldüyünde 10 puan artsın
Code edit (1 edits merged)
Please save this source code
User prompt
Battle Arena Survivor
Initial prompt
Bana bir silah oyunu yap karakter olaun karakter sağa sola ileri ve geri hareket ettiren ol tuşları olsun oyun yatay şekilde oynansın karakterin silahı olsun düşmanlar olsun karaktere saldırsın 10 seviye düşmanlar olsun 1 dün 10 kadar süviyeli düşmanlar olsun her 10 puanda düşman 1 seviye atlasın ve güçlensin 1 seviye düşman 1 mermide ölsün 2 seviye düşman 2 mermide 3 seviye düşman 3 mermide 4 seviye düşman 5 mermide 6 seviye düşman 6 mermide 7 seviye düşman 8 mermide 8 seviye düşman 9 mermide 9 seviye düşman 10 mermide 10 seviye düşman 15 mermide ölsün karakter dokunulan yere ateş etsin yerlerde raskele oluşan can arttırıcı bandajlar ve silah mermileri olsun karakterin canı 100 olsun her seviye artdıkdadüşmanda karaktere ateş etmesi daha fazla can alsın puan barı olsun oyun bittiğinde puan ekranda yazsın
/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
/****
* Classes
****/
var AmmoPack = Container.expand(function () {
var self = Container.call(this);
var graphics = self.attachAsset('ammoPack', {
anchorX: 0.5,
anchorY: 0.5
});
self.ammoAmount = 10;
return self;
});
var Bullet = Container.expand(function () {
var self = Container.call(this);
var graphics = self.attachAsset('bullet', {
anchorX: 0.5,
anchorY: 0.5
});
self.velocityX = 0;
self.velocityY = 0;
self.speed = 12;
self.damage = 1;
self.setDirection = function (targetX, targetY) {
var dx = targetX - self.x;
var dy = targetY - self.y;
var distance = Math.sqrt(dx * dx + dy * dy);
if (distance > 0) {
self.velocityX = dx / distance * self.speed;
self.velocityY = dy / distance * self.speed;
}
};
self.update = function () {
self.x += self.velocityX;
self.y += self.velocityY;
};
return self;
});
var Enemy = Container.expand(function () {
var self = Container.call(this);
var graphics = self.attachAsset('enemy', {
anchorX: 0.5,
anchorY: 0.5
});
self.level = 1;
self.health = 1;
self.maxHealth = 1;
self.speed = 2;
self.damage = 1;
self.lastAttackTime = 0;
self.attackCooldown = 2000; // 2 seconds between attacks
self.setLevel = function (level) {
self.level = level;
if (level <= 9) {
self.health = level;
self.maxHealth = level;
} else {
self.health = 15;
self.maxHealth = 15;
}
self.damage = level;
self.speed = 2 + level * 0.3;
// Visual scaling based on level
var scale = 1 + level * 0.1;
graphics.scaleX = scale;
graphics.scaleY = scale;
};
self.takeDamage = function (damage) {
damage = damage || 1;
self.health -= damage;
// Flash white when hit
tween(graphics, {
tint: 0xFFFFFF
}, {
duration: 100,
onFinish: function onFinish() {
tween(graphics, {
tint: 0xFFFFFF
}, {
duration: 100
});
}
});
return self.health <= 0;
};
self.update = function () {
if (!player) return;
// Move towards player
var dx = player.x - self.x;
var dy = player.y - self.y;
var distance = Math.sqrt(dx * dx + dy * dy);
if (distance > 0) {
self.x += dx / distance * self.speed;
self.y += dy / distance * self.speed;
}
// Attack player if close enough and cooldown is ready
if (distance < 50 && Date.now() - self.lastAttackTime > self.attackCooldown) {
player.takeDamage(self.damage);
self.lastAttackTime = Date.now();
}
};
return self;
});
var HealthPack = Container.expand(function () {
var self = Container.call(this);
var graphics = self.attachAsset('healthPack', {
anchorX: 0.5,
anchorY: 0.5
});
self.healAmount = 25;
return self;
});
var Player = Container.expand(function () {
var self = Container.call(this);
var graphics = self.attachAsset('player', {
anchorX: 0.5,
anchorY: 0.5
});
self.health = 100;
self.maxHealth = 100;
self.speed = 8;
self.ammo = 30;
self.weaponLevel = 1;
self.weaponDamage = 1;
self.takeDamage = function (damage) {
self.health -= damage;
if (self.health < 0) self.health = 0;
// Flash red when taking damage
tween(graphics, {
tint: 0xFF0000
}, {
duration: 100,
onFinish: function onFinish() {
tween(graphics, {
tint: 0xFFFFFF
}, {
duration: 100
});
}
});
};
self.heal = function (amount) {
self.health += amount;
if (self.health > self.maxHealth) self.health = self.maxHealth;
// Flash green when healing
tween(graphics, {
tint: 0x00FF00
}, {
duration: 200,
onFinish: function onFinish() {
tween(graphics, {
tint: 0xFFFFFF
}, {
duration: 200
});
}
});
};
self.addAmmo = function (amount) {
self.ammo += amount;
// Flash blue when getting ammo
tween(graphics, {
tint: 0x0000FF
}, {
duration: 200,
onFinish: function onFinish() {
tween(graphics, {
tint: 0xFFFFFF
}, {
duration: 200
});
}
});
};
self.upgradeWeapon = function (newLevel) {
if (newLevel > self.weaponLevel) {
self.weaponLevel = newLevel;
self.weaponDamage = newLevel;
// Flash gold when upgrading weapon
tween(graphics, {
tint: 0xFFD700
}, {
duration: 300,
onFinish: function onFinish() {
tween(graphics, {
tint: 0xFFFFFF
}, {
duration: 300
});
}
});
}
};
return self;
});
var WeaponPickup = Container.expand(function () {
var self = Container.call(this);
self.weaponLevel = 1;
self.damage = 1;
var graphics;
self.setWeaponLevel = function (level) {
self.weaponLevel = level;
self.damage = level;
// Remove old graphics if exists
if (graphics) {
self.removeChild(graphics);
}
// Add new graphics based on level
var assetName = 'weapon' + level;
graphics = self.attachAsset(assetName, {
anchorX: 0.5,
anchorY: 0.5
});
// Different colors for different levels
var colors = [0xFFFFFF, 0x00FF00, 0x0080FF, 0xFF00FF];
graphics.tint = colors[level] || 0xFFFFFF;
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x2E7D32
});
/****
* Game Code
****/
var player;
var enemies = [];
var bullets = [];
var healthPacks = [];
var ammoPacks = [];
var weaponPickups = [];
var currentEnemyLevel = 1;
var lastEnemySpawn = 0;
var enemySpawnRate = 2000; // 2 seconds
var lastHealthPackSpawn = 0;
var healthPackSpawnRate = 8000; // 8 seconds
var lastAmmoPackSpawn = 0;
var ammoPackSpawnRate = 6000; // 6 seconds
var lastWeaponSpawn = 0;
var weaponSpawnRate = 15000; // 15 seconds for rare weapon spawns
var moveDirection = {
x: 0,
y: 0
};
// Create player
player = game.addChild(new Player());
player.x = 2048 / 2;
player.y = 2732 / 2;
// UI Elements
var healthText = new Text2('Health: 100', {
size: 60,
fill: 0xFF4081
});
healthText.anchor.set(0, 0);
LK.gui.topLeft.addChild(healthText);
healthText.x = 120; // Avoid platform menu
var ammoText = new Text2('Ammo: 30', {
size: 60,
fill: 0x2196F3
});
ammoText.anchor.set(0, 0);
LK.gui.topLeft.addChild(ammoText);
ammoText.x = 120; // Avoid platform menu
ammoText.y = 80;
var scoreText = new Text2('Score: 0', {
size: 60,
fill: 0xFFEB3B
});
scoreText.anchor.set(1, 0);
LK.gui.topRight.addChild(scoreText);
var levelText = new Text2('Enemy Level: 1', {
size: 60,
fill: 0xFF5722
});
levelText.anchor.set(1, 0);
LK.gui.topRight.addChild(levelText);
levelText.y = 80;
var weaponText = new Text2('Weapon: Lv1', {
size: 60,
fill: 0x9C27B0
});
weaponText.anchor.set(1, 0);
LK.gui.topRight.addChild(weaponText);
weaponText.y = 160;
// Movement controls
var moveUpButton = LK.getAsset('player', {
anchorX: 0.5,
anchorY: 0.5,
width: 100,
scaleY: 0.6,
alpha: 0.5
});
game.addChild(moveUpButton);
moveUpButton.x = 200;
moveUpButton.y = 2732 - 400;
var moveDownButton = LK.getAsset('player', {
anchorX: 0.5,
anchorY: 0.5,
width: 100,
scaleY: 0.6,
alpha: 0.5
});
game.addChild(moveDownButton);
moveDownButton.x = 200;
moveDownButton.y = 2732 - 200;
var moveLeftButton = LK.getAsset('player', {
anchorX: 0.5,
anchorY: 0.5,
width: 100,
scaleY: 1.2,
alpha: 0.5
});
game.addChild(moveLeftButton);
moveLeftButton.x = 100;
moveLeftButton.y = 2732 - 300;
var moveRightButton = LK.getAsset('player', {
anchorX: 0.5,
anchorY: 0.5,
width: 100,
scaleY: 1.2,
alpha: 0.5
});
game.addChild(moveRightButton);
moveRightButton.x = 300;
moveRightButton.y = 2732 - 300;
// Control handlers
moveUpButton.down = function () {
moveDirection.y = -1;
};
moveUpButton.up = function () {
moveDirection.y = 0;
};
moveDownButton.down = function () {
moveDirection.y = 1;
};
moveDownButton.up = function () {
moveDirection.y = 0;
};
moveLeftButton.down = function () {
moveDirection.x = -1;
};
moveLeftButton.up = function () {
moveDirection.x = 0;
};
moveRightButton.down = function () {
moveDirection.x = 1;
};
moveRightButton.up = function () {
moveDirection.x = 0;
};
// Shooting
game.down = function (x, y) {
if (player.ammo <= 0) return;
// Don't shoot if touching movement controls
if (x < 400 && y > 2732 - 500) return;
var bullet = new Bullet();
bullet.x = player.x;
bullet.y = player.y;
bullet.damage = player.weaponDamage;
bullet.setDirection(x, y);
bullets.push(bullet);
game.addChild(bullet);
player.ammo--;
LK.getSound('shoot').play();
};
function spawnEnemy() {
var enemy = new Enemy();
enemy.setLevel(currentEnemyLevel);
// Spawn at random edge of screen
var side = Math.floor(Math.random() * 4);
switch (side) {
case 0:
// Top
enemy.x = Math.random() * 2048;
enemy.y = -50;
break;
case 1:
// Right
enemy.x = 2048 + 50;
enemy.y = Math.random() * 2732;
break;
case 2:
// Bottom
enemy.x = Math.random() * 2048;
enemy.y = 2732 + 50;
break;
case 3:
// Left
enemy.x = -50;
enemy.y = Math.random() * 2732;
break;
}
enemies.push(enemy);
game.addChild(enemy);
}
function spawnHealthPack() {
var healthPack = new HealthPack();
healthPack.x = Math.random() * (2048 - 100) + 50;
healthPack.y = Math.random() * (2732 - 100) + 50;
healthPacks.push(healthPack);
game.addChild(healthPack);
}
function spawnAmmoPack() {
var ammoPack = new AmmoPack();
ammoPack.x = Math.random() * (2048 - 100) + 50;
ammoPack.y = Math.random() * (2732 - 100) + 50;
ammoPacks.push(ammoPack);
game.addChild(ammoPack);
}
function spawnWeapon() {
// Don't spawn weapons lower than player's current level
var maxLevel = 3;
var minLevel = player.weaponLevel + 1;
if (minLevel > maxLevel) return; // Player already has max weapon
var weaponLevel = Math.floor(Math.random() * (maxLevel - minLevel + 1)) + minLevel;
var weapon = new WeaponPickup();
weapon.setWeaponLevel(weaponLevel);
weapon.x = Math.random() * (2048 - 100) + 50;
weapon.y = Math.random() * (2732 - 100) + 50;
weaponPickups.push(weapon);
game.addChild(weapon);
}
game.update = function () {
var now = Date.now();
// Update enemy level based on score
var newLevel = Math.floor(LK.getScore() / 100) + 1;
if (newLevel > 10) newLevel = 10;
if (newLevel !== currentEnemyLevel) {
currentEnemyLevel = newLevel;
levelText.setText('Enemy Level: ' + currentEnemyLevel);
}
// Player movement
if (moveDirection.x !== 0 || moveDirection.y !== 0) {
var newX = player.x + moveDirection.x * player.speed;
var newY = player.y + moveDirection.y * player.speed;
// Keep player on screen
if (newX >= 40 && newX <= 2048 - 40) player.x = newX;
if (newY >= 40 && newY <= 2732 - 40) player.y = newY;
}
// Spawn enemies
if (now - lastEnemySpawn > enemySpawnRate) {
spawnEnemy();
lastEnemySpawn = now;
}
// Spawn health packs
if (now - lastHealthPackSpawn > healthPackSpawnRate) {
spawnHealthPack();
lastHealthPackSpawn = now;
}
// Spawn ammo packs
if (now - lastAmmoPackSpawn > ammoPackSpawnRate) {
spawnAmmoPack();
lastAmmoPackSpawn = now;
}
// Spawn weapons (rare)
if (now - lastWeaponSpawn > weaponSpawnRate) {
spawnWeapon();
lastWeaponSpawn = now;
}
// Update bullets
for (var i = bullets.length - 1; i >= 0; i--) {
var bullet = bullets[i];
// Remove off-screen bullets
if (bullet.x < -50 || bullet.x > 2048 + 50 || bullet.y < -50 || bullet.y > 2732 + 50) {
bullet.destroy();
bullets.splice(i, 1);
continue;
}
// Check bullet-enemy collisions
for (var j = enemies.length - 1; j >= 0; j--) {
var enemy = enemies[j];
if (bullet.intersects(enemy)) {
if (enemy.takeDamage(bullet.damage)) {
// Enemy destroyed
LK.setScore(LK.getScore() + 10);
scoreText.setText('Score: ' + LK.getScore());
enemy.destroy();
enemies.splice(j, 1);
}
LK.getSound('enemyHit').play();
bullet.destroy();
bullets.splice(i, 1);
break;
}
}
}
// Check player-health pack collisions
for (var i = healthPacks.length - 1; i >= 0; i--) {
var healthPack = healthPacks[i];
if (player.intersects(healthPack)) {
player.heal(healthPack.healAmount);
LK.getSound('pickup').play();
healthPack.destroy();
healthPacks.splice(i, 1);
}
}
// Check player-ammo pack collisions
for (var i = ammoPacks.length - 1; i >= 0; i--) {
var ammoPack = ammoPacks[i];
if (player.intersects(ammoPack)) {
player.addAmmo(ammoPack.ammoAmount);
LK.getSound('pickup').play();
ammoPack.destroy();
ammoPacks.splice(i, 1);
}
}
// Check player-weapon pickup collisions
for (var i = weaponPickups.length - 1; i >= 0; i--) {
var weaponPickup = weaponPickups[i];
if (player.intersects(weaponPickup)) {
player.upgradeWeapon(weaponPickup.weaponLevel);
LK.getSound('pickup').play();
weaponPickup.destroy();
weaponPickups.splice(i, 1);
}
}
// Update UI
healthText.setText('Health: ' + player.health);
ammoText.setText('Ammo: ' + player.ammo);
weaponText.setText('Weapon: Lv' + player.weaponLevel);
// Check game over
if (player.health <= 0) {
LK.showGameOver();
}
}; ===================================================================
--- original.js
+++ change.js
@@ -23,8 +23,9 @@
});
self.velocityX = 0;
self.velocityY = 0;
self.speed = 12;
+ self.damage = 1;
self.setDirection = function (targetX, targetY) {
var dx = targetX - self.x;
var dy = targetY - self.y;
var distance = Math.sqrt(dx * dx + dy * dy);
@@ -67,10 +68,11 @@
var scale = 1 + level * 0.1;
graphics.scaleX = scale;
graphics.scaleY = scale;
};
- self.takeDamage = function () {
- self.health--;
+ self.takeDamage = function (damage) {
+ damage = damage || 1;
+ self.health -= damage;
// Flash white when hit
tween(graphics, {
tint: 0xFFFFFF
}, {
@@ -121,8 +123,10 @@
self.health = 100;
self.maxHealth = 100;
self.speed = 8;
self.ammo = 30;
+ self.weaponLevel = 1;
+ self.weaponDamage = 1;
self.takeDamage = function (damage) {
self.health -= damage;
if (self.health < 0) self.health = 0;
// Flash red when taking damage
@@ -171,10 +175,53 @@
});
}
});
};
+ self.upgradeWeapon = function (newLevel) {
+ if (newLevel > self.weaponLevel) {
+ self.weaponLevel = newLevel;
+ self.weaponDamage = newLevel;
+ // Flash gold when upgrading weapon
+ tween(graphics, {
+ tint: 0xFFD700
+ }, {
+ duration: 300,
+ onFinish: function onFinish() {
+ tween(graphics, {
+ tint: 0xFFFFFF
+ }, {
+ duration: 300
+ });
+ }
+ });
+ }
+ };
return self;
});
+var WeaponPickup = Container.expand(function () {
+ var self = Container.call(this);
+ self.weaponLevel = 1;
+ self.damage = 1;
+ var graphics;
+ self.setWeaponLevel = function (level) {
+ self.weaponLevel = level;
+ self.damage = level;
+ // Remove old graphics if exists
+ if (graphics) {
+ self.removeChild(graphics);
+ }
+ // Add new graphics based on level
+ var assetName = 'weapon' + level;
+ graphics = self.attachAsset(assetName, {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ // Different colors for different levels
+ var colors = [0xFFFFFF, 0x00FF00, 0x0080FF, 0xFF00FF];
+ graphics.tint = colors[level] || 0xFFFFFF;
+ };
+ return self;
+});
/****
* Initialize Game
****/
@@ -189,15 +236,18 @@
var enemies = [];
var bullets = [];
var healthPacks = [];
var ammoPacks = [];
+var weaponPickups = [];
var currentEnemyLevel = 1;
var lastEnemySpawn = 0;
var enemySpawnRate = 2000; // 2 seconds
var lastHealthPackSpawn = 0;
var healthPackSpawnRate = 8000; // 8 seconds
var lastAmmoPackSpawn = 0;
var ammoPackSpawnRate = 6000; // 6 seconds
+var lastWeaponSpawn = 0;
+var weaponSpawnRate = 15000; // 15 seconds for rare weapon spawns
var moveDirection = {
x: 0,
y: 0
};
@@ -233,8 +283,15 @@
});
levelText.anchor.set(1, 0);
LK.gui.topRight.addChild(levelText);
levelText.y = 80;
+var weaponText = new Text2('Weapon: Lv1', {
+ size: 60,
+ fill: 0x9C27B0
+});
+weaponText.anchor.set(1, 0);
+LK.gui.topRight.addChild(weaponText);
+weaponText.y = 160;
// Movement controls
var moveUpButton = LK.getAsset('player', {
anchorX: 0.5,
anchorY: 0.5,
@@ -307,8 +364,9 @@
if (x < 400 && y > 2732 - 500) return;
var bullet = new Bullet();
bullet.x = player.x;
bullet.y = player.y;
+ bullet.damage = player.weaponDamage;
bullet.setDirection(x, y);
bullets.push(bullet);
game.addChild(bullet);
player.ammo--;
@@ -357,8 +415,21 @@
ammoPack.y = Math.random() * (2732 - 100) + 50;
ammoPacks.push(ammoPack);
game.addChild(ammoPack);
}
+function spawnWeapon() {
+ // Don't spawn weapons lower than player's current level
+ var maxLevel = 3;
+ var minLevel = player.weaponLevel + 1;
+ if (minLevel > maxLevel) return; // Player already has max weapon
+ var weaponLevel = Math.floor(Math.random() * (maxLevel - minLevel + 1)) + minLevel;
+ var weapon = new WeaponPickup();
+ weapon.setWeaponLevel(weaponLevel);
+ weapon.x = Math.random() * (2048 - 100) + 50;
+ weapon.y = Math.random() * (2732 - 100) + 50;
+ weaponPickups.push(weapon);
+ game.addChild(weapon);
+}
game.update = function () {
var now = Date.now();
// Update enemy level based on score
var newLevel = Math.floor(LK.getScore() / 100) + 1;
@@ -389,8 +460,13 @@
if (now - lastAmmoPackSpawn > ammoPackSpawnRate) {
spawnAmmoPack();
lastAmmoPackSpawn = now;
}
+ // Spawn weapons (rare)
+ if (now - lastWeaponSpawn > weaponSpawnRate) {
+ spawnWeapon();
+ lastWeaponSpawn = now;
+ }
// Update bullets
for (var i = bullets.length - 1; i >= 0; i--) {
var bullet = bullets[i];
// Remove off-screen bullets
@@ -402,9 +478,9 @@
// Check bullet-enemy collisions
for (var j = enemies.length - 1; j >= 0; j--) {
var enemy = enemies[j];
if (bullet.intersects(enemy)) {
- if (enemy.takeDamage()) {
+ if (enemy.takeDamage(bullet.damage)) {
// Enemy destroyed
LK.setScore(LK.getScore() + 10);
scoreText.setText('Score: ' + LK.getScore());
enemy.destroy();
@@ -436,11 +512,22 @@
ammoPack.destroy();
ammoPacks.splice(i, 1);
}
}
+ // Check player-weapon pickup collisions
+ for (var i = weaponPickups.length - 1; i >= 0; i--) {
+ var weaponPickup = weaponPickups[i];
+ if (player.intersects(weaponPickup)) {
+ player.upgradeWeapon(weaponPickup.weaponLevel);
+ LK.getSound('pickup').play();
+ weaponPickup.destroy();
+ weaponPickups.splice(i, 1);
+ }
+ }
// Update UI
healthText.setText('Health: ' + player.health);
ammoText.setText('Ammo: ' + player.ammo);
+ weaponText.setText('Weapon: Lv' + player.weaponLevel);
// Check game over
if (player.health <= 0) {
LK.showGameOver();
}