User prompt
why score point showing NaN?
User prompt
show health bar and score text on the left side of the screen
User prompt
Fix the bugs
User prompt
make it bigger and move it to the bottom left of the screen, let small distance from the outlines
User prompt
make it up
User prompt
make the health bar bigger then this and move it on the left side down
User prompt
fix score and health bar bug they are out of the screen
User prompt
move score to the middle
User prompt
set health bar and score in the screen
User prompt
make the health bar small not large horizontal
User prompt
Make health bar dow score text like before, like box health bar 1000x1000
Code edit (4 edits merged)
Please save this source code
User prompt
resize the health bar
User prompt
Fix health bar
User prompt
If dragon shot the spheres it get a score points
User prompt
make more fireballs
User prompt
Analyse the game for any bugs
User prompt
Change the direction of the shouts from uptodown
User prompt
Make the shouts goes forward and fast
User prompt
Make the background fit to screen, smooth, without blur or pixels.
Code edit (1 edits merged)
Please save this source code
User prompt
make the spheres so taller
Code edit (3 edits merged)
Please save this source code
User prompt
more taller
User prompt
Make spheres taller vertical
/**** * Classes ****/ //<Assets used in the game will automatically appear here> //<Write imports for supported plugins here> // Dragon class to represent the player character var Dragon = Container.expand(function () { var self = Container.call(this); var dragonGraphics = self.attachAsset('dragon', { anchorX: 0.5, anchorY: 0.5, scaleX: 1.5, scaleY: 1.5, smooth: true, filterQuality: 10 }); self.speed = 10; // Speed of the dragon self.update = function () { // Update logic for the dragon can be added here if needed }; }); // Fireball class to represent the fireballs that the dragon shoots var Fireball = Container.expand(function () { var self = Container.call(this); var fireballGraphics = self.attachAsset('Shout', { anchorX: 0.5, anchorY: 0.5, scaleX: 0.5, scaleY: 0.5, smooth: true, filterQuality: 10 }); self.speed = 10; // Speed of the fireball self.update = function () { // Move the fireball straight up self.y -= self.speed; }; }); // HealthBar class to represent the player's health var HealthBar = Container.expand(function () { var self = Container.call(this); var healthBarGraphics = self.attachAsset('healthBar', { anchorX: 0.0, anchorY: 0.0, scaleX: 2048 / 1000, // Scale to fit the game width scaleY: 0.1 }); self.maxHealth = 1000; self.currentHealth = self.maxHealth; self.update = function () { healthBarGraphics.scaleX = self.currentHealth / self.maxHealth; healthBarGraphics.scaleY = 0.05; // Resize the health bar to fit the top of the screen }; }); // Sphere class to represent the obstacles var Sphere = Container.expand(function () { var self = Container.call(this); var sphereGraphics = self.attachAsset('sphere', { anchorX: 0.5, anchorY: 0.5, scaleX: 0.5, scaleY: 1.0, // Increase the height of the spheres smooth: true, filterQuality: 10 }); self.speed = 3; // Speed of the sphere var sizes = [0.7, 0.5, 1]; var size = sizes[Math.floor(Math.random() * sizes.length)]; // Assign points to spheres based on their size if (size == 0.7) { self.points = 20; } else if (size == 0.5) { self.points = 10; } else { self.points = 5; } self.update = function () { // Move the sphere straight up self.y -= self.speed; }; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x000000, //Init game with black background height: 3000 // Increase the game screen height }); /**** * Game Code ****/ // Initialize game variables var dragon; var spheres = []; var fireballs = []; // Initialize fireballs array var score = 0; // Initialize score to 0 var scoreTxt; // Add background image to the game var background = LK.getAsset('Background', { anchorX: 0.0, anchorY: 0.0 }); background = game.addChild(background); background.width = game.width; background.height = game.height; background.smooth = false; // Disable smoothing to remove blur background.filterQuality = 1; // Set the filter quality to low to remove blur background.scale.set(game.width / background.width, game.height / background.height); // Scale the background to fit the screen // Function to handle game updates game.update = function () { // Update dragon position based on touch input if (!LK.gameOver && dragNode && dragNode.global) { dragNode.x = game.toLocal(dragNode.global).x; } // Update spheres and check for collisions if (!LK.gameOver) { for (var i = spheres.length - 1; i >= 0; i--) { spheres[i].update(); if (spheres[i].intersects(dragon)) { var evade = Math.floor(Math.random() * 51); if (evade <= 50) { healthBar.currentHealth -= spheres[i].points; // Reduce health based on points if (healthBar.currentHealth <= 0) { LK.effects.flashScreen(0xff0000, 1000); LK.showGameOver({ bar: { color: 0xFFA500, // Orange color for the outlines fill: 0xFFA500 // Orange color for the fill }, text: { color: 0x00FFFF // Blue cyan color for the text } }); } } } else if (spheres[i].y < 0) { spheres[i].destroy(); score += spheres[i].points; // Increase score when the sphere is dodged scoreTxt.setText('Score: ' + score); // Update score text spheres.splice(i, 1); } } } // Check if a fireball hits a sphere for (var i = spheres.length - 1; i >= 0; i--) { for (var j = fireballs.length - 1; j >= 0; j--) { if (spheres[i].intersects(fireballs[j])) { spheres[i].destroy(); fireballs[j].destroy(); spheres.splice(i, 1); fireballs.splice(j, 1); break; } } } // Spawn new spheres if (!LK.gameOver && LK.ticks % 60 == 0) { var newSphere = new Sphere(); newSphere.x = Math.random() * 2048; newSphere.y = 2732; spheres.push(newSphere); game.addChild(newSphere); } // Regenerate player's health to max when score reaches 1000 if (score >= 1000) { healthBar.currentHealth = healthBar.maxHealth; } }; // Initialize dragon dragon = game.addChild(new Dragon()); dragon.x = 2048 / 2; dragon.y = 200; // Initialize level display var levelTxt = new Text2('Level: 1', { size: 100, fill: 0x800080, // Purple color font: "'Time new roman',Impact,'Arial Black',Tahoma" }); levelTxt.anchor.set(1, 1); LK.gui.bottomRight.addChild(levelTxt); levelTxt.x = -50; // Move the level text to the right side of the screen levelTxt.y = -100; // Position the level text at the bottom of the screen // Initialize score display scoreTxt = new Text2('Score: 0', { size: 100, fill: 0x800080, // Purple color font: "'Time new roman',Impact,'Arial Black',Tahoma" }); LK.gui.top.addChild(scoreTxt); scoreTxt.anchor.set(0, 0); // Sets anchor to the left of the top edge of the text. scoreTxt.x = 50; // Position the score text a little bit to the right scoreTxt.y = levelTxt.y - scoreTxt.height - 50; // Position the score text 50 pixels above the level text // Initialize health bar var healthBar = game.addChild(new HealthBar()); healthBar.x = 50; healthBar.y = 2732 - healthBar.height - 100; // Move health bar a little bit down scoreTxt.anchor.set(0, 0); LK.gui.bottomLeft.addChild(scoreTxt); // Handle touch input for dragging the dragon var dragNode = null; game.down = function (x, y, obj) { dragNode = dragon; }; game.up = function (x, y, obj) { dragNode = null; }; game.move = function (x, y, obj) { if (dragNode) { // Limit the dragon's movement to the game area var newX = Math.max(0, Math.min(2048, x)); var newY = Math.max(0, Math.min(2732, y)); dragNode.x = newX; dragNode.y = newY; // Shoot a fireball at regular intervals if (LK.ticks % 30 == 0) { var fireball = new Fireball(); fireball.x = dragon.x; fireball.y = dragon.y; fireballs.push(fireball); game.addChild(fireball); } } };
/****
* Classes
****/
//<Assets used in the game will automatically appear here>
//<Write imports for supported plugins here>
// Dragon class to represent the player character
var Dragon = Container.expand(function () {
var self = Container.call(this);
var dragonGraphics = self.attachAsset('dragon', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 1.5,
scaleY: 1.5,
smooth: true,
filterQuality: 10
});
self.speed = 10; // Speed of the dragon
self.update = function () {
// Update logic for the dragon can be added here if needed
};
});
// Fireball class to represent the fireballs that the dragon shoots
var Fireball = Container.expand(function () {
var self = Container.call(this);
var fireballGraphics = self.attachAsset('Shout', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 0.5,
scaleY: 0.5,
smooth: true,
filterQuality: 10
});
self.speed = 10; // Speed of the fireball
self.update = function () {
// Move the fireball straight up
self.y -= self.speed;
};
});
// HealthBar class to represent the player's health
var HealthBar = Container.expand(function () {
var self = Container.call(this);
var healthBarGraphics = self.attachAsset('healthBar', {
anchorX: 0.0,
anchorY: 0.0,
scaleX: 2048 / 1000,
// Scale to fit the game width
scaleY: 0.1
});
self.maxHealth = 1000;
self.currentHealth = self.maxHealth;
self.update = function () {
healthBarGraphics.scaleX = self.currentHealth / self.maxHealth;
healthBarGraphics.scaleY = 0.05; // Resize the health bar to fit the top of the screen
};
});
// Sphere class to represent the obstacles
var Sphere = Container.expand(function () {
var self = Container.call(this);
var sphereGraphics = self.attachAsset('sphere', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 0.5,
scaleY: 1.0,
// Increase the height of the spheres
smooth: true,
filterQuality: 10
});
self.speed = 3; // Speed of the sphere
var sizes = [0.7, 0.5, 1];
var size = sizes[Math.floor(Math.random() * sizes.length)];
// Assign points to spheres based on their size
if (size == 0.7) {
self.points = 20;
} else if (size == 0.5) {
self.points = 10;
} else {
self.points = 5;
}
self.update = function () {
// Move the sphere straight up
self.y -= self.speed;
};
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x000000,
//Init game with black background
height: 3000 // Increase the game screen height
});
/****
* Game Code
****/
// Initialize game variables
var dragon;
var spheres = [];
var fireballs = []; // Initialize fireballs array
var score = 0; // Initialize score to 0
var scoreTxt;
// Add background image to the game
var background = LK.getAsset('Background', {
anchorX: 0.0,
anchorY: 0.0
});
background = game.addChild(background);
background.width = game.width;
background.height = game.height;
background.smooth = false; // Disable smoothing to remove blur
background.filterQuality = 1; // Set the filter quality to low to remove blur
background.scale.set(game.width / background.width, game.height / background.height); // Scale the background to fit the screen
// Function to handle game updates
game.update = function () {
// Update dragon position based on touch input
if (!LK.gameOver && dragNode && dragNode.global) {
dragNode.x = game.toLocal(dragNode.global).x;
}
// Update spheres and check for collisions
if (!LK.gameOver) {
for (var i = spheres.length - 1; i >= 0; i--) {
spheres[i].update();
if (spheres[i].intersects(dragon)) {
var evade = Math.floor(Math.random() * 51);
if (evade <= 50) {
healthBar.currentHealth -= spheres[i].points; // Reduce health based on points
if (healthBar.currentHealth <= 0) {
LK.effects.flashScreen(0xff0000, 1000);
LK.showGameOver({
bar: {
color: 0xFFA500,
// Orange color for the outlines
fill: 0xFFA500 // Orange color for the fill
},
text: {
color: 0x00FFFF // Blue cyan color for the text
}
});
}
}
} else if (spheres[i].y < 0) {
spheres[i].destroy();
score += spheres[i].points; // Increase score when the sphere is dodged
scoreTxt.setText('Score: ' + score); // Update score text
spheres.splice(i, 1);
}
}
}
// Check if a fireball hits a sphere
for (var i = spheres.length - 1; i >= 0; i--) {
for (var j = fireballs.length - 1; j >= 0; j--) {
if (spheres[i].intersects(fireballs[j])) {
spheres[i].destroy();
fireballs[j].destroy();
spheres.splice(i, 1);
fireballs.splice(j, 1);
break;
}
}
}
// Spawn new spheres
if (!LK.gameOver && LK.ticks % 60 == 0) {
var newSphere = new Sphere();
newSphere.x = Math.random() * 2048;
newSphere.y = 2732;
spheres.push(newSphere);
game.addChild(newSphere);
}
// Regenerate player's health to max when score reaches 1000
if (score >= 1000) {
healthBar.currentHealth = healthBar.maxHealth;
}
};
// Initialize dragon
dragon = game.addChild(new Dragon());
dragon.x = 2048 / 2;
dragon.y = 200;
// Initialize level display
var levelTxt = new Text2('Level: 1', {
size: 100,
fill: 0x800080,
// Purple color
font: "'Time new roman',Impact,'Arial Black',Tahoma"
});
levelTxt.anchor.set(1, 1);
LK.gui.bottomRight.addChild(levelTxt);
levelTxt.x = -50; // Move the level text to the right side of the screen
levelTxt.y = -100; // Position the level text at the bottom of the screen
// Initialize score display
scoreTxt = new Text2('Score: 0', {
size: 100,
fill: 0x800080,
// Purple color
font: "'Time new roman',Impact,'Arial Black',Tahoma"
});
LK.gui.top.addChild(scoreTxt);
scoreTxt.anchor.set(0, 0); // Sets anchor to the left of the top edge of the text.
scoreTxt.x = 50; // Position the score text a little bit to the right
scoreTxt.y = levelTxt.y - scoreTxt.height - 50; // Position the score text 50 pixels above the level text
// Initialize health bar
var healthBar = game.addChild(new HealthBar());
healthBar.x = 50;
healthBar.y = 2732 - healthBar.height - 100; // Move health bar a little bit down
scoreTxt.anchor.set(0, 0);
LK.gui.bottomLeft.addChild(scoreTxt);
// Handle touch input for dragging the dragon
var dragNode = null;
game.down = function (x, y, obj) {
dragNode = dragon;
};
game.up = function (x, y, obj) {
dragNode = null;
};
game.move = function (x, y, obj) {
if (dragNode) {
// Limit the dragon's movement to the game area
var newX = Math.max(0, Math.min(2048, x));
var newY = Math.max(0, Math.min(2732, y));
dragNode.x = newX;
dragNode.y = newY;
// Shoot a fireball at regular intervals
if (LK.ticks % 30 == 0) {
var fireball = new Fireball();
fireball.x = dragon.x;
fireball.y = dragon.y;
fireballs.push(fireball);
game.addChild(fireball);
}
}
};