/**** * 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);