User prompt
Fix Bug: 'Uncaught TypeError: Graphics is not a constructor' in or related to this line: 'var radialGradient = new Graphics();' Line Number: 30
User prompt
make the corners of the background darker
User prompt
make the corners of the background darker-- vignetting.
User prompt
invert the vignetting
User prompt
do a vignette effect for the background
User prompt
Fix Bug: 'Uncaught ReferenceError: Background is not defined' in or related to this line: 'var background = game.addChild(new Background());' Line Number: 233
User prompt
do a vignette effect for the background
User prompt
do a vignette effect
User prompt
make cannonball fade smoothly using opacity reduction 1000 pixels before the top edge of the screen
User prompt
make cannonball fade smoothly using opacity reduction 700 pixels before the top edge of the screen
User prompt
make the cannonball appear smoothly by increasing the opacity.
User prompt
speed ball and ball2 make it lower
User prompt
lower the ship's speed.
User prompt
make a cannonball fly up from a random point at the bottom of the screen every 10 seconds.
User prompt
align your health in the middle of the screen
User prompt
by bringing the top of the screen 3 health
User prompt
by bringing the top of the screen five health
User prompt
increase by 5 percent the angle of reflection of the ball and ball2 from the paddles
User prompt
Increase by 10 percent the force of the change in angle of motion of ball and ball2 after collisions with the paddles
User prompt
Fix Bug: 'TypeError: parseInt is not a function' in or related to this line: 'var currentScore = parseInt(scoreCounter.text);' Line Number: 249
User prompt
Fix Bug: 'TypeError: scoreCounter.getText is not a function' in or related to this line: 'var currentScore = parseInt(scoreCounter.getText());' Line Number: 249
User prompt
Fix Bug: 'TypeError: scoreCounter.getText2 is not a function' in or related to this line: 'var currentScore = parseInt(scoreCounter.getText2());' Line Number: 249
User prompt
Fix Bug: 'TypeError: scoreCounter.getText is not a function' in or related to this line: 'var currentScore = parseInt(scoreCounter.getText());' Line Number: 249
User prompt
Fix Bug: 'TypeError: scoreCounter.getText2 is not a function' in or related to this line: 'var currentScore = parseInt(scoreCounter.getText2());' Line Number: 249
User prompt
Fix Bug: 'TypeError: scoreCounter.getText is not a function' in or related to this line: 'var currentScore = parseInt(scoreCounter.getText());' Line Number: 249
/****
* Classes
****/
// RightPaddle class
var RightPaddle = Container.expand(function () {
var self = Container.call(this);
var paddleGraphics = self.attachAsset('rightPaddle', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 10;
self.moveUp = function () {
self.y -= self.speed;
};
self.moveDown = function () {
self.y += self.speed;
};
});
// LeftPaddle class
var LeftPaddle = Container.expand(function () {
var self = Container.call(this);
var paddleGraphics = self.attachAsset('leftPaddle', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 10;
self.moveUp = function () {
self.y -= self.speed;
};
self.moveDown = function () {
self.y += self.speed;
};
});
// Ball class
var Ball = Container.expand(function () {
var self = Container.call(this);
this.ballGraphics = null;
var ballAsset = Math.random() < 0.5 ? 'ball' : 'ball2';
this.ballGraphics = self.attachAsset(ballAsset, {
anchorX: 0.5,
anchorY: 0.5
});
self.velocity = {
x: 5,
y: 5
};
self.move = function () {
self.x += self.velocity.x;
self.y += self.velocity.y;
};
self.reset = function () {
self.x = 2048 / 2;
self.y = 2732 / 2;
var randomDirection = Math.random() < 0.5 ? -1 : 1;
self.velocity = {
x: 8 * randomDirection,
y: Math.random() * 12 - 6
};
// Smoothly swap the ball asset with a fade out and fade in effect
self.removeChild(self.ballGraphics);
var newBallAsset = self.velocity.x < 0 ? 'ball' : 'ball2';
self.ballGraphics = self.attachAsset(newBallAsset, {
anchorX: 0.5,
anchorY: 0.5,
alpha: 0 // Start fully transparent
});
// Animate the alpha property to fade in the new ball
var fadeDuration = 30; // Duration in ticks
var fadeStep = 1 / fadeDuration;
var currentTick = 0;
var fadeIn = function fadeIn() {
if (currentTick < fadeDuration) {
self.ballGraphics.alpha += fadeStep;
currentTick++;
} else {
LK.off('tick', fadeIn); // Stop the animation when done
}
};
LK.on('tick', fadeIn);
};
});
// Background class
var Background = Container.expand(function () {
var self = Container.call(this);
var backgroundGraphics = self.attachAsset('background', {
anchorX: 0.5,
anchorY: 0.5
});
// Set background to cover the entire game area
backgroundGraphics.width = 2048;
backgroundGraphics.height = 2732;
// Position the background in the center
self.x = 2048 / 2;
self.y = 2732 / 2;
});
// Health class
var Health = Container.expand(function () {
var self = Container.call(this);
var healthGraphics = self.attachAsset('health', {
anchorX: 0.5,
anchorY: 0.5
});
// Set the initial alpha to fully visible
self.alpha = 1;
// Position the health icon based on its index
self.setPosition = function (index, totalIcons) {
var totalWidth = totalIcons * 120;
self.x = (2048 - totalWidth) / 2 + index * 120;
self.y = 100;
};
});
// Chest class
var Chest = Container.expand(function () {
var self = Container.call(this);
var chestGraphics = self.attachAsset('chest', {
anchorX: 0.5,
anchorY: 0.5
});
self.isVisible = false;
self.showChest = function () {
self.isVisible = true;
self.alpha = 0;
self.x = Math.random() * (2048 - chestGraphics.width - 1000) + chestGraphics.width / 2 + 500;
self.y = Math.random() * (2732 - chestGraphics.height - 1000) + chestGraphics.height / 2 + 500;
var fadeInDuration = 60; // 1 second at 60FPS
var fadeStep = 1 / fadeInDuration;
var fadeInTick = 0;
var fadeIn = function fadeIn() {
if (fadeInTick < fadeInDuration) {
self.alpha += fadeStep;
fadeInTick++;
} else {
LK.off('tick', fadeIn);
}
};
LK.on('tick', fadeIn);
LK.setTimeout(function () {
var fadeOutDuration = 60; // 1 second at 60FPS
var fadeOutStep = 1 / fadeOutDuration;
var fadeOutTick = 0;
var fadeOut = function fadeOut() {
if (fadeOutTick < fadeOutDuration) {
self.alpha -= fadeOutStep;
fadeOutTick++;
} else {
self.isVisible = false;
LK.off('tick', fadeOut);
}
};
LK.on('tick', fadeOut);
}, 10000);
};
});
// Cannonball class
var Cannonball = Container.expand(function () {
var self = Container.call(this);
var cannonballGraphics = self.attachAsset('cannonball', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = -10;
self.move = function () {
self.y += self.speed;
};
self.reset = function () {
self.x = Math.random() * (2048 - cannonballGraphics.width) + cannonballGraphics.width / 2;
self.y = 2732 - cannonballGraphics.height / 2;
};
});
/****
* Initialize Game
****/
// Initialize paddles and ball
// Define the paddle asset
// Define the ball asset
var game = new LK.Game({
backgroundColor: 0x92c7f3 // Init game with blue background
});
/****
* Game Code
****/
// Instantiate and add background to the game
var background = game.addChild(new Background());
// Define the ball asset
// Define the paddle asset
// Initialize paddles
var leftPaddle = game.addChild(new LeftPaddle());
var rightPaddle = game.addChild(new RightPaddle());
var ball = game.addChild(new Ball());
// Set initial positions
leftPaddle.x = 50;
leftPaddle.y = 2732 / 2;
rightPaddle.x = 2048 - 50;
rightPaddle.y = 2732 / 2;
// Initialize health icons
var healthIcons = [];
var totalHealthIcons = 3;
for (var i = 0; i < totalHealthIcons; i++) {
var healthIcon = game.addChild(new Health());
healthIcon.setPosition(i, totalHealthIcons);
healthIcons.push(healthIcon);
}
// Instantiate and add chest to the game
var chest = game.addChild(new Chest());
// Position the chest
chest.x = 2048 / 2;
chest.y = 2732 / 4; // Position the chest at one quarter down the screen
ball.reset();
// Game tick event
LK.on('tick', function () {
// Move the ball
ball.move();
// Ball collision with top and bottom
if (ball.y <= 0 || ball.y >= 2732) {
ball.velocity.y *= -1;
}
// Ball collision with paddles and initiate a smoother ball asset transition
if (ball.intersects(leftPaddle) && ball.velocity.x < 0 || ball.intersects(rightPaddle) && ball.velocity.x > 0) {
ball.velocity.x *= -1;
// Initiate fade out of the current ball asset
ball.ballGraphics.alpha = 1;
var fadeOutDuration = 15; // Duration in ticks for fade out
var fadeStep = 1 / fadeOutDuration;
var fadeOutTick = 0;
var fadeOut = function fadeOut() {
if (fadeOutTick < fadeOutDuration) {
ball.ballGraphics.alpha -= fadeStep;
fadeOutTick++;
} else {
LK.off('tick', fadeOut);
// After fade out, swap the ball asset and fade it in
ball.removeChild(ball.ballGraphics);
var newBallAsset = ball.velocity.x < 0 ? 'ball' : 'ball2';
ball.ballGraphics = ball.attachAsset(newBallAsset, {
anchorX: 0.5,
anchorY: 0.5,
alpha: 0 // Start fully transparent
});
// Animate the alpha property to fade in the new ball
var fadeInDuration = 15; // Duration in ticks for fade in
var fadeInStep = 1 / fadeInDuration;
var fadeInTick = 0;
var fadeIn = function fadeIn() {
if (fadeInTick < fadeInDuration) {
ball.ballGraphics.alpha += fadeInStep;
fadeInTick++;
} else {
LK.off('tick', fadeIn); // Stop the animation when done
}
};
LK.on('tick', fadeIn);
}
};
LK.on('tick', fadeOut);
}
// Ball out of bounds
if (ball.x <= 0 || ball.x >= 2048) {
ball.reset();
}
// Chest appearance logic
if (LK.ticks % (10 * 60) === 0 && !chest.isVisible) {
chest.showChest();
}
}); // Game tick event
LK.on('tick', function () {
// Move the ball
ball.move();
// Ball collision with top and bottom
if (ball.y <= 0 || ball.y >= 2732) {
ball.velocity.y *= -1;
}
// Ball collision with paddles and initiate a smoother ball asset transition
if (ball.intersects(leftPaddle) && ball.velocity.x < 0 || ball.intersects(rightPaddle) && ball.velocity.x > 0) {
ball.velocity.x *= -1;
// Initiate fade out of the current ball asset
ball.ballGraphics.alpha = 1;
var fadeOutDuration = 15; // Duration in ticks for fade out
var fadeStep = 1 / fadeOutDuration;
var fadeOutTick = 0;
var fadeOut = function fadeOut() {
if (fadeOutTick < fadeOutDuration) {
ball.ballGraphics.alpha -= fadeStep;
fadeOutTick++;
} else {
LK.off('tick', fadeOut);
// After fade out, swap the ball asset and fade it in
ball.removeChild(ball.ballGraphics);
var newBallAsset = ball.velocity.x < 0 ? 'ball' : 'ball2';
ball.ballGraphics = ball.attachAsset(newBallAsset, {
anchorX: 0.5,
anchorY: 0.5,
alpha: 0 // Start fully transparent
});
// Animate the alpha property to fade in the new ball
var fadeInDuration = 15; // Duration in ticks for fade in
var fadeInStep = 1 / fadeInDuration;
var fadeInTick = 0;
var fadeIn = function fadeIn() {
if (fadeInTick < fadeInDuration) {
ball.ballGraphics.alpha += fadeInStep;
fadeInTick++;
} else {
LK.off('tick', fadeIn); // Stop the animation when done
}
};
LK.on('tick', fadeIn);
}
};
LK.on('tick', fadeOut);
}
// Ball out of bounds
if (ball.x <= 0 || ball.x >= 2048) {
ball.reset();
}
// Chest appearance logic
if (LK.ticks % (10 * 60) === 0 && !chest.isVisible) {
chest.showChest();
}
// Move cannonballs
game.children.forEach(function (child) {
if (child instanceof Cannonball) {
child.move();
// Remove cannonball if it goes off the top of the screen
if (child.y + child.height / 2 < 0) {
child.destroy();
}
}
});
});
// Touch event listeners for paddles
game.on('down', function (obj) {
var event = obj.event;
var pos = event.getLocalPosition(game);
// Determine which paddle to control based on touch position
if (pos.x < 2048 / 2) {
leftPaddle.y = pos.y;
} else {
rightPaddle.y = pos.y;
}
});
game.on('move', function (obj) {
var event = obj.event;
var pos = event.getLocalPosition(game);
// Update paddle position based on touch movement
if (pos.x < 2048 / 2) {
leftPaddle.y = pos.y;
} else {
rightPaddle.y = pos.y;
}
}); // Timer to launch a cannonball every 10 seconds
var cannonballTimer = LK.setInterval(function () {
var newCannonball = new Cannonball();
newCannonball.reset();
game.addChild(newCannonball);
}, 10000); ===================================================================
--- original.js
+++ change.js
@@ -150,8 +150,24 @@
LK.on('tick', fadeOut);
}, 10000);
};
});
+// Cannonball class
+var Cannonball = Container.expand(function () {
+ var self = Container.call(this);
+ var cannonballGraphics = self.attachAsset('cannonball', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.speed = -10;
+ self.move = function () {
+ self.y += self.speed;
+ };
+ self.reset = function () {
+ self.x = Math.random() * (2048 - cannonballGraphics.width) + cannonballGraphics.width / 2;
+ self.y = 2732 - cannonballGraphics.height / 2;
+ };
+});
/****
* Initialize Game
****/
@@ -246,8 +262,73 @@
// Chest appearance logic
if (LK.ticks % (10 * 60) === 0 && !chest.isVisible) {
chest.showChest();
}
+}); // Game tick event
+LK.on('tick', function () {
+ // Move the ball
+ ball.move();
+ // Ball collision with top and bottom
+ if (ball.y <= 0 || ball.y >= 2732) {
+ ball.velocity.y *= -1;
+ }
+ // Ball collision with paddles and initiate a smoother ball asset transition
+ if (ball.intersects(leftPaddle) && ball.velocity.x < 0 || ball.intersects(rightPaddle) && ball.velocity.x > 0) {
+ ball.velocity.x *= -1;
+ // Initiate fade out of the current ball asset
+ ball.ballGraphics.alpha = 1;
+ var fadeOutDuration = 15; // Duration in ticks for fade out
+ var fadeStep = 1 / fadeOutDuration;
+ var fadeOutTick = 0;
+ var fadeOut = function fadeOut() {
+ if (fadeOutTick < fadeOutDuration) {
+ ball.ballGraphics.alpha -= fadeStep;
+ fadeOutTick++;
+ } else {
+ LK.off('tick', fadeOut);
+ // After fade out, swap the ball asset and fade it in
+ ball.removeChild(ball.ballGraphics);
+ var newBallAsset = ball.velocity.x < 0 ? 'ball' : 'ball2';
+ ball.ballGraphics = ball.attachAsset(newBallAsset, {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ alpha: 0 // Start fully transparent
+ });
+ // Animate the alpha property to fade in the new ball
+ var fadeInDuration = 15; // Duration in ticks for fade in
+ var fadeInStep = 1 / fadeInDuration;
+ var fadeInTick = 0;
+ var fadeIn = function fadeIn() {
+ if (fadeInTick < fadeInDuration) {
+ ball.ballGraphics.alpha += fadeInStep;
+ fadeInTick++;
+ } else {
+ LK.off('tick', fadeIn); // Stop the animation when done
+ }
+ };
+ LK.on('tick', fadeIn);
+ }
+ };
+ LK.on('tick', fadeOut);
+ }
+ // Ball out of bounds
+ if (ball.x <= 0 || ball.x >= 2048) {
+ ball.reset();
+ }
+ // Chest appearance logic
+ if (LK.ticks % (10 * 60) === 0 && !chest.isVisible) {
+ chest.showChest();
+ }
+ // Move cannonballs
+ game.children.forEach(function (child) {
+ if (child instanceof Cannonball) {
+ child.move();
+ // Remove cannonball if it goes off the top of the screen
+ if (child.y + child.height / 2 < 0) {
+ child.destroy();
+ }
+ }
+ });
});
// Touch event listeners for paddles
game.on('down', function (obj) {
var event = obj.event;
@@ -267,5 +348,10 @@
leftPaddle.y = pos.y;
} else {
rightPaddle.y = pos.y;
}
-});
\ No newline at end of file
+}); // Timer to launch a cannonball every 10 seconds
+var cannonballTimer = LK.setInterval(function () {
+ var newCannonball = new Cannonball();
+ newCannonball.reset();
+ game.addChild(newCannonball);
+}, 10000);
\ No newline at end of file
ancient nautical chart. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
head of the wind god that blows wind on ancient maps, Middle Ages, black and white, wind from the mouth. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
scrub
pirate treasure chest. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
anchor. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
cannonball. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
explosion, black and white. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.