User prompt
Düşmanlar 5 saniyede 3 kere ateş etsin
User prompt
Düşmanlar 5 saniyede 2 kere ateş etsin
User prompt
Düşmanlar 5 saniyede ateş etsin
User prompt
Düşmanlar saniyede 2 kere ateş etsin
User prompt
Karakter sadece aynı hizada sağa sola hareket edebilsin
User prompt
Boss u yendikten sonra oyun bitsin
User prompt
Boss 2. Levelden sonra gelsin
User prompt
2. Boss 5 level sonra gelsin
User prompt
Boss 1. Levelden sonra gelsin
User prompt
Boss daha az ateş etsin
User prompt
2 . Levelden sonra ekranın üst orta kısmında daha büyük düşman olsun ve onun ölmesi için 30 mermi atamak gereksin ayrıca büyük düşman geldiğinde diğer düşmanlar gelmesin ve büyük düşman küçük düşmana göre daha çok ateş etsin
User prompt
Enemy ler daha çok gelsin ama ateş etmeleri az olsun
User prompt
Oyunda sadece enemy ve spaceship olsun
User prompt
Shield olmasın
Code edit (1 edits merged)
Please save this source code
User prompt
Retro Cosmos
Initial prompt
Ateri oyunu
/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
var storage = LK.import("@upit/storage.v1", {
highScore: 0
});
/****
* Classes
****/
var Asteroid = Container.expand(function () {
var self = Container.call(this);
var asteroidGraphics = self.attachAsset('asteroid', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 0.8 + Math.random() * 0.6,
// Random size
scaleY: 0.8 + Math.random() * 0.6
});
self.rotationSpeed = (Math.random() - 0.5) * 0.1;
self.speedY = 2 + Math.random() * 3;
self.speedX = (Math.random() - 0.5) * 2;
self.update = function () {
self.y += self.speedY;
self.x += self.speedX;
asteroidGraphics.rotation += self.rotationSpeed;
// Loop sides of the screen
if (self.x < -50) self.x = 2048 + 50;
if (self.x > 2048 + 50) self.x = -50;
// Remove if off bottom of screen
if (self.y > 2732 + 100) {
return true; // Mark for removal
}
return false;
};
return self;
});
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.update = function () {
self.y += self.speed;
// Remove bullets that go off screen
if (self.y < -50) {
return true; // Return true to mark for removal
}
return false;
};
return self;
});
var Enemy = Container.expand(function () {
var self = Container.call(this);
var enemyGraphics = self.attachAsset('enemy', {
anchorX: 0.5,
anchorY: 0.5
});
self.speedY = 1.5 + Math.random() * 1.5;
self.movePattern = Math.floor(Math.random() * 3); // 0: straight, 1: zigzag, 2: sine
self.patternOffset = Math.random() * 100;
self.shootTimer = 60 + Math.floor(Math.random() * 120);
self.update = function () {
self.y += self.speedY;
// Different movement patterns
switch (self.movePattern) {
case 1:
// Zigzag
self.x += Math.sin(LK.ticks * 0.05 + self.patternOffset) * 3;
break;
case 2:
// Sine wave
self.x = self.startX + Math.sin(LK.ticks * 0.03 + self.patternOffset) * 150;
break;
}
// Shoot occasionally
self.shootTimer--;
if (self.shootTimer <= 0) {
// Create enemy bullet
var bullet = new Bullet();
bullet.speed = 5; // Bullets move down
bullet.x = self.x;
bullet.y = self.y + 30;
game.addChild(bullet);
enemyBullets.push(bullet);
self.shootTimer = 60 + Math.floor(Math.random() * 120);
}
// Remove if off bottom of screen
if (self.y > 2732 + 100) {
return true; // Mark for removal
}
return false;
};
return self;
});
var Gem = Container.expand(function () {
var self = Container.call(this);
var gemGraphics = self.attachAsset('gem', {
anchorX: 0.5,
anchorY: 0.5
});
self.speedY = 2 + Math.random() * 2;
self.rotationSpeed = (Math.random() - 0.5) * 0.1;
self.value = 10;
self.update = function () {
self.y += self.speedY;
gemGraphics.rotation += self.rotationSpeed;
// Remove if off bottom of screen
if (self.y > 2732 + 50) {
return true; // Mark for removal
}
return false;
};
return self;
});
var Powerup = Container.expand(function () {
var self = Container.call(this);
var powerupGraphics = self.attachAsset('powerup', {
anchorX: 0.5,
anchorY: 0.5
});
self.speedY = 2 + Math.random();
self.type = 1; // Only double fire powerup available
// Red tint for double fire
powerupGraphics.tint = 0xe74c3c; // Red for double fire
self.update = function () {
self.y += self.speedY;
powerupGraphics.rotation += 0.03;
// Remove if off bottom of screen
if (self.y > 2732 + 50) {
return true; // Mark for removal
}
return false;
};
return self;
});
var Spaceship = Container.expand(function () {
var self = Container.call(this);
var spaceshipGraphics = self.attachAsset('spaceship', {
anchorX: 0.5,
anchorY: 0.5
});
self.shield = false; // Keep but always false for collision detection
self.shootCooldown = 0;
self.shootDelay = 15;
self.doubleFire = false;
self.powerupTime = 0;
self.speed = 5;
self.lives = 3;
self.activateShield = function (duration) {
self.shield = true;
self.shieldTime = duration;
if (!self.shieldGraphic) {
self.shieldGraphic = self.attachAsset('shield', {
anchorX: 0.5,
anchorY: 0.5,
alpha: 0.5
});
} else {
self.shieldGraphic.visible = true;
}
};
self.deactivateShield = function () {
self.shield = false;
if (self.shieldGraphic) {
self.shieldGraphic.visible = false;
}
};
self.activateDoubleFire = function (duration) {
self.doubleFire = true;
self.powerupTime = duration;
};
self.deactivateDoubleFire = function () {
self.doubleFire = false;
};
self.shoot = function () {
if (self.shootCooldown <= 0) {
self.shootCooldown = self.shootDelay;
if (self.doubleFire) {
// Create two bullets side by side
var bullet1 = new Bullet();
bullet1.x = self.x - 20;
bullet1.y = self.y;
game.addChild(bullet1);
bullets.push(bullet1);
var bullet2 = new Bullet();
bullet2.x = self.x + 20;
bullet2.y = self.y;
game.addChild(bullet2);
bullets.push(bullet2);
} else {
// Create a single bullet
var bullet = new Bullet();
bullet.x = self.x;
bullet.y = self.y;
game.addChild(bullet);
bullets.push(bullet);
}
// Play shoot sound
LK.getSound('shoot').play();
return true;
}
return false;
};
self.update = function () {
// Update cooldown
if (self.shootCooldown > 0) {
self.shootCooldown--;
}
// Update powerup time
if (self.doubleFire && self.powerupTime > 0) {
self.powerupTime--;
if (self.powerupTime <= 0) {
self.deactivateDoubleFire();
}
}
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x000000
});
/****
* Game Code
****/
// Game state
var gameRunning = true;
var level = 1;
var score = 0;
var lives = 3;
var asteroidSpawnRate = 120;
var enemySpawnRate = 300;
var gemSpawnRate = 180;
var powerupSpawnRate = 600;
var spawnCountdown = 60;
var enemySpawnCountdown = 300;
var gemSpawnCountdown = 120;
var powerupSpawnCountdown = 600;
// Game elements
var spaceship;
var bullets = [];
var enemyBullets = [];
var asteroids = [];
var enemies = [];
var gems = [];
var powerups = [];
// Create UI elements
var scoreTxt = new Text2('Score: 0', {
size: 50,
fill: 0xFFFFFF
});
scoreTxt.anchor.set(0, 0);
LK.gui.topRight.addChild(scoreTxt);
scoreTxt.x = -250; // Offset from right edge
var levelTxt = new Text2('Level: 1', {
size: 50,
fill: 0xFFFFFF
});
levelTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(levelTxt);
levelTxt.y = 10;
var livesTxt = new Text2('Lives: 3', {
size: 50,
fill: 0xFFFFFF
});
livesTxt.anchor.set(0, 0);
LK.gui.topLeft.addChild(livesTxt);
livesTxt.x = 120; // Offset to avoid menu button
livesTxt.y = 10;
var highScoreTxt = new Text2('High Score: ' + storage.highScore, {
size: 40,
fill: 0xFFFFFF
});
highScoreTxt.anchor.set(1, 0);
LK.gui.topRight.addChild(highScoreTxt);
highScoreTxt.y = 60;
// Drag handling
var isDragging = false;
// Initialize game elements
function initializeGame() {
// Create player spaceship
spaceship = new Spaceship();
spaceship.x = 2048 / 2;
spaceship.y = 2732 - 200;
game.addChild(spaceship);
// Reset variables
bullets = [];
enemyBullets = [];
asteroids = [];
enemies = [];
gems = [];
powerups = [];
level = 1;
score = 0;
lives = 3;
// Update UI
updateUI();
// Start game music
LK.playMusic('gameMusic');
}
// Update UI elements
function updateUI() {
scoreTxt.setText('Score: ' + score);
levelTxt.setText('Level: ' + level);
livesTxt.setText('Lives: ' + lives);
highScoreTxt.setText('High Score: ' + storage.highScore);
// Update score in LK system
LK.setScore(score);
}
// Create explosion effect
function createExplosion(x, y, color) {
// Flash object
var explosionObj = new Container();
explosionObj.x = x;
explosionObj.y = y;
var explosionGraphic = explosionObj.attachAsset('asteroid', {
anchorX: 0.5,
anchorY: 0.5,
alpha: 0.7
});
game.addChild(explosionObj);
// Animate explosion
tween(explosionGraphic, {
scaleX: 2,
scaleY: 2,
alpha: 0
}, {
duration: 500,
easing: tween.easeOut,
onFinish: function onFinish() {
explosionObj.destroy();
}
});
// Play explosion sound
LK.getSound('explosion').play();
}
// Handle collisions
function checkCollisions() {
// Player bullets with asteroids
for (var i = bullets.length - 1; i >= 0; i--) {
var bullet = bullets[i];
// Check collision with asteroids
for (var j = asteroids.length - 1; j >= 0; j--) {
var asteroid = asteroids[j];
if (bullet.intersects(asteroid)) {
// Create explosion
createExplosion(asteroid.x, asteroid.y, 0x7f8c8d);
// Remove asteroid and bullet
asteroid.destroy();
asteroids.splice(j, 1);
bullet.destroy();
bullets.splice(i, 1);
// Increase score
score += 5;
updateUI();
break; // Bullet can only hit one asteroid
}
}
// Check collision with enemies
if (bullets[i]) {
// Make sure bullet still exists
for (var j = enemies.length - 1; j >= 0; j--) {
var enemy = enemies[j];
if (bullet.intersects(enemy)) {
// Create explosion
createExplosion(enemy.x, enemy.y, 0xe74c3c);
// Remove enemy and bullet
enemy.destroy();
enemies.splice(j, 1);
bullet.destroy();
bullets.splice(i, 1);
// Increase score
score += 15;
updateUI();
break; // Bullet can only hit one enemy
}
}
}
}
// Check player collisions with asteroids
for (var i = asteroids.length - 1; i >= 0; i--) {
if (spaceship.intersects(asteroids[i])) {
// Create explosion
createExplosion(asteroids[i].x, asteroids[i].y, 0x7f8c8d);
// Remove asteroid
asteroids[i].destroy();
asteroids.splice(i, 1);
// Player loses a life
lives--;
updateUI();
if (lives <= 0) {
gameOver();
}
}
}
// Check player collisions with enemy ships
for (var i = enemies.length - 1; i >= 0; i--) {
if (spaceship.intersects(enemies[i])) {
// Create explosion
createExplosion(enemies[i].x, enemies[i].y, 0xe74c3c);
// Remove enemy
enemies[i].destroy();
enemies.splice(i, 1);
// Player loses a life
lives--;
updateUI();
if (lives <= 0) {
gameOver();
}
}
}
// Check player collisions with enemy bullets
for (var i = enemyBullets.length - 1; i >= 0; i--) {
if (spaceship.intersects(enemyBullets[i])) {
// Create small explosion
createExplosion(enemyBullets[i].x, enemyBullets[i].y, 0xffffff);
// Remove bullet
enemyBullets[i].destroy();
enemyBullets.splice(i, 1);
// Player loses a life
lives--;
updateUI();
if (lives <= 0) {
gameOver();
}
}
}
// Check player collisions with gems
for (var i = gems.length - 1; i >= 0; i--) {
if (spaceship.intersects(gems[i])) {
// Play collect sound
LK.getSound('collect').play();
// Add score
score += gems[i].value;
updateUI();
// Remove gem with a small animation
tween(gems[i], {
alpha: 0,
scaleX: 0.5,
scaleY: 0.5
}, {
duration: 300,
onFinish: function (gem) {
return function () {
gem.destroy();
};
}(gems[i])
});
gems.splice(i, 1);
}
}
// Check player collisions with powerups
for (var i = powerups.length - 1; i >= 0; i--) {
if (spaceship.intersects(powerups[i])) {
// Play powerup sound
LK.getSound('powerup').play();
// Apply powerup effect - only double fire available
spaceship.activateDoubleFire(600);
// Remove powerup with animation
tween(powerups[i], {
alpha: 0,
scaleX: 2,
scaleY: 2
}, {
duration: 300,
onFinish: function (powerup) {
return function () {
powerup.destroy();
};
}(powerups[i])
});
powerups.splice(i, 1);
}
}
}
// Check if game level should increase
function checkLevelProgression() {
if (score >= level * 100) {
level++;
updateUI();
// Increase difficulty
asteroidSpawnRate = Math.max(60, asteroidSpawnRate - 10);
enemySpawnRate = Math.max(180, enemySpawnRate - 20);
gemSpawnRate = Math.max(120, gemSpawnRate - 5);
// Show level up text
var levelUpTxt = new Text2('Level ' + level + '!', {
size: 100,
fill: 0xFFFF00
});
levelUpTxt.anchor.set(0.5, 0.5);
levelUpTxt.x = 2048 / 2;
levelUpTxt.y = 2732 / 2;
game.addChild(levelUpTxt);
// Animate and remove
tween(levelUpTxt, {
alpha: 0,
scaleX: 2,
scaleY: 2
}, {
duration: 1500,
onFinish: function onFinish() {
levelUpTxt.destroy();
}
});
}
}
// Game over function
function gameOver() {
gameRunning = false;
// Update high score
if (score > storage.highScore) {
storage.highScore = score;
updateUI();
}
// Show game over screen
LK.showGameOver();
}
// Initialize the game
initializeGame();
// Touch and mouse controls
game.down = function (x, y, obj) {
isDragging = true;
// Fire a bullet when tapping
if (gameRunning) {
spaceship.shoot();
}
// Move spaceship to touch position
spaceship.x = x;
spaceship.y = y;
};
game.up = function (x, y, obj) {
isDragging = false;
};
game.move = function (x, y, obj) {
if (isDragging && gameRunning) {
// Move spaceship to touch position
spaceship.x = x;
// Limit Y position to bottom area
spaceship.y = Math.min(y, 2732 - 150);
spaceship.y = Math.max(spaceship.y, 2732 / 2);
}
};
// Game update function
game.update = function () {
if (!gameRunning) return;
// Update spaceship
spaceship.update();
// Auto-fire when holding
if (isDragging && LK.ticks % 15 === 0) {
spaceship.shoot();
}
// Spawn asteroids
spawnCountdown--;
if (spawnCountdown <= 0) {
var asteroid = new Asteroid();
asteroid.x = Math.random() * 2048;
asteroid.y = -100;
game.addChild(asteroid);
asteroids.push(asteroid);
spawnCountdown = asteroidSpawnRate;
}
// Spawn enemies
enemySpawnCountdown--;
if (enemySpawnCountdown <= 0) {
var enemy = new Enemy();
enemy.x = Math.random() * 2048;
enemy.y = -100;
enemy.startX = enemy.x; // Save starting X for sine movement
game.addChild(enemy);
enemies.push(enemy);
enemySpawnCountdown = enemySpawnRate;
}
// Spawn gems
gemSpawnCountdown--;
if (gemSpawnCountdown <= 0) {
var gem = new Gem();
gem.x = Math.random() * 2048;
gem.y = -50;
game.addChild(gem);
gems.push(gem);
gemSpawnCountdown = gemSpawnRate;
}
// Spawn powerups
powerupSpawnCountdown--;
if (powerupSpawnCountdown <= 0) {
var powerup = new Powerup();
powerup.x = Math.random() * 2048;
powerup.y = -50;
game.addChild(powerup);
powerups.push(powerup);
powerupSpawnCountdown = powerupSpawnRate;
}
// Update bullets
for (var i = bullets.length - 1; i >= 0; i--) {
if (bullets[i].update()) {
bullets[i].destroy();
bullets.splice(i, 1);
}
}
// Update enemy bullets
for (var i = enemyBullets.length - 1; i >= 0; i--) {
if (enemyBullets[i].update()) {
enemyBullets[i].destroy();
enemyBullets.splice(i, 1);
}
}
// Update asteroids
for (var i = asteroids.length - 1; i >= 0; i--) {
if (asteroids[i].update()) {
asteroids[i].destroy();
asteroids.splice(i, 1);
}
}
// Update enemies
for (var i = enemies.length - 1; i >= 0; i--) {
if (enemies[i].update()) {
enemies[i].destroy();
enemies.splice(i, 1);
}
}
// Update gems
for (var i = gems.length - 1; i >= 0; i--) {
if (gems[i].update()) {
gems[i].destroy();
gems.splice(i, 1);
}
}
// Update powerups
for (var i = powerups.length - 1; i >= 0; i--) {
if (powerups[i].update()) {
powerups[i].destroy();
powerups.splice(i, 1);
}
}
// Check collisions
checkCollisions();
// Check level progression
checkLevelProgression();
}; ===================================================================
--- original.js
+++ change.js
@@ -122,15 +122,11 @@
anchorX: 0.5,
anchorY: 0.5
});
self.speedY = 2 + Math.random();
- self.type = Math.floor(Math.random() * 2); // 0: shield, 1: double fire
- // Tint based on type
- if (self.type === 0) {
- powerupGraphics.tint = 0x2ecc71; // Green for shield
- } else {
- powerupGraphics.tint = 0xe74c3c; // Red for double fire
- }
+ self.type = 1; // Only double fire powerup available
+ // Red tint for double fire
+ powerupGraphics.tint = 0xe74c3c; // Red for double fire
self.update = function () {
self.y += self.speedY;
powerupGraphics.rotation += 0.03;
// Remove if off bottom of screen
@@ -146,11 +142,9 @@
var spaceshipGraphics = self.attachAsset('spaceship', {
anchorX: 0.5,
anchorY: 0.5
});
- self.shield = false;
- self.shieldTime = 0;
- self.shieldGraphic = null;
+ self.shield = false; // Keep but always false for collision detection
self.shootCooldown = 0;
self.shootDelay = 15;
self.doubleFire = false;
self.powerupTime = 0;
@@ -215,15 +209,8 @@
// Update cooldown
if (self.shootCooldown > 0) {
self.shootCooldown--;
}
- // Update shield time
- if (self.shield && self.shieldTime > 0) {
- self.shieldTime--;
- if (self.shieldTime <= 0) {
- self.deactivateShield();
- }
- }
// Update powerup time
if (self.doubleFire && self.powerupTime > 0) {
self.powerupTime--;
if (self.powerupTime <= 0) {
@@ -398,67 +385,52 @@
}
}
}
// Check player collisions with asteroids
- if (!spaceship.shield) {
- for (var i = asteroids.length - 1; i >= 0; i--) {
- if (spaceship.intersects(asteroids[i])) {
- // Create explosion
- createExplosion(asteroids[i].x, asteroids[i].y, 0x7f8c8d);
- // Remove asteroid
- asteroids[i].destroy();
- asteroids.splice(i, 1);
- // Player loses a life
- lives--;
- updateUI();
- if (lives <= 0) {
- gameOver();
- } else {
- // Give temporary shield
- spaceship.activateShield(120);
- }
+ for (var i = asteroids.length - 1; i >= 0; i--) {
+ if (spaceship.intersects(asteroids[i])) {
+ // Create explosion
+ createExplosion(asteroids[i].x, asteroids[i].y, 0x7f8c8d);
+ // Remove asteroid
+ asteroids[i].destroy();
+ asteroids.splice(i, 1);
+ // Player loses a life
+ lives--;
+ updateUI();
+ if (lives <= 0) {
+ gameOver();
}
}
}
// Check player collisions with enemy ships
- if (!spaceship.shield) {
- for (var i = enemies.length - 1; i >= 0; i--) {
- if (spaceship.intersects(enemies[i])) {
- // Create explosion
- createExplosion(enemies[i].x, enemies[i].y, 0xe74c3c);
- // Remove enemy
- enemies[i].destroy();
- enemies.splice(i, 1);
- // Player loses a life
- lives--;
- updateUI();
- if (lives <= 0) {
- gameOver();
- } else {
- // Give temporary shield
- spaceship.activateShield(120);
- }
+ for (var i = enemies.length - 1; i >= 0; i--) {
+ if (spaceship.intersects(enemies[i])) {
+ // Create explosion
+ createExplosion(enemies[i].x, enemies[i].y, 0xe74c3c);
+ // Remove enemy
+ enemies[i].destroy();
+ enemies.splice(i, 1);
+ // Player loses a life
+ lives--;
+ updateUI();
+ if (lives <= 0) {
+ gameOver();
}
}
}
// Check player collisions with enemy bullets
- if (!spaceship.shield) {
- for (var i = enemyBullets.length - 1; i >= 0; i--) {
- if (spaceship.intersects(enemyBullets[i])) {
- // Create small explosion
- createExplosion(enemyBullets[i].x, enemyBullets[i].y, 0xffffff);
- // Remove bullet
- enemyBullets[i].destroy();
- enemyBullets.splice(i, 1);
- // Player loses a life
- lives--;
- updateUI();
- if (lives <= 0) {
- gameOver();
- } else {
- // Give temporary shield
- spaceship.activateShield(120);
- }
+ for (var i = enemyBullets.length - 1; i >= 0; i--) {
+ if (spaceship.intersects(enemyBullets[i])) {
+ // Create small explosion
+ createExplosion(enemyBullets[i].x, enemyBullets[i].y, 0xffffff);
+ // Remove bullet
+ enemyBullets[i].destroy();
+ enemyBullets.splice(i, 1);
+ // Player loses a life
+ lives--;
+ updateUI();
+ if (lives <= 0) {
+ gameOver();
}
}
}
// Check player collisions with gems
@@ -489,16 +461,10 @@
for (var i = powerups.length - 1; i >= 0; i--) {
if (spaceship.intersects(powerups[i])) {
// Play powerup sound
LK.getSound('powerup').play();
- // Apply powerup effect
- if (powerups[i].type === 0) {
- // Shield
- spaceship.activateShield(600);
- } else {
- // Double fire
- spaceship.activateDoubleFire(600);
- }
+ // Apply powerup effect - only double fire available
+ spaceship.activateDoubleFire(600);
// Remove powerup with animation
tween(powerups[i], {
alpha: 0,
scaleX: 2,