User prompt
add animated particles to the explosion
Code edit (1 edits merged)
Please save this source code
User prompt
put the explosion effect in the correct place according to the killed enemy
User prompt
add an explosion particle effect when enemies die
User prompt
add moving stars to the background to simulate movement
User prompt
implement the powerup
User prompt
Please fix the bug: 'ReferenceError: powerUpActive is not defined' in or related to this line: 'player.x += (5 + powerUpActive * 5) * playerDirection;' Line Number: 97
User prompt
be creative and make it more interesting
User prompt
make the player change direction when clicking to shoot
User prompt
make the player move back and forth since it's only a one click game
Initial prompt
One Button Shooter
/**** * Classes ****/ //<Assets used in the game will automatically appear here> // Bullet class 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; }; }); // 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.update = function () { self.y += self.speed; }; }); // Player class var Player = Container.expand(function () { var self = Container.call(this); var playerGraphics = self.attachAsset('player', { anchorX: 0.5, anchorY: 0.5 }); self.shoot = function () { var bullet = new Bullet(); bullet.x = self.x; bullet.y = self.y - playerGraphics.height / 2; bullets.push(bullet); game.addChild(bullet); }; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x000000 //Init game with black background }); /**** * Game Code ****/ // Initialize arrays and variables var bullets = []; var enemies = []; var player = game.addChild(new Player()); player.x = 2048 / 2; player.y = 2732 - 200; var playerDirection = 1; // Score display var score = 0; var scoreTxt = new Text2('0', { size: 150, fill: "#ffffff" }); scoreTxt.anchor.set(0.5, 0); LK.gui.top.addChild(scoreTxt); // Handle shooting game.down = function (x, y, obj) { player.shoot(); }; // Update game state game.update = function () { // Update player's position player.x += 5 * playerDirection; // Change direction if player hits the edge if (player.x > 2048 - player.width / 2 || player.x < player.width / 2) { playerDirection *= -1; } // Update bullets for (var i = bullets.length - 1; i >= 0; i--) { bullets[i].update(); if (bullets[i].y < -50) { bullets[i].destroy(); bullets.splice(i, 1); } } // Update enemies for (var j = enemies.length - 1; j >= 0; j--) { enemies[j].update(); if (enemies[j].y > 2732 + 50) { enemies[j].destroy(); enemies.splice(j, 1); } } // Check for collisions for (var k = bullets.length - 1; k >= 0; k--) { for (var l = enemies.length - 1; l >= 0; l--) { if (bullets[k].intersects(enemies[l])) { bullets[k].destroy(); enemies[l].destroy(); bullets.splice(k, 1); enemies.splice(l, 1); score++; scoreTxt.setText(score); break; } } } // Spawn enemies if (LK.ticks % 60 == 0) { var enemy = new Enemy(); enemy.x = Math.random() * 2048; enemy.y = -50; enemies.push(enemy); game.addChild(enemy); } // Check for game over for (var m = enemies.length - 1; m >= 0; m--) { if (enemies[m].intersects(player)) { LK.effects.flashScreen(0xff0000, 1000); LK.showGameOver(); } } };
===================================================================
--- original.js
+++ change.js
@@ -1,120 +1,127 @@
-/****
+/****
* Classes
-****/
+****/
//<Assets used in the game will automatically appear here>
// Bullet class
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;
- };
+ 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;
+ };
});
// 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.update = function () {
- self.y += self.speed;
- };
+ var self = Container.call(this);
+ var enemyGraphics = self.attachAsset('enemy', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.speed = 5;
+ self.update = function () {
+ self.y += self.speed;
+ };
});
// Player class
var Player = Container.expand(function () {
- var self = Container.call(this);
- var playerGraphics = self.attachAsset('player', {
- anchorX: 0.5,
- anchorY: 0.5
- });
- self.shoot = function () {
- var bullet = new Bullet();
- bullet.x = self.x;
- bullet.y = self.y - playerGraphics.height / 2;
- bullets.push(bullet);
- game.addChild(bullet);
- };
+ var self = Container.call(this);
+ var playerGraphics = self.attachAsset('player', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.shoot = function () {
+ var bullet = new Bullet();
+ bullet.x = self.x;
+ bullet.y = self.y - playerGraphics.height / 2;
+ bullets.push(bullet);
+ game.addChild(bullet);
+ };
});
-/****
+/****
* Initialize Game
-****/
+****/
var game = new LK.Game({
- backgroundColor: 0x000000 //Init game with black background
+ backgroundColor: 0x000000 //Init game with black background
});
-/****
+/****
* Game Code
-****/
+****/
// Initialize arrays and variables
var bullets = [];
var enemies = [];
var player = game.addChild(new Player());
player.x = 2048 / 2;
player.y = 2732 - 200;
+var playerDirection = 1;
// Score display
var score = 0;
var scoreTxt = new Text2('0', {
- size: 150,
- fill: "#ffffff"
+ size: 150,
+ fill: "#ffffff"
});
scoreTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreTxt);
// Handle shooting
game.down = function (x, y, obj) {
- player.shoot();
+ player.shoot();
};
// Update game state
game.update = function () {
- // Update bullets
- for (var i = bullets.length - 1; i >= 0; i--) {
- bullets[i].update();
- if (bullets[i].y < -50) {
- bullets[i].destroy();
- bullets.splice(i, 1);
- }
- }
- // Update enemies
- for (var j = enemies.length - 1; j >= 0; j--) {
- enemies[j].update();
- if (enemies[j].y > 2732 + 50) {
- enemies[j].destroy();
- enemies.splice(j, 1);
- }
- }
- // Check for collisions
- for (var k = bullets.length - 1; k >= 0; k--) {
- for (var l = enemies.length - 1; l >= 0; l--) {
- if (bullets[k].intersects(enemies[l])) {
- bullets[k].destroy();
- enemies[l].destroy();
- bullets.splice(k, 1);
- enemies.splice(l, 1);
- score++;
- scoreTxt.setText(score);
- break;
- }
- }
- }
- // Spawn enemies
- if (LK.ticks % 60 == 0) {
- var enemy = new Enemy();
- enemy.x = Math.random() * 2048;
- enemy.y = -50;
- enemies.push(enemy);
- game.addChild(enemy);
- }
- // Check for game over
- for (var m = enemies.length - 1; m >= 0; m--) {
- if (enemies[m].intersects(player)) {
- LK.effects.flashScreen(0xff0000, 1000);
- LK.showGameOver();
- }
- }
+ // Update player's position
+ player.x += 5 * playerDirection;
+ // Change direction if player hits the edge
+ if (player.x > 2048 - player.width / 2 || player.x < player.width / 2) {
+ playerDirection *= -1;
+ }
+ // Update bullets
+ for (var i = bullets.length - 1; i >= 0; i--) {
+ bullets[i].update();
+ if (bullets[i].y < -50) {
+ bullets[i].destroy();
+ bullets.splice(i, 1);
+ }
+ }
+ // Update enemies
+ for (var j = enemies.length - 1; j >= 0; j--) {
+ enemies[j].update();
+ if (enemies[j].y > 2732 + 50) {
+ enemies[j].destroy();
+ enemies.splice(j, 1);
+ }
+ }
+ // Check for collisions
+ for (var k = bullets.length - 1; k >= 0; k--) {
+ for (var l = enemies.length - 1; l >= 0; l--) {
+ if (bullets[k].intersects(enemies[l])) {
+ bullets[k].destroy();
+ enemies[l].destroy();
+ bullets.splice(k, 1);
+ enemies.splice(l, 1);
+ score++;
+ scoreTxt.setText(score);
+ break;
+ }
+ }
+ }
+ // Spawn enemies
+ if (LK.ticks % 60 == 0) {
+ var enemy = new Enemy();
+ enemy.x = Math.random() * 2048;
+ enemy.y = -50;
+ enemies.push(enemy);
+ game.addChild(enemy);
+ }
+ // Check for game over
+ for (var m = enemies.length - 1; m >= 0; m--) {
+ if (enemies[m].intersects(player)) {
+ LK.effects.flashScreen(0xff0000, 1000);
+ LK.showGameOver();
+ }
+ }
};
\ No newline at end of file
explosion toony. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
SKULL BALL. A ball with a skull on, billard ball with skull. Studio Ghibli. Ghibli style. Mobile game. Colorful. hand drawn. cute. fun. In-Game asset. 2d. Blank background. High contrast. No shadows.