User prompt
make the player shoot bullets and make it so the bullet counter goes down when the player shoots one
User prompt
the purple things are the bullets
User prompt
when the player shoots, the bullet counter doesn't decrease
User prompt
make it show how many bullets you have left
User prompt
make there be a limit to the bullets and by shooting the objects, you can collect more bullets
Initial prompt
Project Cloud
/**** * Classes ****/ // Hero class var Hero = Container.expand(function () { var self = Container.call(this); var heroGraphics = self.createAsset('hero', 'Hero character', 0.5, 0.5); self.bulletLimit = 5; // Initialize bullet limit self.update = function () { // Hero update logic }; self.shoot = function () { if (this.bulletLimit > 0) { var bullet = new Bullet(); bullet.x = this.x; bullet.y = this.y - this.height / 2; heroBullets.push(bullet); game.addChild(bullet); this.bulletLimit--; } // Shoot only if bullets are available and decrement bullet limit }; }); // Bullet class var Bullet = Container.expand(function () { var self = Container.call(this); var bulletGraphics = self.createAsset('bullet', 'Hero Bullet', 0.5, 0.5); self.speed = -10; self.move = function () { self.y += self.speed; }; }); // Enemy class var Enemy = Container.expand(function () { var self = Container.call(this); var enemyGraphics = self.createAsset('enemy', 'Enemy character', 0.5, 0.5); self.speed = 2; self.move = function () { self.y += self.speed; }; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x000000 // Init game with black background }); /**** * Game Code ****/ // Initialize important asset arrays var heroBullets = []; var enemies = []; // Create hero var hero = game.addChild(new Hero()); hero.x = game.width / 2; hero.y = game.height - 100; // Create score display var scoreTxt = new Text2('0', { size: 150, fill: "#ffffff" }); scoreTxt.anchor.set(0.5, 0); LK.gui.top.addChild(scoreTxt); // Handle hero dragging var dragNode = null; game.on('down', function (obj) { dragNode = hero; }); game.on('move', function (obj) { if (dragNode) { var pos = obj.event.getLocalPosition(game); dragNode.x = pos.x; } }); game.on('up', function (obj) { dragNode = null; }); // Game tick event LK.on('tick', function () { // Update hero hero.update(); // Move and check bullets for (var i = heroBullets.length - 1; i >= 0; i--) { var bullet = heroBullets[i]; bullet.move(); // Check for bullet collision with enemies for (var j = enemies.length - 1; j >= 0; j--) { if (bullet.intersects(enemies[j])) { // Update score LK.setScore(LK.getScore() + 1); scoreTxt.setText(LK.getScore()); // Increment hero's bullet limit hero.bulletLimit++; // Destroy enemy and bullet enemies[j].destroy(); enemies.splice(j, 1); bullet.destroy(); heroBullets.splice(i, 1); break; } } // Remove off-screen bullets if (bullet.y < -50) { bullet.destroy(); heroBullets.splice(i, 1); } } // Move enemies for (var k = enemies.length - 1; k >= 0; k--) { enemies[k].move(); // Check for enemy collision with hero if (enemies[k].intersects(hero)) { LK.effects.flashScreen(0xff0000, 1000); LK.showGameOver(); return; } } // Spawn enemies if (LK.ticks % 120 == 0) { var enemy = new Enemy(); enemy.x = Math.random() * (game.width - enemy.width) + enemy.width / 2; enemy.y = -enemy.height; enemies.push(enemy); game.addChild(enemy); } // Hero shoots bullets if (LK.ticks % 30 == 0) { var bullet = new Bullet(); bullet.x = hero.x; bullet.y = hero.y - hero.height / 2; heroBullets.push(bullet); game.addChild(bullet); } });
===================================================================
--- original.js
+++ change.js
@@ -1,45 +1,53 @@
-/****
+/****
* Classes
****/
// Hero class
var Hero = Container.expand(function () {
- var self = Container.call(this);
- var heroGraphics = self.createAsset('hero', 'Hero character', 0.5, 0.5);
- self.update = function () {
- // Hero update logic
- };
- self.shoot = function () {
- // Hero shoot logic
- };
+ var self = Container.call(this);
+ var heroGraphics = self.createAsset('hero', 'Hero character', 0.5, 0.5);
+ self.bulletLimit = 5; // Initialize bullet limit
+ self.update = function () {
+ // Hero update logic
+ };
+ self.shoot = function () {
+ if (this.bulletLimit > 0) {
+ var bullet = new Bullet();
+ bullet.x = this.x;
+ bullet.y = this.y - this.height / 2;
+ heroBullets.push(bullet);
+ game.addChild(bullet);
+ this.bulletLimit--;
+ } // Shoot only if bullets are available and decrement bullet limit
+ };
});
// Bullet class
var Bullet = Container.expand(function () {
- var self = Container.call(this);
- var bulletGraphics = self.createAsset('bullet', 'Hero Bullet', 0.5, 0.5);
- self.speed = -10;
- self.move = function () {
- self.y += self.speed;
- };
+ var self = Container.call(this);
+ var bulletGraphics = self.createAsset('bullet', 'Hero Bullet', 0.5, 0.5);
+ self.speed = -10;
+ self.move = function () {
+ self.y += self.speed;
+ };
});
// Enemy class
var Enemy = Container.expand(function () {
- var self = Container.call(this);
- var enemyGraphics = self.createAsset('enemy', 'Enemy character', 0.5, 0.5);
- self.speed = 2;
- self.move = function () {
- self.y += self.speed;
- };
+ var self = Container.call(this);
+ var enemyGraphics = self.createAsset('enemy', 'Enemy character', 0.5, 0.5);
+ self.speed = 2;
+ self.move = function () {
+ self.y += self.speed;
+ };
});
-/****
+/****
* Initialize Game
****/
var game = new LK.Game({
- backgroundColor: 0x000000 // Init game with black background
+ backgroundColor: 0x000000 // Init game with black background
});
-/****
+/****
* Game Code
****/
// Initialize important asset arrays
var heroBullets = [];
@@ -49,78 +57,80 @@
hero.x = game.width / 2;
hero.y = game.height - 100;
// Create score display
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 hero dragging
var dragNode = null;
game.on('down', function (obj) {
- dragNode = hero;
+ dragNode = hero;
});
game.on('move', function (obj) {
- if (dragNode) {
- var pos = obj.event.getLocalPosition(game);
- dragNode.x = pos.x;
- }
+ if (dragNode) {
+ var pos = obj.event.getLocalPosition(game);
+ dragNode.x = pos.x;
+ }
});
game.on('up', function (obj) {
- dragNode = null;
+ dragNode = null;
});
// Game tick event
LK.on('tick', function () {
- // Update hero
- hero.update();
- // Move and check bullets
- for (var i = heroBullets.length - 1; i >= 0; i--) {
- var bullet = heroBullets[i];
- bullet.move();
- // Check for bullet collision with enemies
- for (var j = enemies.length - 1; j >= 0; j--) {
- if (bullet.intersects(enemies[j])) {
- // Update score
- LK.setScore(LK.getScore() + 1);
- scoreTxt.setText(LK.getScore());
- // Destroy enemy and bullet
- enemies[j].destroy();
- enemies.splice(j, 1);
- bullet.destroy();
- heroBullets.splice(i, 1);
- break;
- }
- }
- // Remove off-screen bullets
- if (bullet.y < -50) {
- bullet.destroy();
- heroBullets.splice(i, 1);
- }
- }
- // Move enemies
- for (var k = enemies.length - 1; k >= 0; k--) {
- enemies[k].move();
- // Check for enemy collision with hero
- if (enemies[k].intersects(hero)) {
- LK.effects.flashScreen(0xff0000, 1000);
- LK.showGameOver();
- return;
- }
- }
- // Spawn enemies
- if (LK.ticks % 120 == 0) {
- var enemy = new Enemy();
- enemy.x = Math.random() * (game.width - enemy.width) + enemy.width / 2;
- enemy.y = -enemy.height;
- enemies.push(enemy);
- game.addChild(enemy);
- }
- // Hero shoots bullets
- if (LK.ticks % 30 == 0) {
- var bullet = new Bullet();
- bullet.x = hero.x;
- bullet.y = hero.y - hero.height / 2;
- heroBullets.push(bullet);
- game.addChild(bullet);
- }
+ // Update hero
+ hero.update();
+ // Move and check bullets
+ for (var i = heroBullets.length - 1; i >= 0; i--) {
+ var bullet = heroBullets[i];
+ bullet.move();
+ // Check for bullet collision with enemies
+ for (var j = enemies.length - 1; j >= 0; j--) {
+ if (bullet.intersects(enemies[j])) {
+ // Update score
+ LK.setScore(LK.getScore() + 1);
+ scoreTxt.setText(LK.getScore());
+ // Increment hero's bullet limit
+ hero.bulletLimit++;
+ // Destroy enemy and bullet
+ enemies[j].destroy();
+ enemies.splice(j, 1);
+ bullet.destroy();
+ heroBullets.splice(i, 1);
+ break;
+ }
+ }
+ // Remove off-screen bullets
+ if (bullet.y < -50) {
+ bullet.destroy();
+ heroBullets.splice(i, 1);
+ }
+ }
+ // Move enemies
+ for (var k = enemies.length - 1; k >= 0; k--) {
+ enemies[k].move();
+ // Check for enemy collision with hero
+ if (enemies[k].intersects(hero)) {
+ LK.effects.flashScreen(0xff0000, 1000);
+ LK.showGameOver();
+ return;
+ }
+ }
+ // Spawn enemies
+ if (LK.ticks % 120 == 0) {
+ var enemy = new Enemy();
+ enemy.x = Math.random() * (game.width - enemy.width) + enemy.width / 2;
+ enemy.y = -enemy.height;
+ enemies.push(enemy);
+ game.addChild(enemy);
+ }
+ // Hero shoots bullets
+ if (LK.ticks % 30 == 0) {
+ var bullet = new Bullet();
+ bullet.x = hero.x;
+ bullet.y = hero.y - hero.height / 2;
+ heroBullets.push(bullet);
+ game.addChild(bullet);
+ }
});
\ No newline at end of file
android. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
letter X png. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
space background. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
galaxy background. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
galaxy background. High quality
space background.. High contrast