User prompt
Ya da bu güçlendirme canımız 5'ten az ise canımızı 5'e çıkarsın
User prompt
Oyuna bir güçlendirme daha ekleyelim. Bu güçlendirmeyi aldığımızda beşli atış yapabilelim
User prompt
Düşmanlar ateş ederken ses çıkarsın, biz de ateş ederken ses çıkaralım. Son olarak güçlendirici aldığımızda ses çıkaralım
User prompt
Bizim mermilerimiz düşman mermilere çarparsa iki mermi birvirini yok etsin. Ayrıca asteroidleri de yok edebilmemiz lazım
User prompt
Start game tuşu bütün varlıklardan ayrı bir varlık olmalıydı. Shıps tuşu da. Bunları düzelt. Bu iki tuş diğer varlıklardan ayrı birer varlık olsunlar
User prompt
Asteroidler de bize saldırsın. Ayrıca shıps ve start game butonlarını varlık haline getir
User prompt
Karakter mor karelere basarsa canı gitmesin. Ayrıca Start Game yazısını karelere göte düzenle
User prompt
Karakterin 5 canı olsun. düşmanlar ve meteorlar ona çarparsa can kaybetsin. Karakterotomatik olarak ateş etsin ve mor karelere değersek 10 saniyeliğine karakter 3'er 3'er ateş etsin. Mor kareler daha az düşsün. Oyuna başlangıç ekranı ekle ve bu başlangıç ekranında iki tane tuş olsun: Oyunu Başlat tuşu ve Uçaklar tuşu. Oyunu Başlat tuşu oyunu başlatsın, Uçaklar tuşunda da 3 farklı tuş olsun. Bu tuşlar bizim karaktrimizin görünümünü değiştirsin. Yani ben bu tuşlara farklı görünümler koymak istiyorum. Karakter, ben tuşa bastığımda tuştaki görünüme geçsin. ↪💡 Consider importing and using the following plugins: @upit/storage.v1, @upit/tween.v1
Remix started
Copy Galaxy attack shooter
/**** * Plugins ****/ var storage = LK.import("@upit/storage.v1", { selectedShip: 0 }); var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ // Asteroid class var Asteroid = Container.expand(function () { var self = Container.call(this); var asteroidGraphics = self.attachAsset('asteroid', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 3; self.update = function () { self.y += self.speed; if (self.y > 2732 + asteroidGraphics.height) { self.destroy(); } }; }); // Enemy class var Enemy = Container.expand(function () { var self = Container.call(this); var enemyGraphics = self.attachAsset('enemy', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 5; self.lastShot = 0; self.update = function () { self.y += self.speed; // Shoot at hero if in range if (LK.ticks - self.lastShot > 60 && self.y > 200 && self.y < 2000) { var bullet = new EnemyBullet(); bullet.x = self.x; bullet.y = self.y + enemyGraphics.height / 2; game.addChild(bullet); enemyBullets.push(bullet); self.lastShot = LK.ticks; } if (self.y > 2732 + enemyGraphics.height) { self.destroy(); } }; return self; }); // EnemyBullet class var EnemyBullet = Container.expand(function () { var self = Container.call(this); var bulletGraphics = self.attachAsset('asteroid', { anchorX: 0.5, anchorY: 0.5, scaleX: 0.5, scaleY: 0.5 }); bulletGraphics.tint = 0xff4444; self.speed = 8; self.update = function () { self.y += self.speed; if (self.y > 2732 + bulletGraphics.height) { self.destroy(); } }; return self; }); //<Assets used in the game will automatically appear here> // Hero class var Hero = Container.expand(function () { var self = Container.call(this); self.lives = 5; self.lastHit = 0; self.invulnerable = false; self.shipType = storage.selectedShip || 0; var shipAssets = ['hero', 'hero2', 'hero3']; var heroGraphics = self.attachAsset(shipAssets[self.shipType], { anchorX: 0.5, anchorY: 0.5 }); self.speed = 10; self.changeShip = function (shipIndex) { self.removeChild(heroGraphics); self.shipType = shipIndex; heroGraphics = self.attachAsset(shipAssets[shipIndex], { anchorX: 0.5, anchorY: 0.5 }); }; self.update = function () { // Handle invulnerability flashing if (self.invulnerable) { heroGraphics.alpha = LK.ticks % 10 < 5 ? 0.5 : 1.0; if (LK.ticks - self.lastHit > 120) { // 2 seconds of invulnerability self.invulnerable = false; heroGraphics.alpha = 1.0; } } }; self.takeDamage = function () { if (!self.invulnerable) { self.lives--; self.lastHit = LK.ticks; self.invulnerable = true; LK.effects.flashObject(self, 0xff0000, 500); if (self.lives <= 0) { LK.showGameOver(); } } }; self.shoot = function () { if (tripleShot && LK.ticks < tripleShootEndTime) { // Triple shot for (var i = -1; i <= 1; i++) { var bullet = new HeroBullet(); bullet.x = self.x + i * 50; bullet.y = self.y - heroGraphics.height / 2; game.addChild(bullet); heroBullets.push(bullet); } } else { // Normal shot var bullet = new HeroBullet(); bullet.x = self.x; bullet.y = self.y - heroGraphics.height / 2; game.addChild(bullet); heroBullets.push(bullet); } }; return self; }); // HeroBullet class var HeroBullet = Container.expand(function () { var self = Container.call(this); var bulletGraphics = self.attachAsset('heroBullet', { anchorX: 0.5, anchorY: 0.5 }); self.speed = -15; self.update = function () { self.y += self.speed; if (self.y < -bulletGraphics.height) { self.destroy(); } }; }); // PowerUp class var PowerUp = Container.expand(function () { var self = Container.call(this); var powerUpGraphics = self.attachAsset('powerUp', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 4; self.update = function () { self.y += self.speed; if (self.y > 2732 + powerUpGraphics.height) { self.destroy(); } }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x000000 //Init game with black background }); /**** * Game Code ****/ // Initialize arrays and variables var hero; var heroBullets = []; var enemyBullets = []; var enemies = []; var asteroids = []; var powerUps = []; var score = 0; var gameStarted = false; var showingShipSelection = false; var tripleShot = false; var tripleShootEndTime = 0; // UI Elements var scoreTxt; var livesTxt; var startScreen; var shipSelectionScreen; function createStartScreen() { startScreen = new Container(); game.addChild(startScreen); var titleText = new Text2('DEFEND THE GALAXY', { size: 120, fill: 0xFFFFFF }); titleText.anchor.set(0.5, 0.5); titleText.x = 2048 / 2; titleText.y = 2732 / 3; startScreen.addChild(titleText); var startButton = LK.getAsset('startButton', { anchorX: 0.5, anchorY: 0.5, x: 2048 / 2, y: 2732 / 2 }); var startButtonText = new Text2('START GAME', { size: 60, fill: 0xFFFFFF }); startButtonText.anchor.set(0.5, 0.5); startButton.addChild(startButtonText); startScreen.addChild(startButton); startButton.down = function () { startGame(); }; var shipsButton = LK.getAsset('shipsButton', { anchorX: 0.5, anchorY: 0.5, x: 2048 / 2, y: 2732 / 2 + 200 }); var shipsButtonText = new Text2('SHIPS', { size: 60, fill: 0xFFFFFF }); shipsButtonText.anchor.set(0.5, 0.5); shipsButton.addChild(shipsButtonText); startScreen.addChild(shipsButton); shipsButton.down = function () { showShipSelection(); }; } function createShipSelectionScreen() { shipSelectionScreen = new Container(); game.addChild(shipSelectionScreen); var titleText = new Text2('SELECT YOUR SHIP', { size: 100, fill: 0xFFFFFF }); titleText.anchor.set(0.5, 0.5); titleText.x = 2048 / 2; titleText.y = 400; shipSelectionScreen.addChild(titleText); var shipAssets = ['hero', 'hero2', 'hero3']; var shipColors = ['Blue Fighter', 'Red Cruiser', 'Cyan Interceptor']; for (var i = 0; i < 3; i++) { var shipButton = new Container(); var shipGraphics = LK.getAsset(shipAssets[i], { anchorX: 0.5, anchorY: 0.5, scaleX: 2, scaleY: 2 }); shipButton.addChild(shipGraphics); var shipName = new Text2(shipColors[i], { size: 60, fill: 0xFFFFFF }); shipName.anchor.set(0.5, 0.5); shipName.y = 120; shipButton.addChild(shipName); shipButton.x = 2048 / 4 + i * 2048 / 4; shipButton.y = 2732 / 2; shipSelectionScreen.addChild(shipButton); shipButton.shipIndex = i; shipButton.down = function () { storage.selectedShip = this.shipIndex; hideShipSelection(); }; } var backButton = new Container(); var backButtonBg = LK.getAsset('asteroid', { anchorX: 0.5, anchorY: 0.5, scaleX: 2, scaleY: 1 }); backButton.addChild(backButtonBg); var backButtonText = new Text2('BACK', { size: 60, fill: 0xFFFFFF }); backButtonText.anchor.set(0.5, 0.5); backButton.addChild(backButtonText); backButton.x = 2048 / 2; backButton.y = 2732 - 300; shipSelectionScreen.addChild(backButton); backButton.down = function () { hideShipSelection(); }; shipSelectionScreen.visible = false; } function showShipSelection() { showingShipSelection = true; startScreen.visible = false; shipSelectionScreen.visible = true; } function hideShipSelection() { showingShipSelection = false; startScreen.visible = true; shipSelectionScreen.visible = false; } function startGame() { gameStarted = true; startScreen.destroy(); shipSelectionScreen.destroy(); // Initialize UI scoreTxt = new Text2('Score: 0', { size: 80, fill: 0xFFFFFF }); scoreTxt.anchor.set(0.5, 0); LK.gui.top.addChild(scoreTxt); livesTxt = new Text2('Lives: 5', { size: 80, fill: 0xFFFFFF }); livesTxt.anchor.set(0.5, 0); livesTxt.y = 100; LK.gui.top.addChild(livesTxt); // Initialize hero hero = new Hero(); hero.x = 2048 / 2; hero.y = 2732 - 200; game.addChild(hero); } // Create screens createStartScreen(); createShipSelectionScreen(); // Handle game events game.move = function (x, y, obj) { if (gameStarted && hero) { hero.x = x; hero.y = y; } }; // Update game state game.update = function () { if (!gameStarted) return; // Automatic shooting if (LK.ticks % 20 == 0) { // Shoot every 20 ticks hero.shoot(); } // Update hero bullets for (var i = heroBullets.length - 1; i >= 0; i--) { heroBullets[i].update(); if (heroBullets[i].y < -heroBullets[i].height) { heroBullets[i].destroy(); heroBullets.splice(i, 1); } } // Update enemy bullets for (var i = enemyBullets.length - 1; i >= 0; i--) { enemyBullets[i].update(); if (enemyBullets[i].y > 2732 + enemyBullets[i].height) { enemyBullets[i].destroy(); enemyBullets.splice(i, 1); } } // Check enemy bullet vs hero collisions for (var i = enemyBullets.length - 1; i >= 0; i--) { if (hero.intersects(enemyBullets[i])) { hero.takeDamage(); enemyBullets[i].destroy(); enemyBullets.splice(i, 1); livesTxt.setText('Lives: ' + hero.lives); } } // Update enemies for (var i = enemies.length - 1; i >= 0; i--) { enemies[i].update(); if (enemies[i].y > 2732 + enemies[i].height) { enemies[i].destroy(); enemies.splice(i, 1); } } // Update asteroids for (var i = asteroids.length - 1; i >= 0; i--) { asteroids[i].update(); if (asteroids[i].y > 2732 + asteroids[i].height) { asteroids[i].destroy(); asteroids.splice(i, 1); } } // Update power-ups for (var i = powerUps.length - 1; i >= 0; i--) { powerUps[i].update(); if (powerUps[i].y > 2732 + powerUps[i].height) { powerUps[i].destroy(); powerUps.splice(i, 1); } } // Check hero bullets vs enemy bullets collisions for (var i = heroBullets.length - 1; i >= 0; i--) { for (var j = enemyBullets.length - 1; j >= 0; j--) { if (heroBullets[i] && enemyBullets[j] && heroBullets[i].intersects(enemyBullets[j])) { heroBullets[i].destroy(); enemyBullets[j].destroy(); heroBullets.splice(i, 1); enemyBullets.splice(j, 1); break; } } } // Check bullet vs enemy collisions for (var i = heroBullets.length - 1; i >= 0; i--) { for (var j = enemies.length - 1; j >= 0; j--) { if (heroBullets[i] && enemies[j] && heroBullets[i].intersects(enemies[j])) { heroBullets[i].destroy(); enemies[j].destroy(); heroBullets.splice(i, 1); enemies.splice(j, 1); score += 10; scoreTxt.setText('Score: ' + score); break; } } } // Check bullet vs asteroid collisions for (var i = heroBullets.length - 1; i >= 0; i--) { for (var j = asteroids.length - 1; j >= 0; j--) { if (heroBullets[i] && asteroids[j] && heroBullets[i].intersects(asteroids[j])) { heroBullets[i].destroy(); asteroids[j].destroy(); heroBullets.splice(i, 1); asteroids.splice(j, 1); score += 5; scoreTxt.setText('Score: ' + score); break; } } } // Check hero vs enemy collisions for (var i = enemies.length - 1; i >= 0; i--) { if (hero.intersects(enemies[i])) { hero.takeDamage(); enemies[i].destroy(); enemies.splice(i, 1); livesTxt.setText('Lives: ' + hero.lives); } } // Check hero vs asteroid collisions for (var i = asteroids.length - 1; i >= 0; i--) { if (hero.intersects(asteroids[i])) { hero.takeDamage(); asteroids[i].destroy(); asteroids.splice(i, 1); livesTxt.setText('Lives: ' + hero.lives); } } // Check hero vs power-up collisions for (var i = powerUps.length - 1; i >= 0; i--) { if (hero.intersects(powerUps[i])) { tripleShot = true; tripleShootEndTime = LK.ticks + 600; // 10 seconds at 60fps powerUps[i].destroy(); powerUps.splice(i, 1); LK.effects.flashObject(hero, 0x9b59b6, 500); } } // Spawn enemies if (LK.ticks % 60 == 0) { var enemy = new Enemy(); enemy.x = Math.random() * 2048; enemy.y = -100; game.addChild(enemy); enemies.push(enemy); } // Spawn asteroids if (LK.ticks % 120 == 0) { var asteroid = new Asteroid(); asteroid.x = Math.random() * 2048; asteroid.y = -100; game.addChild(asteroid); asteroids.push(asteroid); } // Spawn power-ups (less frequently) if (LK.ticks % 300 == 0) { // Every 5 seconds var powerUp = new PowerUp(); powerUp.x = Math.random() * 2048; powerUp.y = -100; game.addChild(powerUp); powerUps.push(powerUp); } };
===================================================================
--- original.js
+++ change.js
@@ -397,8 +397,20 @@
powerUps[i].destroy();
powerUps.splice(i, 1);
}
}
+ // Check hero bullets vs enemy bullets collisions
+ for (var i = heroBullets.length - 1; i >= 0; i--) {
+ for (var j = enemyBullets.length - 1; j >= 0; j--) {
+ if (heroBullets[i] && enemyBullets[j] && heroBullets[i].intersects(enemyBullets[j])) {
+ heroBullets[i].destroy();
+ enemyBullets[j].destroy();
+ heroBullets.splice(i, 1);
+ enemyBullets.splice(j, 1);
+ break;
+ }
+ }
+ }
// Check bullet vs enemy collisions
for (var i = heroBullets.length - 1; i >= 0; i--) {
for (var j = enemies.length - 1; j >= 0; j--) {
if (heroBullets[i] && enemies[j] && heroBullets[i].intersects(enemies[j])) {
@@ -411,8 +423,22 @@
break;
}
}
}
+ // Check bullet vs asteroid collisions
+ for (var i = heroBullets.length - 1; i >= 0; i--) {
+ for (var j = asteroids.length - 1; j >= 0; j--) {
+ if (heroBullets[i] && asteroids[j] && heroBullets[i].intersects(asteroids[j])) {
+ heroBullets[i].destroy();
+ asteroids[j].destroy();
+ heroBullets.splice(i, 1);
+ asteroids.splice(j, 1);
+ score += 5;
+ scoreTxt.setText('Score: ' + score);
+ break;
+ }
+ }
+ }
// Check hero vs enemy collisions
for (var i = enemies.length - 1; i >= 0; i--) {
if (hero.intersects(enemies[i])) {
hero.takeDamage();
Retro tarzı 2D Uzay Gemisi Işını. In-Game asset. 2d. High contrast. No shadows
Klasik retro tarzı 2D Kırmızı Uzay gemisi. In-Game asset. 2d. High contrast. No shadows
Mavi renkli 2D retro bir uzay gemisi. In-Game asset. 2d. High contrast. No shadows
Cyan renginde 2D retro tarzı bir uzay gemisi. In-Game asset. 2d. High contrast. No shadows
2D retro tarzı bir mermi, dikey. In-Game asset. 2d. High contrast. No shadows
Hava Yardımı kutusu, neon ışıklı. In-Game asset. 2d. High contrast. No shadows
2D retro tarzı asteroit. In-Game asset. 2d. High contrast. No shadows
Üstünde mermi resmi olan bir hava yardım kutusu. Neon ışıklı. In-Game asset. 2d. High contrast. No shadows