User prompt
oyunun başında bir düşman olsun ve her düşman öldürdüğümüzde yeni bir düşman çıksın
User prompt
etrafta belirli aralıklarla spawn olan düşmanları öldürebileceğimiz bir oyuncu yarat ve ekranın ortasına koy
User prompt
Spawn Hunter
Initial prompt
etrafta belirli aralıklarla spawn olan düşmanları öldürdüğümüz bir oyun
/****
* Classes
****/
var Bullet = Container.expand(function () {
var self = Container.call(this);
var bulletGraphics = self.attachAsset('bullet', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 10;
self.lifespan = 120; // 2 seconds at 60fps
self.update = function () {
// Move in direction of rotation
self.x += Math.cos(self.rotation) * self.speed;
self.y += Math.sin(self.rotation) * self.speed;
// Check for collisions with enemies
for (var i = enemies.length - 1; i >= 0; i--) {
var enemy = enemies[i];
if (self.intersects(enemy)) {
enemy.takeDamage(1);
self.destroy();
var index = bullets.indexOf(self);
if (index > -1) {
bullets.splice(index, 1);
}
return;
}
}
// Bullet lifespan
self.lifespan--;
if (self.lifespan <= 0 || self.x < 0 || self.x > 2048 || self.y < 0 || self.y > 2732) {
self.destroy();
var index = bullets.indexOf(self);
if (index > -1) {
bullets.splice(index, 1);
}
}
};
return self;
});
// Set background color
var Enemy = Container.expand(function () {
var self = Container.call(this);
var enemyGraphics = self.attachAsset('enemy', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 2 + Math.random() * 1.5;
self.health = 1;
self.lastWasIntersecting = false;
self.update = function () {
// Move toward player
var dx = player.x - self.x;
var dy = player.y - self.y;
var dist = Math.sqrt(dx * dx + dy * dy);
if (dist > 0) {
self.x += dx / dist * self.speed;
self.y += dy / dist * self.speed;
}
// Check collision with player
var isIntersecting = self.intersects(player);
if (!self.lastWasIntersecting && isIntersecting) {
player.takeDamage(10);
self.destroy();
var index = enemies.indexOf(self);
if (index > -1) {
enemies.splice(index, 1);
}
}
self.lastWasIntersecting = isIntersecting;
};
self.takeDamage = function (amount) {
self.health -= amount;
if (self.health <= 0) {
LK.getSound('explosion').play();
LK.effects.flashObject(self, 0xFFFFFF, 100);
self.destroy();
var index = enemies.indexOf(self);
if (index > -1) {
enemies.splice(index, 1);
}
LK.setScore(LK.getScore() + 10);
}
};
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.rotation = 0;
self.shootCooldown = 0;
self.update = function () {
if (self.shootCooldown > 0) {
self.shootCooldown--;
}
};
self.shoot = function () {
if (self.shootCooldown <= 0) {
var bullet = new Bullet();
bullet.x = self.x;
bullet.y = self.y;
bullet.rotation = self.rotation;
game.addChild(bullet);
bullets.push(bullet);
LK.getSound('shoot').play();
self.shootCooldown = 10; // Cooldown between shots
}
};
self.takeDamage = function (amount) {
self.health -= amount;
LK.effects.flashObject(self, 0xFF0000, 300);
if (self.health <= 0) {
LK.effects.flashScreen(0xFF0000, 1000);
LK.showGameOver();
}
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x000000
});
/****
* Game Code
****/
// Set background color
game.setBackgroundColor(0x2c3e50);
// Game variables
var player;
var enemies = [];
var bullets = [];
var spawnTimer = 0;
var spawnInterval = 120; // Start with 2 seconds between spawns
var spawnDistance = 800; // Distance from center to spawn enemies
var aimDirection = 0;
var score = 0;
// Create player in center of screen
player = new Player();
player.x = 2048 / 2;
player.y = 2732 / 2;
game.addChild(player);
// Create score text
var scoreText = new Text2('Score: 0', {
size: 60,
fill: 0xFFFFFF
});
scoreText.anchor.set(0, 0);
LK.gui.topLeft.addChild(scoreText);
scoreText.x = 110; // Keep away from top left 100x100 area
// Handle touch/click input for aiming and shooting
game.down = function (x, y, obj) {
// Calculate angle between player and touch point
var dx = x - player.x;
var dy = y - player.y;
player.rotation = Math.atan2(dy, dx);
// Shoot
player.shoot();
};
game.move = function (x, y, obj) {
// Update aim direction when moving touch/mouse
var dx = x - player.x;
var dy = y - player.y;
player.rotation = Math.atan2(dy, dx);
};
game.up = function (x, y, obj) {
// Could add additional logic here
};
// Spawn enemy at random position around the player
function spawnEnemy() {
var angle = Math.random() * Math.PI * 2;
var enemy = new Enemy();
// Position enemy in a circle around the player
enemy.x = player.x + Math.cos(angle) * spawnDistance;
enemy.y = player.y + Math.sin(angle) * spawnDistance;
game.addChild(enemy);
enemies.push(enemy);
// Increase difficulty
if (spawnInterval > 30) {
spawnInterval -= 0.5;
}
}
// Game update loop
game.update = function () {
// Update player
player.update();
// Update bullets
for (var i = bullets.length - 1; i >= 0; i--) {
bullets[i].update();
}
// Update enemies
for (var i = enemies.length - 1; i >= 0; i--) {
enemies[i].update();
}
// Spawn enemies
spawnTimer++;
if (spawnTimer >= spawnInterval) {
spawnEnemy();
spawnTimer = 0;
}
// Update score display
scoreText.setText('Score: ' + LK.getScore());
}; ===================================================================
--- original.js
+++ change.js
@@ -1,6 +1,210 @@
-/****
+/****
+* Classes
+****/
+var Bullet = Container.expand(function () {
+ var self = Container.call(this);
+ var bulletGraphics = self.attachAsset('bullet', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.speed = 10;
+ self.lifespan = 120; // 2 seconds at 60fps
+ self.update = function () {
+ // Move in direction of rotation
+ self.x += Math.cos(self.rotation) * self.speed;
+ self.y += Math.sin(self.rotation) * self.speed;
+ // Check for collisions with enemies
+ for (var i = enemies.length - 1; i >= 0; i--) {
+ var enemy = enemies[i];
+ if (self.intersects(enemy)) {
+ enemy.takeDamage(1);
+ self.destroy();
+ var index = bullets.indexOf(self);
+ if (index > -1) {
+ bullets.splice(index, 1);
+ }
+ return;
+ }
+ }
+ // Bullet lifespan
+ self.lifespan--;
+ if (self.lifespan <= 0 || self.x < 0 || self.x > 2048 || self.y < 0 || self.y > 2732) {
+ self.destroy();
+ var index = bullets.indexOf(self);
+ if (index > -1) {
+ bullets.splice(index, 1);
+ }
+ }
+ };
+ return self;
+});
+// Set background color
+var Enemy = Container.expand(function () {
+ var self = Container.call(this);
+ var enemyGraphics = self.attachAsset('enemy', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.speed = 2 + Math.random() * 1.5;
+ self.health = 1;
+ self.lastWasIntersecting = false;
+ self.update = function () {
+ // Move toward player
+ var dx = player.x - self.x;
+ var dy = player.y - self.y;
+ var dist = Math.sqrt(dx * dx + dy * dy);
+ if (dist > 0) {
+ self.x += dx / dist * self.speed;
+ self.y += dy / dist * self.speed;
+ }
+ // Check collision with player
+ var isIntersecting = self.intersects(player);
+ if (!self.lastWasIntersecting && isIntersecting) {
+ player.takeDamage(10);
+ self.destroy();
+ var index = enemies.indexOf(self);
+ if (index > -1) {
+ enemies.splice(index, 1);
+ }
+ }
+ self.lastWasIntersecting = isIntersecting;
+ };
+ self.takeDamage = function (amount) {
+ self.health -= amount;
+ if (self.health <= 0) {
+ LK.getSound('explosion').play();
+ LK.effects.flashObject(self, 0xFFFFFF, 100);
+ self.destroy();
+ var index = enemies.indexOf(self);
+ if (index > -1) {
+ enemies.splice(index, 1);
+ }
+ LK.setScore(LK.getScore() + 10);
+ }
+ };
+ 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.rotation = 0;
+ self.shootCooldown = 0;
+ self.update = function () {
+ if (self.shootCooldown > 0) {
+ self.shootCooldown--;
+ }
+ };
+ self.shoot = function () {
+ if (self.shootCooldown <= 0) {
+ var bullet = new Bullet();
+ bullet.x = self.x;
+ bullet.y = self.y;
+ bullet.rotation = self.rotation;
+ game.addChild(bullet);
+ bullets.push(bullet);
+ LK.getSound('shoot').play();
+ self.shootCooldown = 10; // Cooldown between shots
+ }
+ };
+ self.takeDamage = function (amount) {
+ self.health -= amount;
+ LK.effects.flashObject(self, 0xFF0000, 300);
+ if (self.health <= 0) {
+ LK.effects.flashScreen(0xFF0000, 1000);
+ LK.showGameOver();
+ }
+ };
+ return self;
+});
+
+/****
* Initialize Game
-****/
+****/
var game = new LK.Game({
backgroundColor: 0x000000
-});
\ No newline at end of file
+});
+
+/****
+* Game Code
+****/
+// Set background color
+game.setBackgroundColor(0x2c3e50);
+// Game variables
+var player;
+var enemies = [];
+var bullets = [];
+var spawnTimer = 0;
+var spawnInterval = 120; // Start with 2 seconds between spawns
+var spawnDistance = 800; // Distance from center to spawn enemies
+var aimDirection = 0;
+var score = 0;
+// Create player in center of screen
+player = new Player();
+player.x = 2048 / 2;
+player.y = 2732 / 2;
+game.addChild(player);
+// Create score text
+var scoreText = new Text2('Score: 0', {
+ size: 60,
+ fill: 0xFFFFFF
+});
+scoreText.anchor.set(0, 0);
+LK.gui.topLeft.addChild(scoreText);
+scoreText.x = 110; // Keep away from top left 100x100 area
+// Handle touch/click input for aiming and shooting
+game.down = function (x, y, obj) {
+ // Calculate angle between player and touch point
+ var dx = x - player.x;
+ var dy = y - player.y;
+ player.rotation = Math.atan2(dy, dx);
+ // Shoot
+ player.shoot();
+};
+game.move = function (x, y, obj) {
+ // Update aim direction when moving touch/mouse
+ var dx = x - player.x;
+ var dy = y - player.y;
+ player.rotation = Math.atan2(dy, dx);
+};
+game.up = function (x, y, obj) {
+ // Could add additional logic here
+};
+// Spawn enemy at random position around the player
+function spawnEnemy() {
+ var angle = Math.random() * Math.PI * 2;
+ var enemy = new Enemy();
+ // Position enemy in a circle around the player
+ enemy.x = player.x + Math.cos(angle) * spawnDistance;
+ enemy.y = player.y + Math.sin(angle) * spawnDistance;
+ game.addChild(enemy);
+ enemies.push(enemy);
+ // Increase difficulty
+ if (spawnInterval > 30) {
+ spawnInterval -= 0.5;
+ }
+}
+// Game update loop
+game.update = function () {
+ // Update player
+ player.update();
+ // Update bullets
+ for (var i = bullets.length - 1; i >= 0; i--) {
+ bullets[i].update();
+ }
+ // Update enemies
+ for (var i = enemies.length - 1; i >= 0; i--) {
+ enemies[i].update();
+ }
+ // Spawn enemies
+ spawnTimer++;
+ if (spawnTimer >= spawnInterval) {
+ spawnEnemy();
+ spawnTimer = 0;
+ }
+ // Update score display
+ scoreText.setText('Score: ' + LK.getScore());
+};
\ No newline at end of file