/****
* Classes
****/
// Define a class for the player's bullets
var Bullet = Container.expand(function () {
var self = Container.call(this);
var bulletGraphics = self.attachAsset('bullet', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 10;
self.update = function () {
self.x += self.speed;
if (self.x > 2048 + 50) {
self.destroy();
}
};
});
// Define a custom Button class to replace the undefined LK.UI.Button
var Button = Container.expand(function () {
var self = Container.call(this);
var buttonGraphics = self.attachAsset('button', {
anchorX: 0.5,
anchorY: 0.5
});
self.text = '';
self.onClick = function () {};
self.update = function () {
// Add any update logic if necessary
};
self.setText = function (text) {
self.text = text;
};
self.setOnClick = function (callback) {
self.onClick = callback;
};
self.down = function (x, y, obj) {
self.onClick();
};
});
// Define a class for the emeralds
var Emerald = Container.expand(function () {
var self = Container.call(this);
var emeraldGraphics = self.attachAsset('emerald', {
anchorX: 0.5,
anchorY: 0.5,
shape: 'box'
});
self.speed = 5;
self.update = function () {
self.x -= self.speed;
if (self.x < -50) {
self.destroy();
}
};
});
// Define a class for enemies
var Enemy = Container.expand(function () {
var self = Container.call(this);
var enemyGraphics = self.attachAsset('enemy', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 5;
self.update = function () {
self.x -= self.speed;
if (self.x < -50) {
self.destroy();
}
};
});
// Define a class for flying enemies
var FlyingEnemy = Container.expand(function () {
var self = Container.call(this);
var flyingEnemyGraphics = self.attachAsset('enemy', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 3;
self.update = function () {
self.x -= self.speed;
self.y = 200 + Math.sin(self.x / 100) * 100; // Sine wave pattern
if (self.x < -50) {
self.destroy();
}
};
});
//<Assets used in the game will automatically appear here>
// Define a class for the player character
var Player = Container.expand(function () {
var self = Container.call(this);
var playerGraphics = self.attachAsset('player', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 5;
self.jumpHeight = 40;
self.isJumping = false;
self.velocityY = 0;
self.update = function () {
if (self.isJumping) {
self.y += self.velocityY;
self.velocityY += 0.7; // Decreased gravity effect by 30%
if (self.y >= 2732 / 2) {
// Ground level
self.y = 2732 / 2;
self.isJumping = false;
self.velocityY = 0;
}
}
};
self.jump = function () {
if (!self.isJumping) {
self.isJumping = true;
self.velocityY = -self.jumpHeight;
}
};
self.shoot = function () {
if (self.isJumping) {
// Allow shooting only when in the air
// Shoot a bullet
var bullet = new Bullet();
bullet.x = self.x;
bullet.y = self.y;
game.addChild(bullet);
}
};
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x87CEEB // Sky blue background
});
/****
* Game Code
****/
var background1 = game.addChild(LK.getAsset('background', {
anchorX: 0,
anchorY: 0
}));
background1.x = 0;
background1.y = 0;
var background2 = game.addChild(LK.getAsset('background', {
anchorX: 0,
anchorY: 0
}));
background2.x = 2048;
background2.y = 0;
// Play background music that loops continuously
LK.playMusic('Oyunmuzik', {
loop: true
});
// Ensure music plays at the start of each game session
game.on('start', function () {
LK.playMusic('Oyunmuzik', {
loop: true
});
});
var player = game.addChild(new Player());
player.x = 2048 / 2;
player.y = 2732 / 2;
// Initialize level
var level = 1;
var levelText = new Text2('Level: 1', {
size: 100,
fill: 0x000000
});
LK.gui.topLeft.addChild(levelText);
levelText.x = 0;
levelText.y = 240;
// Initialize enemies
var enemies = [];
var enemySpawnInterval = 100;
var enemySpawnCounter = 0;
// Create a new Text2 object to display the score
var scoreText = new Text2('Score: 0', {
size: 100,
fill: 0x000000,
font: "'GillSans-Bold',Impact,'Arial Black',Tahoma" // Custom font
});
// Add the score text to the game GUI at the top-left corner of the screen
LK.gui.topLeft.addChild(scoreText);
scoreText.x = 0;
scoreText.y = 0;
// Initialize emeraldScore
var emeraldScore = 0;
// Initialize emeraldScoreText
var emeraldScoreText = new Text2('Emerald Score: 0', {
size: 100,
fill: 0x000000
});
// Add the score texts to the game GUI at the top-left corner of the screen, vertically aligned
LK.gui.topLeft.addChild(scoreText);
LK.gui.topLeft.addChild(emeraldScoreText);
scoreText.x = 0;
scoreText.y = 0;
emeraldScoreText.x = 0;
emeraldScoreText.y = 120;
// Handle game updates
game.update = function () {
background1.x -= 2;
background2.x -= 2;
if (background1.x <= -2048) {
background1.x = background2.x + 2048;
}
if (background2.x <= -2048) {
background2.x = background1.x + 2048;
}
player.update();
// Spawn enemies and emeralds
enemySpawnCounter++;
if (enemySpawnCounter >= enemySpawnInterval) {
var enemy = new Enemy();
enemy.x = 2048;
enemy.y = 2732 / 2;
enemies.push(enemy);
game.addChild(enemy);
// Spawn a flying enemy every second enemy
if (enemies.length % 2 === 0) {
var flyingEnemy = new FlyingEnemy();
flyingEnemy.x = 2048;
flyingEnemy.y = 200; // Start flying enemy higher
enemies.push(flyingEnemy);
game.addChild(flyingEnemy);
}
// Spawn an emerald along with every third enemy
if (enemies.length % 3 === 0) {
var emerald = new Emerald();
emerald.x = 2048;
emerald.y = 2732 / 2;
game.addChild(emerald);
}
// Randomize the spawn interval for the next enemy
enemySpawnInterval = Math.floor(Math.random() * 150) + 50;
enemySpawnCounter = 0;
}
// Update enemies
for (var j = enemies.length - 1; j >= 0; j--) {
enemies[j].update();
if (player.intersects(enemies[j])) {
if (!player.lastWasIntersecting) {
LK.effects.flashObject(player, 0xff0000, 1000);
LK.showGameOver();
var congratsText = new Text2('Congratulations!', {
size: 150,
fill: 0x00FF00,
font: "'GillSans-Bold',Impact,'Arial Black',Tahoma"
});
LK.gui.center.addChild(congratsText);
congratsText.anchor.set(0.5, 0.5);
congratsText.x = 2048 / 2;
congratsText.y = 2732 / 2;
enemies[j].destroy(); // Destroy the enemy upon collision
enemies.splice(j, 1); // Remove the enemy from the array
}
player.lastWasIntersecting = true;
} else {
player.lastWasIntersecting = false;
if (player.x > enemies[j].x && !enemies[j].passed) {
enemies[j].passed = true;
LK.setScore(LK.getScore() + 1);
scoreText.setText('Score: ' + LK.getScore());
// Increase level and difficulty based on score
if (LK.getScore() === 5) {
level = 2;
levelText.setText('Level: ' + level);
} else if (LK.getScore() === 10) {
level = 3;
levelText.setText('Level: ' + level);
} else if (LK.getScore() === 15) {
level = 4;
levelText.setText('Level: ' + level);
} else if (LK.getScore() === 20) {
level = 5;
levelText.setText('Level: ' + level);
LK.showYouWin();
}
}
}
// Check for bullet and emerald collisions
for (var i = game.children.length - 1; i >= 0; i--) {
if (game.children[i] instanceof Bullet && game.children[i].intersects(enemies[j])) {
game.children[i].destroy();
enemies[j].destroy();
enemies.splice(j, 1);
break;
} else if (game.children[i] instanceof Emerald && player.intersects(game.children[i])) {
game.children[i].destroy();
LK.setScore(LK.getScore() + 1);
scoreText.setText('Score: ' + LK.getScore());
// Player earns 3 fire rights for every 10 emeralds collected
if (emeraldScore % 10 === 0) {
player.fireRights += 3;
}
// Update emerald score
emeraldScore += 1;
emeraldScoreText.setText('Emerald Score: ' + emeraldScore);
}
}
}
};
// Handle player jump and shooting
var lastTap = 0;
game.down = function (x, y, obj) {
var currentTime = new Date().getTime();
if (currentTime - lastTap < 300) {
player.shoot();
} else {
player.jump();
}
lastTap = currentTime;
};
// Add a button for shooting
var shootButton = new Button();
shootButton.setText('Shoot');
shootButton.x = 1800;
shootButton.y = 2500;
shootButton.setOnClick(function () {
player.shoot();
});
LK.gui.bottomRight.addChild(shootButton);
LK.gui.bottomRight.addChild(shootButton); /****
* Classes
****/
// Define a class for the player's bullets
var Bullet = Container.expand(function () {
var self = Container.call(this);
var bulletGraphics = self.attachAsset('bullet', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 10;
self.update = function () {
self.x += self.speed;
if (self.x > 2048 + 50) {
self.destroy();
}
};
});
// Define a custom Button class to replace the undefined LK.UI.Button
var Button = Container.expand(function () {
var self = Container.call(this);
var buttonGraphics = self.attachAsset('button', {
anchorX: 0.5,
anchorY: 0.5
});
self.text = '';
self.onClick = function () {};
self.update = function () {
// Add any update logic if necessary
};
self.setText = function (text) {
self.text = text;
};
self.setOnClick = function (callback) {
self.onClick = callback;
};
self.down = function (x, y, obj) {
self.onClick();
};
});
// Define a class for the emeralds
var Emerald = Container.expand(function () {
var self = Container.call(this);
var emeraldGraphics = self.attachAsset('emerald', {
anchorX: 0.5,
anchorY: 0.5,
shape: 'box'
});
self.speed = 5;
self.update = function () {
self.x -= self.speed;
if (self.x < -50) {
self.destroy();
}
};
});
// Define a class for enemies
var Enemy = Container.expand(function () {
var self = Container.call(this);
var enemyGraphics = self.attachAsset('enemy', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 5;
self.update = function () {
self.x -= self.speed;
if (self.x < -50) {
self.destroy();
}
};
});
// Define a class for flying enemies
var FlyingEnemy = Container.expand(function () {
var self = Container.call(this);
var flyingEnemyGraphics = self.attachAsset('enemy', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 3;
self.update = function () {
self.x -= self.speed;
self.y = 200 + Math.sin(self.x / 100) * 100; // Sine wave pattern
if (self.x < -50) {
self.destroy();
}
};
});
//<Assets used in the game will automatically appear here>
// Define a class for the player character
var Player = Container.expand(function () {
var self = Container.call(this);
var playerGraphics = self.attachAsset('player', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 5;
self.jumpHeight = 40;
self.isJumping = false;
self.velocityY = 0;
self.update = function () {
if (self.isJumping) {
self.y += self.velocityY;
self.velocityY += 0.7; // Decreased gravity effect by 30%
if (self.y >= 2732 / 2) {
// Ground level
self.y = 2732 / 2;
self.isJumping = false;
self.velocityY = 0;
}
}
};
self.jump = function () {
if (!self.isJumping) {
self.isJumping = true;
self.velocityY = -self.jumpHeight;
}
};
self.shoot = function () {
if (self.isJumping) {
// Allow shooting only when in the air
// Shoot a bullet
var bullet = new Bullet();
bullet.x = self.x;
bullet.y = self.y;
game.addChild(bullet);
}
};
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x87CEEB // Sky blue background
});
/****
* Game Code
****/
var background1 = game.addChild(LK.getAsset('background', {
anchorX: 0,
anchorY: 0
}));
background1.x = 0;
background1.y = 0;
var background2 = game.addChild(LK.getAsset('background', {
anchorX: 0,
anchorY: 0
}));
background2.x = 2048;
background2.y = 0;
// Play background music that loops continuously
LK.playMusic('Oyunmuzik', {
loop: true
});
// Ensure music plays at the start of each game session
game.on('start', function () {
LK.playMusic('Oyunmuzik', {
loop: true
});
});
var player = game.addChild(new Player());
player.x = 2048 / 2;
player.y = 2732 / 2;
// Initialize level
var level = 1;
var levelText = new Text2('Level: 1', {
size: 100,
fill: 0x000000
});
LK.gui.topLeft.addChild(levelText);
levelText.x = 0;
levelText.y = 240;
// Initialize enemies
var enemies = [];
var enemySpawnInterval = 100;
var enemySpawnCounter = 0;
// Create a new Text2 object to display the score
var scoreText = new Text2('Score: 0', {
size: 100,
fill: 0x000000,
font: "'GillSans-Bold',Impact,'Arial Black',Tahoma" // Custom font
});
// Add the score text to the game GUI at the top-left corner of the screen
LK.gui.topLeft.addChild(scoreText);
scoreText.x = 0;
scoreText.y = 0;
// Initialize emeraldScore
var emeraldScore = 0;
// Initialize emeraldScoreText
var emeraldScoreText = new Text2('Emerald Score: 0', {
size: 100,
fill: 0x000000
});
// Add the score texts to the game GUI at the top-left corner of the screen, vertically aligned
LK.gui.topLeft.addChild(scoreText);
LK.gui.topLeft.addChild(emeraldScoreText);
scoreText.x = 0;
scoreText.y = 0;
emeraldScoreText.x = 0;
emeraldScoreText.y = 120;
// Handle game updates
game.update = function () {
background1.x -= 2;
background2.x -= 2;
if (background1.x <= -2048) {
background1.x = background2.x + 2048;
}
if (background2.x <= -2048) {
background2.x = background1.x + 2048;
}
player.update();
// Spawn enemies and emeralds
enemySpawnCounter++;
if (enemySpawnCounter >= enemySpawnInterval) {
var enemy = new Enemy();
enemy.x = 2048;
enemy.y = 2732 / 2;
enemies.push(enemy);
game.addChild(enemy);
// Spawn a flying enemy every second enemy
if (enemies.length % 2 === 0) {
var flyingEnemy = new FlyingEnemy();
flyingEnemy.x = 2048;
flyingEnemy.y = 200; // Start flying enemy higher
enemies.push(flyingEnemy);
game.addChild(flyingEnemy);
}
// Spawn an emerald along with every third enemy
if (enemies.length % 3 === 0) {
var emerald = new Emerald();
emerald.x = 2048;
emerald.y = 2732 / 2;
game.addChild(emerald);
}
// Randomize the spawn interval for the next enemy
enemySpawnInterval = Math.floor(Math.random() * 150) + 50;
enemySpawnCounter = 0;
}
// Update enemies
for (var j = enemies.length - 1; j >= 0; j--) {
enemies[j].update();
if (player.intersects(enemies[j])) {
if (!player.lastWasIntersecting) {
LK.effects.flashObject(player, 0xff0000, 1000);
LK.showGameOver();
var congratsText = new Text2('Congratulations!', {
size: 150,
fill: 0x00FF00,
font: "'GillSans-Bold',Impact,'Arial Black',Tahoma"
});
LK.gui.center.addChild(congratsText);
congratsText.anchor.set(0.5, 0.5);
congratsText.x = 2048 / 2;
congratsText.y = 2732 / 2;
enemies[j].destroy(); // Destroy the enemy upon collision
enemies.splice(j, 1); // Remove the enemy from the array
}
player.lastWasIntersecting = true;
} else {
player.lastWasIntersecting = false;
if (player.x > enemies[j].x && !enemies[j].passed) {
enemies[j].passed = true;
LK.setScore(LK.getScore() + 1);
scoreText.setText('Score: ' + LK.getScore());
// Increase level and difficulty based on score
if (LK.getScore() === 5) {
level = 2;
levelText.setText('Level: ' + level);
} else if (LK.getScore() === 10) {
level = 3;
levelText.setText('Level: ' + level);
} else if (LK.getScore() === 15) {
level = 4;
levelText.setText('Level: ' + level);
} else if (LK.getScore() === 20) {
level = 5;
levelText.setText('Level: ' + level);
LK.showYouWin();
}
}
}
// Check for bullet and emerald collisions
for (var i = game.children.length - 1; i >= 0; i--) {
if (game.children[i] instanceof Bullet && game.children[i].intersects(enemies[j])) {
game.children[i].destroy();
enemies[j].destroy();
enemies.splice(j, 1);
break;
} else if (game.children[i] instanceof Emerald && player.intersects(game.children[i])) {
game.children[i].destroy();
LK.setScore(LK.getScore() + 1);
scoreText.setText('Score: ' + LK.getScore());
// Player earns 3 fire rights for every 10 emeralds collected
if (emeraldScore % 10 === 0) {
player.fireRights += 3;
}
// Update emerald score
emeraldScore += 1;
emeraldScoreText.setText('Emerald Score: ' + emeraldScore);
}
}
}
};
// Handle player jump and shooting
var lastTap = 0;
game.down = function (x, y, obj) {
var currentTime = new Date().getTime();
if (currentTime - lastTap < 300) {
player.shoot();
} else {
player.jump();
}
lastTap = currentTime;
};
// Add a button for shooting
var shootButton = new Button();
shootButton.setText('Shoot');
shootButton.x = 1800;
shootButton.y = 2500;
shootButton.setOnClick(function () {
player.shoot();
});
LK.gui.bottomRight.addChild(shootButton);
LK.gui.bottomRight.addChild(shootButton);