User prompt
Please fix the bug: 'TypeError: tween.to is not a function' in or related to this line: 'tween(game, {' Line Number: 217
User prompt
Please fix the bug: 'Uncaught TypeError: tween.to is not a function' in or related to this line: 'tween.to(self, {' Line Number: 252 ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
gerçekçi olsun
User prompt
Please fix the bug: 'TypeError: Cannot set properties of undefined (setting 'fill')' in or related to this line: 'zoneText.style.fill = "#00FF00";' Line Number: 310
Code edit (1 edits merged)
Please save this source code
User prompt
Battle Royale Survivor
Initial prompt
merhaba ba pubg benzer oyun yap
/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
/****
* Classes
****/
var Ammo = Container.expand(function () {
var self = Container.call(this);
var graphics = self.attachAsset('ammo', {
anchorX: 0.5,
anchorY: 0.5
});
self.amount = 20;
return self;
});
var Bullet = Container.expand(function () {
var self = Container.call(this);
var graphics = self.attachAsset('bullet', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 15;
self.direction = {
x: 0,
y: 0
};
self.range = 800;
self.traveled = 0;
self.update = function () {
self.x += self.direction.x * self.speed;
self.y += self.direction.y * self.speed;
self.traveled += self.speed;
if (self.traveled >= self.range || self.x < 0 || self.x > 2048 || self.y < 0 || self.y > 2732) {
self.remove();
}
};
self.remove = function () {
if (self.parent) {
self.parent.removeChild(self);
}
var index = bullets.indexOf(self);
if (index > -1) {
bullets.splice(index, 1);
}
};
return self;
});
var Enemy = Container.expand(function () {
var self = Container.call(this);
var graphics = self.attachAsset('enemy', {
anchorX: 0.5,
anchorY: 0.5
});
self.health = 60;
self.speed = 4;
self.shootCooldown = 0;
self.lastShot = 0;
self.lastPlayerX = 0;
self.lastPlayerY = 0;
self.takeDamage = function (damage) {
self.health -= damage;
LK.effects.flashObject(self, 0xFF0000, 200);
if (self.health <= 0) {
self.destroy();
}
};
self.destroy = function () {
if (self.parent) {
self.parent.removeChild(self);
}
var index = enemies.indexOf(self);
if (index > -1) {
enemies.splice(index, 1);
}
// Increase score
LK.setScore(LK.getScore() + 10);
updateUI();
};
self.update = function () {
// 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 > 100) {
var moveX = dx / distance * self.speed;
var moveY = dy / distance * self.speed;
self.x += moveX;
self.y += moveY;
}
// Shoot at player
if (distance < 400 && self.shootCooldown <= 0) {
var bullet = new EnemyBullet();
bullet.x = self.x;
bullet.y = self.y;
bullet.direction.x = dx / distance;
bullet.direction.y = dy / distance;
enemyBullets.push(bullet);
game.addChild(bullet);
self.shootCooldown = 60; // 1 second at 60fps
}
if (self.shootCooldown > 0) {
self.shootCooldown--;
}
// Keep enemy in bounds
self.x = Math.max(50, Math.min(1998, self.x));
self.y = Math.max(50, Math.min(2682, self.y));
};
return self;
});
var EnemyBullet = Container.expand(function () {
var self = Container.call(this);
var graphics = self.attachAsset('enemyBullet', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 12;
self.direction = {
x: 0,
y: 0
};
self.range = 600;
self.traveled = 0;
self.update = function () {
self.x += self.direction.x * self.speed;
self.y += self.direction.y * self.speed;
self.traveled += self.speed;
if (self.traveled >= self.range || self.x < 0 || self.x > 2048 || self.y < 0 || self.y > 2732) {
self.remove();
}
};
self.remove = function () {
if (self.parent) {
self.parent.removeChild(self);
}
var index = enemyBullets.indexOf(self);
if (index > -1) {
enemyBullets.splice(index, 1);
}
};
return self;
});
var HealthPack = Container.expand(function () {
var self = Container.call(this);
var graphics = self.attachAsset('health', {
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.ammo = 30;
self.maxAmmo = 30;
self.weapon = 'pistol';
self.speed = 8;
self.shootCooldown = 0;
self.lastX = self.x;
self.lastY = self.y;
self.takeDamage = function (damage) {
self.health -= damage;
LK.effects.flashObject(self, 0xFF0000, 300);
LK.getSound('hit').play();
if (self.health <= 0) {
self.health = 0;
LK.showGameOver();
}
};
self.shoot = function (targetX, targetY) {
if (self.shootCooldown <= 0 && self.ammo > 0) {
var dx = targetX - self.x;
var dy = targetY - self.y;
var length = Math.sqrt(dx * dx + dy * dy);
if (length > 0) {
var bullet = new Bullet();
bullet.x = self.x;
bullet.y = self.y;
bullet.direction.x = dx / length;
bullet.direction.y = dy / length;
bullets.push(bullet);
game.addChild(bullet);
self.ammo--;
self.shootCooldown = 10;
LK.getSound('shoot').play();
}
}
};
self.update = function () {
if (self.shootCooldown > 0) {
self.shootCooldown--;
}
// Zone damage
var distanceFromCenter = Math.sqrt(Math.pow(self.x - zoneCenter.x, 2) + Math.pow(self.y - zoneCenter.y, 2));
if (distanceFromCenter > zoneRadius) {
self.takeDamage(0.5);
}
};
return self;
});
var Weapon = Container.expand(function () {
var self = Container.call(this);
var graphics = self.attachAsset('weapon', {
anchorX: 0.5,
anchorY: 0.5
});
self.type = 'rifle';
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x228B22
});
/****
* Game Code
****/
var player = new Player();
var enemies = [];
var bullets = [];
var enemyBullets = [];
var weapons = [];
var ammos = [];
var healthPacks = [];
// Zone variables
var zoneCenter = {
x: 1024,
y: 1366
};
var zoneRadius = 1000;
var zoneMaxRadius = 1000;
var zoneShrinkRate = 0.5;
// Game state
var gameTime = 0;
var spawnTimer = 0;
var lootSpawnTimer = 0;
// Zone visual
var zoneVisual = LK.getAsset('zone', {
anchorX: 0.5,
anchorY: 0.5,
alpha: 0.3
});
game.addChild(zoneVisual);
zoneVisual.x = zoneCenter.x;
zoneVisual.y = zoneCenter.y;
// Initialize player position
player.x = zoneCenter.x;
player.y = zoneCenter.y;
game.addChild(player);
// UI Elements
var healthText = new Text2('Health: 100', {
size: 60,
fill: 0xFF0000
});
healthText.anchor.set(0, 0);
LK.gui.topLeft.addChild(healthText);
var ammoText = new Text2('Ammo: 30', {
size: 60,
fill: 0x9C27B0
});
ammoText.anchor.set(0, 0);
LK.gui.topLeft.addChild(ammoText);
var scoreText = new Text2('Score: 0', {
size: 60,
fill: 0xFFFFFF
});
scoreText.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreText);
var zoneText = new Text2('Zone: Safe', {
size: 50,
fill: 0x00FF00
});
zoneText.anchor.set(1, 0);
LK.gui.topRight.addChild(zoneText);
function updateUI() {
healthText.setText('Health: ' + Math.max(0, Math.floor(player.health)));
ammoText.setText('Ammo: ' + player.ammo);
scoreText.setText('Score: ' + LK.getScore());
var distanceFromCenter = Math.sqrt(Math.pow(player.x - zoneCenter.x, 2) + Math.pow(player.y - zoneCenter.y, 2));
if (distanceFromCenter > zoneRadius) {
zoneText.setText('Zone: DANGER!');
zoneText.tint = 0xFF0000;
} else {
zoneText.setText('Zone: Safe');
zoneText.tint = 0x00FF00;
}
}
function spawnEnemy() {
var enemy = new Enemy();
// Spawn enemy at random edge of map
var side = Math.floor(Math.random() * 4);
if (side === 0) {
// top
enemy.x = Math.random() * 2048;
enemy.y = 50;
} else if (side === 1) {
// right
enemy.x = 1998;
enemy.y = Math.random() * 2732;
} else if (side === 2) {
// bottom
enemy.x = Math.random() * 2048;
enemy.y = 2682;
} else {
// left
enemy.x = 50;
enemy.y = Math.random() * 2732;
}
enemies.push(enemy);
game.addChild(enemy);
}
function spawnLoot() {
var lootType = Math.random();
var lootItem;
if (lootType < 0.4) {
lootItem = new Ammo();
ammos.push(lootItem);
} else if (lootType < 0.7) {
lootItem = new HealthPack();
healthPacks.push(lootItem);
} else {
lootItem = new Weapon();
weapons.push(lootItem);
}
// Spawn within zone
var angle = Math.random() * Math.PI * 2;
var radius = Math.random() * (zoneRadius * 0.8);
lootItem.x = zoneCenter.x + Math.cos(angle) * radius;
lootItem.y = zoneCenter.y + Math.sin(angle) * radius;
game.addChild(lootItem);
}
// Position UI elements
healthText.y = 120;
ammoText.y = 200;
// Input handling
var targetX = 0;
var targetY = 0;
var isMoving = false;
game.move = function (x, y, obj) {
targetX = x;
targetY = y;
if (isMoving) {
var dx = x - player.x;
var dy = y - player.y;
var distance = Math.sqrt(dx * dx + dy * dy);
if (distance > 20) {
var moveX = dx / distance * player.speed;
var moveY = dy / distance * player.speed;
player.x += moveX;
player.y += moveY;
// Keep player in bounds
player.x = Math.max(40, Math.min(2008, player.x));
player.y = Math.max(40, Math.min(2692, player.y));
}
}
};
game.down = function (x, y, obj) {
isMoving = true;
targetX = x;
targetY = y;
};
game.up = function (x, y, obj) {
if (isMoving) {
player.shoot(targetX, targetY);
}
isMoving = false;
};
// Main game loop
game.update = function () {
gameTime++;
// Shrink zone over time
if (gameTime % 180 === 0 && zoneRadius > 200) {
// Every 3 seconds
zoneRadius -= zoneShrinkRate * 10;
zoneVisual.width = zoneRadius * 2;
zoneVisual.height = zoneRadius * 2;
if (zoneRadius < 500) {
zoneShrinkRate = 1;
}
}
// Spawn enemies
spawnTimer++;
var spawnRate = Math.max(120, 300 - gameTime / 10); // Increase spawn rate over time
if (spawnTimer >= spawnRate) {
spawnEnemy();
spawnTimer = 0;
}
// Spawn loot
lootSpawnTimer++;
if (lootSpawnTimer >= 240) {
// Every 4 seconds
spawnLoot();
lootSpawnTimer = 0;
}
// Check bullet collisions with enemies
for (var i = bullets.length - 1; i >= 0; i--) {
var bullet = bullets[i];
for (var j = enemies.length - 1; j >= 0; j--) {
var enemy = enemies[j];
if (bullet.intersects(enemy)) {
enemy.takeDamage(25);
bullet.remove();
break;
}
}
}
// Check enemy bullet collisions with player
for (var i = enemyBullets.length - 1; i >= 0; i--) {
var bullet = enemyBullets[i];
if (bullet.intersects(player)) {
player.takeDamage(20);
bullet.remove();
}
}
// Check loot collection
for (var i = ammos.length - 1; i >= 0; i--) {
var ammo = ammos[i];
if (player.intersects(ammo)) {
player.ammo = Math.min(player.maxAmmo, player.ammo + ammo.amount);
LK.getSound('pickup').play();
game.removeChild(ammo);
ammos.splice(i, 1);
}
}
for (var i = healthPacks.length - 1; i >= 0; i--) {
var health = healthPacks[i];
if (player.intersects(health)) {
player.health = Math.min(player.maxHealth, player.health + health.healAmount);
LK.getSound('pickup').play();
game.removeChild(health);
healthPacks.splice(i, 1);
}
}
for (var i = weapons.length - 1; i >= 0; i--) {
var weapon = weapons[i];
if (player.intersects(weapon)) {
player.weapon = weapon.type;
player.ammo = player.maxAmmo;
LK.getSound('pickup').play();
game.removeChild(weapon);
weapons.splice(i, 1);
}
}
updateUI();
}; ===================================================================
--- original.js
+++ change.js
@@ -288,12 +288,12 @@
scoreText.setText('Score: ' + LK.getScore());
var distanceFromCenter = Math.sqrt(Math.pow(player.x - zoneCenter.x, 2) + Math.pow(player.y - zoneCenter.y, 2));
if (distanceFromCenter > zoneRadius) {
zoneText.setText('Zone: DANGER!');
- zoneText.style.fill = "#FF0000";
+ zoneText.tint = 0xFF0000;
} else {
zoneText.setText('Zone: Safe');
- zoneText.style.fill = "#00FF00";
+ zoneText.tint = 0x00FF00;
}
}
function spawnEnemy() {
var enemy = new Enemy();