User prompt
Silah karakterime sadeçe 5 saniye kalsın ardından canavarlar 10 olduklarında gene bir yerde silah belirsin ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Karakterinin silahlı yanına koy sıla ile birlikte hareket edeyim birde silahım onlara ateş etsin ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Düşmanlarının ilk başta 5 olsun her 10 saniye 1 düşman daha artsın ama 10 düşmandan daha çok olmasın. Onlar 10 düşman olunca bana bir silah ver ama direk değil onu yerde alayım ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Karakterim büyümesin
User prompt
Böyle sağlanabileceğini bir ev tarzı bir şey yap ben içine girdiğimde canavarlar her kez farklı yerlere gitsinler
User prompt
Birde düşmanlar birbirli ile iç içe geçmesinler böyle birbirlerine ile çarpışsınlar
User prompt
Birde şey ekle karakterinin hızlanması için bir yemek tarzı bir şey ekle ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Her 100 puan topladım da seviyem artsın ilk baştaki seviyem 1. Maksimum seviyem 100 olsun
User prompt
Bana yemek tarzı öldüler yap ve o ödüllerle canım +10 yükselsin ve canavarlar bana ateş ettiklerinden ve bana doküman ateşlerde -5 Can kayıp edeyim. Canım 100 olsun ilk başta
User prompt
Sınırlı yaratıklar beni yakalanmaya çalışmaya denesinler ve bana ateş 🔥 atsınlar
Code edit (1 edits merged)
Please save this source code
User prompt
Cell Conquest
Initial prompt
Agario tarzı oyun yap
/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
/****
* Classes
****/
var EnemyBullet = Container.expand(function () {
var self = Container.call(this);
var graphics = self.attachAsset('enemyBullet', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 4;
self.directionX = 0;
self.directionY = 0;
self.lifeTime = 0;
self.maxLifeTime = 180; // 3 seconds at 60fps
self.consumed = false;
self.update = function () {
if (self.consumed) return;
self.x += self.directionX * self.speed;
self.y += self.directionY * self.speed;
self.lifeTime++;
// Remove bullet if it goes out of bounds or expires
if (self.x < 0 || self.x > arenaWidth || self.y < 0 || self.y > arenaHeight || self.lifeTime > self.maxLifeTime) {
self.consumed = true;
}
};
return self;
});
var EnemyCell = Container.expand(function () {
var self = Container.call(this);
var graphics = self.attachAsset('enemyCell', {
anchorX: 0.5,
anchorY: 0.5
});
self.size = 80;
self.speed = 1;
self.targetX = self.x;
self.targetY = self.y;
self.moveTimer = 0;
self.consumed = false;
self.update = function () {
if (self.consumed) return;
self.moveTimer++;
// Chase the player instead of random movement
self.targetX = player.x;
self.targetY = player.y;
// Move towards player
var dx = self.targetX - self.x;
var dy = self.targetY - self.y;
var distance = Math.sqrt(dx * dx + dy * dy);
// Only move if not too close (maintain some distance for shooting)
if (distance > 120) {
self.x += dx / distance * self.speed;
self.y += dy / distance * self.speed;
}
// Shoot at player every 90 frames (1.5 seconds)
if (self.moveTimer % 90 === 0 && distance < 400) {
// Create bullet aimed at player
var bullet = new EnemyBullet();
bullet.x = self.x;
bullet.y = self.y;
// Calculate direction to player
bullet.directionX = dx / distance;
bullet.directionY = dy / distance;
enemyBullets.push(bullet);
game.addChild(bullet);
LK.getSound('enemyShoot').play();
}
// Check collision with other enemy cells
for (var i = 0; i < enemyCells.length; i++) {
var otherEnemy = enemyCells[i];
if (otherEnemy === self || otherEnemy.consumed) continue;
var dx = self.x - otherEnemy.x;
var dy = self.y - otherEnemy.y;
var distance = Math.sqrt(dx * dx + dy * dy);
var minDistance = (self.size + otherEnemy.size) / 2;
// If too close, push them apart
if (distance < minDistance && distance > 0) {
var pushForce = (minDistance - distance) / 2;
var pushX = dx / distance * pushForce;
var pushY = dy / distance * pushForce;
self.x += pushX;
self.y += pushY;
otherEnemy.x -= pushX;
otherEnemy.y -= pushY;
}
}
// Keep within arena bounds
if (self.x < self.size / 2) self.x = self.size / 2;
if (self.x > arenaWidth - self.size / 2) self.x = arenaWidth - self.size / 2;
if (self.y < self.size / 2) self.y = self.size / 2;
if (self.y > arenaHeight - self.size / 2) self.y = arenaHeight - self.size / 2;
};
self.teleportToRandomLocation = function () {
// Teleport to a random location far from the house
var attempts = 0;
var maxAttempts = 10;
do {
self.x = Math.random() * (arenaWidth - 200) + 100;
self.y = Math.random() * (arenaHeight - 200) + 100;
// Make sure enemy doesn't teleport too close to house
var dx = self.x - house.x;
var dy = self.y - house.y;
var distanceFromHouse = Math.sqrt(dx * dx + dy * dy);
attempts++;
if (distanceFromHouse > 300 || attempts >= maxAttempts) {
break;
}
} while (true);
// Reset target position
self.targetX = self.x;
self.targetY = self.y;
};
return self;
});
var FoodParticle = Container.expand(function () {
var self = Container.call(this);
var graphics = self.attachAsset('foodParticle', {
anchorX: 0.5,
anchorY: 0.5
});
self.value = 1;
self.consumed = false;
return self;
});
var HealthFood = Container.expand(function () {
var self = Container.call(this);
var graphics = self.attachAsset('healthFood', {
anchorX: 0.5,
anchorY: 0.5
});
self.healAmount = 10;
self.consumed = false;
return self;
});
var House = Container.expand(function () {
var self = Container.call(this);
var graphics = self.attachAsset('house', {
anchorX: 0.5,
anchorY: 0.5
});
self.size = 150;
self.playerInside = false;
self.lastPlayerInside = false;
self.checkPlayerInside = function (playerX, playerY, playerSize) {
var dx = playerX - self.x;
var dy = playerY - self.y;
var distance = Math.sqrt(dx * dx + dy * dy);
return distance < self.size / 2 - playerSize / 2;
};
return self;
});
var PlayerCell = Container.expand(function () {
var self = Container.call(this);
var graphics = self.attachAsset('playerCell', {
anchorX: 0.5,
anchorY: 0.5
});
self.size = 60;
self.maxSpeed = 3;
self.targetX = self.x;
self.targetY = self.y;
self.lastSize = self.size;
self.health = 100;
self.maxHealth = 100;
self.level = 1;
self.maxLevel = 100;
self.speedBoostActive = false;
self.originalMaxSpeed = self.maxSpeed;
self.grow = function (amount) {
// Don't change size - character stays the same size
// Update score by the amount eaten instead of size-based scoring
LK.setScore(LK.getScore() + amount);
scoreTxt.setText(LK.getScore());
// Update level based on score
self.updateLevel();
// Check win condition based on score instead of size
if (LK.getScore() >= 500) {
LK.showYouWin();
}
};
self.heal = function (amount) {
self.health = Math.min(self.maxHealth, self.health + amount);
healthTxt.setText('Health: ' + self.health);
};
self.takeDamage = function (amount) {
self.health = Math.max(0, self.health - amount);
healthTxt.setText('Health: ' + self.health);
if (self.health <= 0) {
LK.effects.flashScreen(0xff0000, 1000);
LK.showGameOver();
return true;
}
return false;
};
self.updateLevel = function () {
var newLevel = Math.min(self.maxLevel, Math.floor(LK.getScore() / 100) + 1);
if (newLevel !== self.level) {
self.level = newLevel;
levelTxt.setText('Level: ' + self.level);
}
};
self.activateSpeedBoost = function (boostAmount, duration) {
if (!self.speedBoostActive) {
self.speedBoostActive = true;
self.maxSpeed = self.originalMaxSpeed + boostAmount;
// Visual effect - blue tint
tween(graphics, {
tint: 0x00ffff
}, {
duration: 200
});
// Remove boost after duration
LK.setTimeout(function () {
self.speedBoostActive = false;
self.maxSpeed = self.originalMaxSpeed;
// Remove tint
tween(graphics, {
tint: 0xffffff
}, {
duration: 200
});
}, duration);
}
};
self.getSpeed = function () {
// Speed stays constant since size no longer changes
return self.maxSpeed;
};
self.update = function () {
// Move towards target position
var dx = self.targetX - self.x;
var dy = self.targetY - self.y;
var distance = Math.sqrt(dx * dx + dy * dy);
if (distance > 2) {
var speed = self.getSpeed();
self.x += dx / distance * speed;
self.y += dy / distance * speed;
}
// Keep within arena bounds
var radius = self.size / 2;
if (self.x < radius) self.x = radius;
if (self.x > arenaWidth - radius) self.x = arenaWidth - radius;
if (self.y < radius) self.y = radius;
if (self.y > arenaHeight - radius) self.y = arenaHeight - radius;
};
return self;
});
var SpeedFood = Container.expand(function () {
var self = Container.call(this);
var graphics = self.attachAsset('speedFood', {
anchorX: 0.5,
anchorY: 0.5
});
self.speedBoost = 2;
self.boostDuration = 3000; // 3 seconds
self.consumed = false;
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x1a1a1a
});
/****
* Game Code
****/
var arenaWidth = 2048;
var arenaHeight = 2732;
// Create score display
var scoreTxt = new Text2('0', {
size: 80,
fill: 0xFFFFFF
});
scoreTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreTxt);
// Create health display
var healthTxt = new Text2('Health: 100', {
size: 60,
fill: 0x00ff00
});
healthTxt.anchor.set(0, 0);
healthTxt.x = 120;
healthTxt.y = 20;
LK.gui.topLeft.addChild(healthTxt);
// Create level display
var levelTxt = new Text2('Level: 1', {
size: 60,
fill: 0xffff00
});
levelTxt.anchor.set(1, 0);
levelTxt.x = -20;
levelTxt.y = 20;
LK.gui.topRight.addChild(levelTxt);
// Game objects
var player;
var house;
var foodParticles = [];
var enemyCells = [];
var enemyBullets = [];
var healthFoods = [];
var speedFoods = [];
var maxFoodParticles = 50;
var maxEnemyCells = 5;
var maxHealthFoods = 8;
var maxSpeedFoods = 5;
// Initialize player
player = game.addChild(new PlayerCell());
player.x = arenaWidth / 2;
player.y = arenaHeight / 2;
// Initialize house
house = game.addChild(new House());
house.x = arenaWidth / 4;
house.y = arenaHeight / 4;
// Create initial food particles
function createFoodParticle() {
var food = new FoodParticle();
food.x = Math.random() * (arenaWidth - 100) + 50;
food.y = Math.random() * (arenaHeight - 100) + 50;
foodParticles.push(food);
game.addChild(food);
}
// Create health food
function createHealthFood() {
var healthFood = new HealthFood();
healthFood.x = Math.random() * (arenaWidth - 100) + 50;
healthFood.y = Math.random() * (arenaHeight - 100) + 50;
healthFoods.push(healthFood);
game.addChild(healthFood);
}
// Create speed food
function createSpeedFood() {
var speedFood = new SpeedFood();
speedFood.x = Math.random() * (arenaWidth - 100) + 50;
speedFood.y = Math.random() * (arenaHeight - 100) + 50;
speedFoods.push(speedFood);
game.addChild(speedFood);
}
// Create initial enemy cells
function createEnemyCell() {
var enemy = new EnemyCell();
enemy.x = Math.random() * (arenaWidth - 200) + 100;
enemy.y = Math.random() * (arenaHeight - 200) + 100;
// Make sure enemy doesn't spawn too close to player
var dx = enemy.x - player.x;
var dy = enemy.y - player.y;
var distance = Math.sqrt(dx * dx + dy * dy);
if (distance < 200) {
enemy.x = player.x + dx / distance * 200;
enemy.y = player.y + dy / distance * 200;
}
enemyCells.push(enemy);
game.addChild(enemy);
}
// Spawn initial objects
for (var i = 0; i < maxFoodParticles; i++) {
createFoodParticle();
}
for (var i = 0; i < maxEnemyCells; i++) {
createEnemyCell();
}
for (var i = 0; i < maxHealthFoods; i++) {
createHealthFood();
}
for (var i = 0; i < maxSpeedFoods; i++) {
createSpeedFood();
}
// Touch controls
function handleMove(x, y, obj) {
player.targetX = x;
player.targetY = y;
}
game.move = handleMove;
game.down = function (x, y, obj) {
handleMove(x, y, obj);
};
// Main game loop
game.update = function () {
// Check collisions with food particles
for (var i = foodParticles.length - 1; i >= 0; i--) {
var food = foodParticles[i];
if (food.consumed) continue;
var dx = player.x - food.x;
var dy = player.y - food.y;
var distance = Math.sqrt(dx * dx + dy * dy);
if (distance < player.size / 2 + 10) {
// Player ate food
food.consumed = true;
player.grow(3);
food.destroy();
foodParticles.splice(i, 1);
LK.getSound('eat').play();
}
}
// Check collisions with health foods
for (var i = healthFoods.length - 1; i >= 0; i--) {
var healthFood = healthFoods[i];
if (healthFood.consumed) continue;
var dx = player.x - healthFood.x;
var dy = player.y - healthFood.y;
var distance = Math.sqrt(dx * dx + dy * dy);
if (distance < player.size / 2 + 12) {
// Player ate health food
healthFood.consumed = true;
player.heal(10);
healthFood.destroy();
healthFoods.splice(i, 1);
LK.getSound('eat').play();
}
}
// Check collisions with enemy cells
for (var i = enemyCells.length - 1; i >= 0; i--) {
var enemy = enemyCells[i];
if (enemy.consumed) continue;
var dx = player.x - enemy.x;
var dy = player.y - enemy.y;
var distance = Math.sqrt(dx * dx + dy * dy);
var collisionDistance = player.size / 2 + enemy.size / 2 - 10;
if (distance < collisionDistance) {
if (player.size > enemy.size + 20) {
// Player eats enemy
enemy.consumed = true;
player.grow(15);
enemy.destroy();
enemyCells.splice(i, 1);
LK.getSound('absorbed').play();
} else if (enemy.size > player.size + 20) {
// Enemy eats player - game over
LK.effects.flashScreen(0xff0000, 1000);
LK.showGameOver();
return;
}
}
}
// Spawn new food particles
if (foodParticles.length < maxFoodParticles && LK.ticks % 60 === 0) {
createFoodParticle();
}
// Check collisions with speed foods
for (var i = speedFoods.length - 1; i >= 0; i--) {
var speedFood = speedFoods[i];
if (speedFood.consumed) continue;
var dx = player.x - speedFood.x;
var dy = player.y - speedFood.y;
var distance = Math.sqrt(dx * dx + dy * dy);
if (distance < player.size / 2 + 15) {
// Player ate speed food
speedFood.consumed = true;
player.activateSpeedBoost(speedFood.speedBoost, speedFood.boostDuration);
speedFood.destroy();
speedFoods.splice(i, 1);
LK.getSound('eat').play();
}
}
// Spawn new health foods
if (healthFoods.length < maxHealthFoods && LK.ticks % 180 === 0) {
createHealthFood();
}
// Spawn new speed foods
if (speedFoods.length < maxSpeedFoods && LK.ticks % 240 === 0) {
createSpeedFood();
}
// Check bullet collisions with player
for (var i = enemyBullets.length - 1; i >= 0; i--) {
var bullet = enemyBullets[i];
if (bullet.consumed) {
bullet.destroy();
enemyBullets.splice(i, 1);
continue;
}
var dx = player.x - bullet.x;
var dy = player.y - bullet.y;
var distance = Math.sqrt(dx * dx + dy * dy);
if (distance < player.size / 2 + 5) {
// Bullet hit player - take damage
var isDead = player.takeDamage(5);
if (isDead) {
return;
}
bullet.consumed = true;
bullet.destroy();
enemyBullets.splice(i, 1);
}
}
// Check if player enters/exits house
house.lastPlayerInside = house.playerInside;
house.playerInside = house.checkPlayerInside(player.x, player.y, player.size);
// If player just entered the house (transition from outside to inside)
if (!house.lastPlayerInside && house.playerInside) {
// Teleport all enemies to different locations
for (var i = 0; i < enemyCells.length; i++) {
var enemy = enemyCells[i];
if (!enemy.consumed) {
enemy.teleportToRandomLocation();
}
}
// Visual effect when entering house
LK.effects.flashScreen(0x00ff00, 300);
}
// Spawn new enemy cells occasionally
if (enemyCells.length < maxEnemyCells && LK.ticks % 300 === 0) {
createEnemyCell();
}
}; ===================================================================
--- original.js
+++ change.js
@@ -171,18 +171,16 @@
self.maxLevel = 100;
self.speedBoostActive = false;
self.originalMaxSpeed = self.maxSpeed;
self.grow = function (amount) {
- self.size += amount;
- self.scaleX = self.size / 60;
- self.scaleY = self.size / 60;
- // Update score based on size
- LK.setScore(Math.floor(self.size - 60));
+ // Don't change size - character stays the same size
+ // Update score by the amount eaten instead of size-based scoring
+ LK.setScore(LK.getScore() + amount);
scoreTxt.setText(LK.getScore());
// Update level based on score
self.updateLevel();
- // Check win condition
- if (self.size >= 300) {
+ // Check win condition based on score instead of size
+ if (LK.getScore() >= 500) {
LK.showYouWin();
}
};
self.heal = function (amount) {
@@ -229,11 +227,10 @@
}, duration);
}
};
self.getSpeed = function () {
- // Speed decreases as size increases
- var speedMultiplier = Math.max(0.3, 1 - (self.size - 60) / 200);
- return self.maxSpeed * speedMultiplier;
+ // Speed stays constant since size no longer changes
+ return self.maxSpeed;
};
self.update = function () {
// Move towards target position
var dx = self.targetX - self.x;
Sınırlı yaratık. No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat
Kapı ekle
Şimşek. No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat
Alev. No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat
Gulen bir kedi. In-Game asset. 2d. High contrast. No shadows
Balık. In-Game asset. 2d. High contrast. No shadows
Tavuk eti. In-Game asset. 2d. High contrast. No shadows
Pençe silah. In-Game asset. 2d. High contrast. No shadows