User prompt
increase the score according to the distance player shooting for example if the bullet hit at start of the screen where enemy spawn the score should be low , if the bullets hits the enemy when near the player the score should be max
User prompt
Please fix the bug: 'Uncaught ReferenceError: tween is not defined' in or related to this line: 'tween(player, {' Line Number: 214 ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
moving the player slightly to the right over time ↪💡 Consider importing and using the following plugins: @upit/tween.v1
Code edit (1 edits merged)
Please save this source code
User prompt
add wind effect
User prompt
add a background music for entire game to loop in gameplay
User prompt
create a main menu for this game and have start button to click and launch the game
User prompt
create a main menu for this game
Initial prompt
create a splash effect when enemy gets destroyed by bullets
/****
* Classes
****/
var Bullet = Container.expand(function () {
var self = Container.call(this);
var bulletGraphics = self.attachAsset('bullet', {
anchorX: 0,
anchorY: 0.6,
scaleX: 4,
scaleY: 4
});
self.speed = 10;
self.update = function () {
self.x += self.speed;
if (self.x < 0) {
self.destroy();
}
};
});
var Enemy = Container.expand(function () {
var self = Container.call(this);
var enemyGraphics = self.attachAsset('enemy', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 3,
scaleY: 2
});
self.speed = -15;
self.update = function () {
self.x += self.speed;
if (self.x < 0) {
self.destroy();
}
};
});
var Ground = Container.expand(function () {
var self = Container.call(this);
var groundGraphics = self.attachAsset('ground', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 3,
// Scale horizontally by 1.2
scaleY: 3 // Scale vertically by 1.2
});
self.update = function () {
// Ground moves from right to left
self.x -= 5;
if (self.x + self.width < 0) {
self.x = 2048;
}
};
});
var MainMenu = Container.expand(function () {
var self = Container.call(this);
// Create a title text
var titleText = new Text2('Main Menu', {
size: 150,
fill: 0xFFFFFF
});
titleText.anchor.set(0.5, 0.5);
titleText.x = 1024;
titleText.y = 800;
self.addChild(titleText);
// Create a start button
var startButton = new Text2('Start Game', {
size: 100,
fill: 0x00FF00
});
startButton.anchor.set(0.5, 0.5);
startButton.x = 1024;
startButton.y = 1200;
self.addChild(startButton);
// Add interaction to start button
startButton.interactive = true;
startButton.buttonMode = true;
startButton.on('pointerdown', function () {
self.destroy(); // Remove the menu
game.startGame(); // Start the game
});
});
var Player = Container.expand(function () {
var self = Container.call(this);
var playerGraphics = self.attachAsset('player', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 3,
// Scale horizontally by 1.2
scaleY: 3 // Scale vertically by 1.2
});
self.speed = 5;
self.update = function () {
if (self.x < 0) {
self.x = 0;
}
if (self.x > 300) {
self.x = 300;
}
// Player only moves horizontally
};
});
/****
* Initialize Game
****/
var game = new LK.Game();
/****
* Game Code
****/
game.startGame = function () {
// Initialize game elements here
var background1 = game.addChild(LK.getAsset('background', {
anchorX: 0.5,
anchorY: 0.5,
x: 1024,
y: 1366,
width: 2048,
height: 2732,
alpha: 1.0,
brightness: 1.5 // Enhance the clarity by increasing brightness
}));
var background2 = game.addChild(LK.getAsset('background', {
anchorX: 0.5,
anchorY: 0.5,
x: 3072,
y: 1366,
width: 2048,
height: 2732,
alpha: 1.0,
brightness: 1.5 // Enhance the clarity by increasing brightness
}));
var ground = game.addChild(new Ground());
ground.x = 1024;
ground.y = 2732 - 200; // Move the ground asset a little bit up from the bottom of the screen
var player = game.addChild(new Player());
player.x = 1024;
player.y = ground.y - player.height;
var enemies = [];
var bullets = [];
game.update = function () {
background1.x -= 5;
background2.x -= 5;
if (background1.x <= -1024) {
background1.x = background2.x + 2048;
}
if (background2.x <= -1024) {
background2.x = background1.x + 2048;
}
if (LK.ticks % 25 == 0) {
var enemy = game.addChild(new Enemy());
enemy.x = 2048;
enemy.y = Math.random() * 2732;
enemies.push(enemy);
}
for (var i = bullets.length - 1; i >= 0; i--) {
var bullet = bullets[i];
if (bullet.x > 2048) {
bullet.destroy();
bullets.splice(i, 1);
continue;
}
for (var j = enemies.length - 1; j >= 0; j--) {
var enemy = enemies[j];
if (bullet.intersects(enemy)) {
bullet.destroy();
bullets.splice(i, 1);
enemy.destroy();
enemies.splice(j, 1);
// Increase the score by 1
LK.setScore(LK.getScore() + 1);
// Update the score text with a dynamic effect
scoreText.setText('Germs: ' + LK.getScore());
scoreText.scale.set(1.5); // Increase the size of the score text
LK.setTimeout(function () {
scoreText.scale.set(1); // Reset the size of the score text after 100ms
}, 100);
scoreText.tint = Math.random() * 0xFFFFFF; // Change the color of the score text randomly
// Create a splash effect when enemy gets destroyed
var splash = LK.getAsset('splash', {
anchorX: 0.5,
anchorY: 0.5,
x: enemy.x,
y: enemy.y,
scaleX: 2,
scaleY: 2
});
game.addChild(splash);
LK.setTimeout(function () {
splash.destroy();
}, 500);
break;
}
}
if (bullets.length < 1 || enemies.length < 1) {
break;
}
}
// Check if enemy goes past the player
for (var i = enemies.length - 1; i >= 0; i--) {
var enemy = enemies[i];
if (enemy.x < player.x) {
enemy.destroy();
enemies.splice(i, 1);
// End the game if an enemy passes the player
LK.showGameOver();
}
}
};
game.down = function (x, y, obj) {
if (bullets.length < 10) {
var bullet = game.addChild(new Bullet());
bullet.x = player.x;
bullet.y = player.y;
bullets.push(bullet);
// Play a sound when bullet is fired
LK.getSound('shoot').play();
}
};
// Create a score text
var scoreText = new Text2('Score: 0', {
size: 100,
fill: 0x00FF00
});
scoreText.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreText);
game.move = function (x, y, obj) {
player.y = y;
};
};
var mainMenu = game.addChild(new MainMenu());
var background1 = game.addChild(LK.getAsset('background', {
anchorX: 0.5,
anchorY: 0.5,
x: 1024,
y: 1366,
width: 2048,
height: 2732,
alpha: 1.0,
brightness: 1.5 // Enhance the clarity by increasing brightness
}));
var background2 = game.addChild(LK.getAsset('background', {
anchorX: 0.5,
anchorY: 0.5,
x: 3072,
y: 1366,
width: 2048,
height: 2732,
alpha: 1.0,
brightness: 1.5 // Enhance the clarity by increasing brightness
}));
var ground = game.addChild(new Ground());
ground.x = 1024;
ground.y = 2732 - 200; // Move the ground asset a little bit up from the bottom of the screen
var player = game.addChild(new Player());
player.x = 1024;
player.y = ground.y - player.height;
var enemies = [];
var bullets = [];
game.update = function () {
background1.x -= 5;
background2.x -= 5;
if (background1.x <= -1024) {
background1.x = background2.x + 2048;
}
if (background2.x <= -1024) {
background2.x = background1.x + 2048;
}
if (LK.ticks % 25 == 0) {
var enemy = game.addChild(new Enemy());
enemy.x = 2048;
enemy.y = Math.random() * 2732;
enemies.push(enemy);
}
for (var i = bullets.length - 1; i >= 0; i--) {
var bullet = bullets[i];
if (bullet.x > 2048) {
bullet.destroy();
bullets.splice(i, 1);
continue;
}
for (var j = enemies.length - 1; j >= 0; j--) {
var enemy = enemies[j];
if (bullet.intersects(enemy)) {
bullet.destroy();
bullets.splice(i, 1);
enemy.destroy();
enemies.splice(j, 1);
// Increase the score by 1
LK.setScore(LK.getScore() + 1);
// Update the score text with a dynamic effect
scoreText.setText('Germs: ' + LK.getScore());
scoreText.scale.set(1.5); // Increase the size of the score text
LK.setTimeout(function () {
scoreText.scale.set(1); // Reset the size of the score text after 100ms
}, 100);
scoreText.tint = Math.random() * 0xFFFFFF; // Change the color of the score text randomly
// Create a splash effect when enemy gets destroyed
var splash = LK.getAsset('splash', {
anchorX: 0.5,
anchorY: 0.5,
x: enemy.x,
y: enemy.y,
scaleX: 2,
scaleY: 2
});
game.addChild(splash);
LK.setTimeout(function () {
splash.destroy();
}, 500);
break;
}
}
if (bullets.length < 1 || enemies.length < 1) {
break;
}
}
// Check if enemy goes past the player
for (var i = enemies.length - 1; i >= 0; i--) {
var enemy = enemies[i];
if (enemy.x < player.x) {
enemy.destroy();
enemies.splice(i, 1);
// End the game if an enemy passes the player
LK.showGameOver();
}
}
};
game.down = function (x, y, obj) {
if (bullets.length < 10) {
var bullet = game.addChild(new Bullet());
bullet.x = player.x;
bullet.y = player.y;
bullets.push(bullet);
// Play a sound when bullet is fired
LK.getSound('shoot').play();
}
};
// Create a score text
var scoreText = new Text2('Score: 0', {
size: 100,
fill: 0x00FF00
});
scoreText.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreText);
game.move = function (x, y, obj) {
player.y = y;
}; ===================================================================
--- original.js
+++ change.js
@@ -49,8 +49,36 @@
self.x = 2048;
}
};
});
+var MainMenu = Container.expand(function () {
+ var self = Container.call(this);
+ // Create a title text
+ var titleText = new Text2('Main Menu', {
+ size: 150,
+ fill: 0xFFFFFF
+ });
+ titleText.anchor.set(0.5, 0.5);
+ titleText.x = 1024;
+ titleText.y = 800;
+ self.addChild(titleText);
+ // Create a start button
+ var startButton = new Text2('Start Game', {
+ size: 100,
+ fill: 0x00FF00
+ });
+ startButton.anchor.set(0.5, 0.5);
+ startButton.x = 1024;
+ startButton.y = 1200;
+ self.addChild(startButton);
+ // Add interaction to start button
+ startButton.interactive = true;
+ startButton.buttonMode = true;
+ startButton.on('pointerdown', function () {
+ self.destroy(); // Remove the menu
+ game.startGame(); // Start the game
+ });
+});
var Player = Container.expand(function () {
var self = Container.call(this);
var playerGraphics = self.attachAsset('player', {
anchorX: 0.5,
@@ -78,8 +106,129 @@
/****
* Game Code
****/
+game.startGame = function () {
+ // Initialize game elements here
+ var background1 = game.addChild(LK.getAsset('background', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: 1024,
+ y: 1366,
+ width: 2048,
+ height: 2732,
+ alpha: 1.0,
+ brightness: 1.5 // Enhance the clarity by increasing brightness
+ }));
+ var background2 = game.addChild(LK.getAsset('background', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: 3072,
+ y: 1366,
+ width: 2048,
+ height: 2732,
+ alpha: 1.0,
+ brightness: 1.5 // Enhance the clarity by increasing brightness
+ }));
+ var ground = game.addChild(new Ground());
+ ground.x = 1024;
+ ground.y = 2732 - 200; // Move the ground asset a little bit up from the bottom of the screen
+ var player = game.addChild(new Player());
+ player.x = 1024;
+ player.y = ground.y - player.height;
+ var enemies = [];
+ var bullets = [];
+ game.update = function () {
+ background1.x -= 5;
+ background2.x -= 5;
+ if (background1.x <= -1024) {
+ background1.x = background2.x + 2048;
+ }
+ if (background2.x <= -1024) {
+ background2.x = background1.x + 2048;
+ }
+ if (LK.ticks % 25 == 0) {
+ var enemy = game.addChild(new Enemy());
+ enemy.x = 2048;
+ enemy.y = Math.random() * 2732;
+ enemies.push(enemy);
+ }
+ for (var i = bullets.length - 1; i >= 0; i--) {
+ var bullet = bullets[i];
+ if (bullet.x > 2048) {
+ bullet.destroy();
+ bullets.splice(i, 1);
+ continue;
+ }
+ for (var j = enemies.length - 1; j >= 0; j--) {
+ var enemy = enemies[j];
+ if (bullet.intersects(enemy)) {
+ bullet.destroy();
+ bullets.splice(i, 1);
+ enemy.destroy();
+ enemies.splice(j, 1);
+ // Increase the score by 1
+ LK.setScore(LK.getScore() + 1);
+ // Update the score text with a dynamic effect
+ scoreText.setText('Germs: ' + LK.getScore());
+ scoreText.scale.set(1.5); // Increase the size of the score text
+ LK.setTimeout(function () {
+ scoreText.scale.set(1); // Reset the size of the score text after 100ms
+ }, 100);
+ scoreText.tint = Math.random() * 0xFFFFFF; // Change the color of the score text randomly
+ // Create a splash effect when enemy gets destroyed
+ var splash = LK.getAsset('splash', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: enemy.x,
+ y: enemy.y,
+ scaleX: 2,
+ scaleY: 2
+ });
+ game.addChild(splash);
+ LK.setTimeout(function () {
+ splash.destroy();
+ }, 500);
+ break;
+ }
+ }
+ if (bullets.length < 1 || enemies.length < 1) {
+ break;
+ }
+ }
+ // Check if enemy goes past the player
+ for (var i = enemies.length - 1; i >= 0; i--) {
+ var enemy = enemies[i];
+ if (enemy.x < player.x) {
+ enemy.destroy();
+ enemies.splice(i, 1);
+ // End the game if an enemy passes the player
+ LK.showGameOver();
+ }
+ }
+ };
+ game.down = function (x, y, obj) {
+ if (bullets.length < 10) {
+ var bullet = game.addChild(new Bullet());
+ bullet.x = player.x;
+ bullet.y = player.y;
+ bullets.push(bullet);
+ // Play a sound when bullet is fired
+ LK.getSound('shoot').play();
+ }
+ };
+ // Create a score text
+ var scoreText = new Text2('Score: 0', {
+ size: 100,
+ fill: 0x00FF00
+ });
+ scoreText.anchor.set(0.5, 0);
+ LK.gui.top.addChild(scoreText);
+ game.move = function (x, y, obj) {
+ player.y = y;
+ };
+};
+var mainMenu = game.addChild(new MainMenu());
var background1 = game.addChild(LK.getAsset('background', {
anchorX: 0.5,
anchorY: 0.5,
x: 1024,
make a cartoony enemy germs.. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
character with vaccum gun aiming front In-Game asset.. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
green germs splash out. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
cartoony art style single tree. In-Game asset. Blank background. High contrast.