Code edit (2 edits merged)
Please save this source code
User prompt
Fix Bug: 'Uncaught TypeError: LK.setPause is not a function' in or related to this line: 'LK.setPause(true);' Line Number: 55
User prompt
Fix Bug: 'Uncaught TypeError: LK.pauseGame is not a function' in or related to this line: 'LK.pauseGame();' Line Number: 55
User prompt
Fix Bug: 'Uncaught TypeError: LK.setPause is not a function' in or related to this line: 'LK.setPause(true);' Line Number: 55
User prompt
Fix Bug: 'Uncaught TypeError: LK.pauseGame is not a function' in or related to this line: 'LK.pauseGame();' Line Number: 55
User prompt
Fix Bug: 'Uncaught TypeError: LK.pause is not a function' in or related to this line: 'LK.pause();' Line Number: 55
Code edit (3 edits merged)
Please save this source code
User prompt
fix
Code edit (5 edits merged)
Please save this source code
User prompt
fully fix the game so that there is no black screen
User prompt
still a black screen
User prompt
there is still a black screen make sure there isn't
User prompt
fix the fact that there is a black screen
Code edit (1 edits merged)
Please save this source code
User prompt
fix
User prompt
Fix Bug: 'Uncaught TypeError: LK.pause is not a function' in or related to this line: 'LK.pause();' Line Number: 55
Code edit (1 edits merged)
Please save this source code
User prompt
move versiontxt a bit lower
User prompt
move versiontxt a bit lower
User prompt
move versiontxt lower
User prompt
move versiontxt lower
User prompt
there is a black vertical mark that is covering a bit of the right of the screen. Is it possible to remove
User prompt
why is there a black part covering part of the screen on the right
User prompt
move versiontxt lower
User prompt
move versiontxt a lot lower
/****
* Classes
****/
// BulletPack class
var BulletPack = Container.expand(function () {
var self = Container.call(this);
var bulletPackGraphics = self.attachAsset('bulletPack', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 4;
self.direction = Math.random() < 0.5 ? -1 : 1;
self.move = function () {
var speedIncreaseFactor = 0.1 + LK.ticks * 0.0002;
self.y += self.speed + speedIncreaseFactor;
self.x += self.direction * (10 + speedIncreaseFactor);
if (self.x < 0 || self.x > game.width) {
self.direction *= -1;
}
};
});
// Character class
var Hero = Container.expand(function () {
var self = Container.call(this);
var heroGraphics = self.attachAsset('hero', {
anchorX: 0.5,
anchorY: 0.5
});
self.bulletLimit = 3; // Initialize bullet limit
self.canShoot = true; // Allow shooting initially
self.update = function () {
// Hero update logic
};
self.shoot = function () {
if (this.bulletLimit > 0 && this.canShoot) {
var bullet = new Bullet();
bullet.x = this.x;
bullet.y = this.y - this.height / 2;
heroBullets.push(bullet);
game.addChild(bullet);
this.bulletLimit--;
bulletCountTxt.setText('Bullets: ' + this.bulletLimit); // Update bullet count display
this.canShoot = false; // Set shooting cooldown
LK.setTimeout(function () {
self.canShoot = true;
}, 500); // Cooldown of 500ms before next shot
}
};
});
// Bullet class
var Bullet = Container.expand(function () {
var self = Container.call(this);
var bulletGraphics = self.attachAsset('purpleBullet', {
anchorX: 0.0625,
anchorY: 0.0625
});
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.attachAsset('enemy', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 4;
self.direction = Math.random() < 0.5 ? -1 : 1;
self.move = function () {
self.y += self.speed;
var speedIncreaseFactor = 0.1 + LK.ticks * 0.0002; // Increase the speed factor over time
self.x += self.direction * (4 + speedIncreaseFactor);
if (self.x < 0 || self.x > game.width) {
self.direction *= -1;
}
self.speed += 0.02 + LK.ticks * 0.0001; // Increase speed over time with an accelerating factor
};
});
// Button class
var Button = Container.expand(function (text, positionX, positionY, onClickCallback) {
var self = Container.call(this);
var buttonText = new Text2(text, {
size: 200,
fill: "#ffffff"
});
buttonText.anchor.set(0.5);
self.addChild(buttonText);
self.x = positionX;
self.y = positionY;
self.interactive = true;
self.on('down', function (obj) {
var event = obj.event;
var pos = event.getLocalPosition(game);
if (self.containsPoint(pos)) {
onClickCallback();
}
});
});
// JoystickAsset class
var JoystickAsset = Container.expand(function () {
var self = Container.call(this);
self.interactive = true;
self.isDragging = false;
self.onMoveCallback = null;
self.setMoveCallback = function (callback) {
self.onMoveCallback = function (direction) {
callback({
x: direction.x,
y: 0
});
};
};
self.on('down', function (obj) {
self.isDragging = true;
});
self.on('up', function (obj) {
self.isDragging = false;
stickGraphics.x = stickOrigin.x;
stickGraphics.y = stickOrigin.y;
if (self.onMoveCallback) {
self.onMoveCallback({
x: 0,
y: 0
});
}
});
self.on('move', function (obj) {
if (self.isDragging) {
var event = obj.event;
var pos = event.getLocalPosition(self);
var dx = pos.x - stickOrigin.x;
var maxDistance = stickGraphics.width * 0.5;
if (Math.abs(dx) > maxDistance) {
dx = maxDistance * (dx > 0 ? 1 : -1);
}
stickGraphics.x = stickOrigin.x + dx;
stickGraphics.y = stickOrigin.y;
if (self.onMoveCallback) {
self.onMoveCallback({
x: dx / maxDistance,
y: 0
});
}
}
});
self.containsPoint = function (point) {
return point.x >= self.x - self.width / 2 && point.x <= self.x + self.width / 2 && point.y >= self.y - self.height / 2 && point.y <= self.y + self.height / 2;
};
});
/****
* Main Menu Code
****/
var mainMenu = Container.expand(function () {
var self = Container.call(this);
var titleTxt = new Text2('Game Title', {
size: 100,
fill: "#ffffff"
});
titleTxt.anchor.set(0.5);
titleTxt.x = game.width / 2;
titleTxt.y = game.height / 4;
var playButton = new Button('Play', game.width / 2, game.height / 2, function () {
self.visible = false; // Hide main menu
difficultyMenu.visible = true; // Show difficulty menu
});
self.addChild(titleTxt);
self.addChild(playButton);
self.visible = true; // Show main menu initially
});
/****
* Difficulty Menu Code
****/
var difficultyMenu = Container.expand(function () {
var self = Container.call(this);
var titleTxt = new Text2('Select Difficulty', {
size: 80,
fill: "#ffffff"
});
titleTxt.anchor.set(0.5);
titleTxt.x = game.width / 2;
titleTxt.y = game.height / 4;
var easyButton = new Button('Easy', game.width / 2, game.height / 2 - 100, function () {
startGame('easy'); // Start game with easy difficulty
});
var mediumButton = new Button('Medium', game.width / 2, game.height / 2, function () {
startGame('medium'); // Start game with medium difficulty
});
var hardButton = new Button('Hard', game.width / 2, game.height / 2 + 100, function () {
startGame('hard'); // Start game with hard difficulty
});
self.addChild(titleTxt);
self.addChild(easyButton);
self.addChild(mediumButton);
self.addChild(hardButton);
self.visible = false; // Hide difficulty menu initially
});
/****
* Initialize Game
****/
// Initialize important asset arrays
// Create left movement button
var game = new LK.Game({
title: '(WIP)',
backgroundColor: 0x1E1E1E // Init game with a dark grey background
});
/****
* Game Code
****/
// Set the initial visibility of the game to true to avoid a black screen
// This line is removed as it's redundant and the visibility is handled by showing the main menu
// Initialize important asset arrays
var heroBullets = [];
var enemies = [];
// Create character
var hero = game.addChild(new Hero());
hero.x = game.width / 2;
hero.y = game.height - 100;
// Create score display
var scoreTxt = new Text2('Score: 0', {
size: 50,
fill: "#ffffff"
});
var highScoreTxt = new Text2('High Score: 0 (WIP)', {
size: 50,
fill: "#ffffff"
});
scoreTxt.anchor.set(1, 0);
highScoreTxt.anchor.set(1, 0);
highScoreTxt.y = scoreTxt.height + 20;
// Create version display
var versionTxt = new Text2('v0.1', {
size: 50,
fill: "#ffffff"
});
versionTxt.anchor.set(1, 0);
versionTxt.y = highScoreTxt.y + highScoreTxt.height + 1700;
LK.gui.topRight.addChild(versionTxt);
LK.gui.topRight.addChild(scoreTxt);
LK.gui.topRight.addChild(highScoreTxt);
// Create bullet count display
var bulletCountTxt = new Text2('Bullets: 3', {
size: 100,
fill: "#ffffff"
});
bulletCountTxt.anchor.set(0, 0);
bulletCountTxt.y = scoreTxt.height + 50; // Position below the score display
LK.gui.topLeft.addChild(bulletCountTxt);
// Create instructions display
var instructionsTxt = new Text2('Tap anywhere to shoot', {
size: 50,
fill: "#ffffff"
});
instructionsTxt.anchor.set(0, 0);
LK.gui.topLeft.addChild(instructionsTxt);
// Create a red line 3/4 down the screen
var redLine = LK.getAsset('redLine', {});
redLine.width = 2048;
redLine.height = 5;
redLine.y = game.height * 0.75;
game.addChild(redLine);
// Create joystick instance
var joystick = new JoystickAsset();
joystick.x = joystick.width / 2 + 100;
joystick.y = game.height - joystick.height / 2 - 150;
joystick.setMoveCallback(function (direction) {
hero.x = Math.max(hero.width / 2, Math.min(game.width - hero.width / 2, hero.x + direction.x * 10));
});
game.addChild(joystick);
// Handle hero dragging
var dragNode = null;
game.on('down', function (obj) {
hero.shoot();
});
game.on('move', function (obj) {
var event = obj.event;
var pos = event.getLocalPosition(game);
hero.x = pos.x;
});
// Global event listener for shooting bullets
// Game tick event
LK.on('tick', function () {
// Update character
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 and bullet packs
for (var j = enemies.length - 1; j >= 0; j--) {
if (bullet.intersects(enemies[j])) {
if (enemies[j] instanceof BulletPack) {
// If the enemy is a bullet pack
// Increment character's bullet limit by 5
hero.bulletLimit += 5;
} else {
// If the enemy is an actual enemy
// Update score
var newScore = LK.getScore() + 1;
LK.setScore(newScore);
scoreTxt.setText('Score: ' + newScore);
var highScore = Math.max(newScore, Number((typeof localStorage !== 'undefined' ? localStorage.getItem('highScore') : '0') || '0'));
highScoreTxt.setText('High Score: ' + highScore + ' (WIP)');
if (typeof localStorage !== 'undefined' && newScore > highScore) {
localStorage.setItem('highScore', newScore.toString());
}
// Increment character's bullet limit
hero.bulletLimit++;
}
bulletCountTxt.setText('Bullets: ' + hero.bulletLimit); // Update bullet count display
// Destroy enemy/bullet pack and bullet
enemies[j].destroy();
enemies.splice(j, 1);
bullet.destroy();
heroBullets.splice(i, 1);
break;
}
}
// Remove off-screen bullets and end the game if it's the last one
if (bullet.y < 0) {
bullet.destroy();
heroBullets.splice(i, 1);
if (heroBullets.length === 0 && hero.bulletLimit === 0) {
LK.showGameOver(); // End the game when the last bullet is out of frame
}
}
}
// Move enemies and check if they pass the red line
for (var k = enemies.length - 1; k >= 0; k--) {
enemies[k].move();
if (enemies[k].y > game.height * 0.75) {
enemies[k].destroy();
enemies[k] = null;
enemies.splice(k, 1);
}
}
var enemySpawnRate = 60; // Initialize enemy spawn rate
// Spawn enemies and bullet packs
if (LK.ticks % enemySpawnRate == 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);
if (enemySpawnRate > 30) {
enemySpawnRate -= 0.5;
} // Decrease spawn rate over time to a minimum of 30 ticks
}
if (LK.ticks % 600 == 0) {
// Spawn a bullet pack every 600 ticks
var bulletPack = new BulletPack();
bulletPack.x = Math.random() * (game.width - bulletPack.width) + bulletPack.width / 2;
bulletPack.y = -bulletPack.height;
enemies.push(bulletPack); // Add bullet pack to enemies array for collision detection
game.addChild(bulletPack);
}
});
// Function to start the game with the selected difficulty
function startGame(difficulty) {
// Customize game parameters based on difficulty
var gameSpeed;
var enemySpawnRate;
switch (difficulty) {
case 'easy':
gameSpeed = 1;
enemySpawnRate = 90;
break;
case 'medium':
gameSpeed = 1.5;
enemySpawnRate = 75;
break;
case 'hard':
gameSpeed = 2;
enemySpawnRate = 60;
break;
default:
gameSpeed = 1;
enemySpawnRate = 90;
break;
}
// Set up game parameters
LK.setSpeed(gameSpeed);
LK.resetScore();
LK.resetTicks();
// Hide difficulty menu
difficultyMenu.visible = true;
// Show game components
hero.visible = true;
scoreTxt.visible = true;
highScoreTxt.visible = true;
bulletCountTxt.visible = true;
instructionsTxt.visible = true;
redLine.visible = true;
joystick.visible = true;
// Set up game tick event with adjusted speed
LK.on('tick', function () {
// Increment ticks based on game speed
LK.incrementTicks();
// Call the existing game tick logic
LK.trigger('tick');
});
// Show joystick
joystick.visible = true;
// Initialize important asset arrays
heroBullets = [];
enemies = [];
// Create character
hero = game.addChild(new Hero());
hero.x = game.width / 2;
hero.y = game.height - 100;
// Reset score display
scoreTxt.setText('Score: 0');
highScoreTxt.setText('High Score: ' + (localStorage.getItem('highScore') || '0') + ' (WIP)');
bulletCountTxt.setText('Bullets: 3');
// Reset game over screen
LK.hideGameOver();
}
// Add main menu and difficulty menu to the game
game.addChild(mainMenu);
game.addChild(difficultyMenu);
// Show the main menu initially
mainMenu.visible = true;
difficultyMenu.visible = false;
// Start the game when the play button is clicked
game.on('down', function () {
mainMenu.visible = false; // Hide main menu
difficultyMenu.visible = true; // Show difficulty menu
}); ===================================================================
--- original.js
+++ change.js
@@ -210,9 +210,9 @@
/****
* Game Code
****/
// Set the initial visibility of the game to true to avoid a black screen
-game.visible = true;
+// This line is removed as it's redundant and the visibility is handled by showing the main menu
// Initialize important asset arrays
var heroBullets = [];
var enemies = [];
// Create character
@@ -425,7 +425,7 @@
mainMenu.visible = true;
difficultyMenu.visible = false;
// Start the game when the play button is clicked
game.on('down', function () {
- mainMenu.visible = true; // Hide main menu
+ mainMenu.visible = false; // Hide main menu
difficultyMenu.visible = true; // Show difficulty menu
});
\ 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