/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
/****
* Classes
****/
var Coin = Container.expand(function () {
var self = Container.call(this);
var coinGraphics = self.attachAsset('coin', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = -8;
self.collected = false;
self.bobOffset = Math.random() * Math.PI * 2;
self.startY = 0;
self.update = function () {
self.x += self.speed * gameSpeed;
self.y = self.startY + Math.sin(LK.ticks * 0.1 + self.bobOffset) * 20;
};
return self;
});
var Enemy = Container.expand(function () {
var self = Container.call(this);
var enemyGraphics = self.attachAsset('enemy', {
anchorX: 0.5,
anchorY: 1.0
});
self.speed = -8;
self.update = function () {
self.x += self.speed * gameSpeed;
};
return self;
});
var Ground = Container.expand(function () {
var self = Container.call(this);
var groundGraphics = self.attachAsset('ground', {
anchorX: 0,
anchorY: 0
});
self.speed = -8;
self.update = function () {
self.x += self.speed * gameSpeed;
if (self.x <= -self.width) {
self.x += self.width * 3;
}
};
return self;
});
var Gul = Container.expand(function () {
var self = Container.call(this);
var gulGraphics = self.attachAsset('gul', {
anchorX: 0.5,
anchorY: 1.0
});
self.isJumping = false;
self.isGrounded = true;
self.velocityY = 0;
self.groundY = 0;
self.jumpPower = -40;
self.gravity = 1.2;
self.jump = function () {
if (self.isGrounded) {
self.velocityY = self.jumpPower;
self.isJumping = true;
self.isGrounded = false;
LK.getSound('jump').play();
}
};
self.update = function () {
if (!self.isGrounded) {
self.velocityY += self.gravity;
self.y += self.velocityY;
if (self.y >= self.groundY) {
self.y = self.groundY;
self.velocityY = 0;
self.isJumping = false;
self.isGrounded = true;
}
}
};
return self;
});
var Obstacle = Container.expand(function () {
var self = Container.call(this);
var obstacleGraphics = self.attachAsset('obstacle', {
anchorX: 0.5,
anchorY: 1.0
});
self.speed = -8;
self.scored = false;
self.update = function () {
self.x += self.speed * gameSpeed;
};
return self;
});
var Pit = Container.expand(function () {
var self = Container.call(this);
var pitGraphics = self.attachAsset('pit', {
anchorX: 0.5,
anchorY: 0
});
self.speed = -8;
self.update = function () {
self.x += self.speed * gameSpeed;
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x87ceeb
});
/****
* Game Code
****/
var gul;
var groundElements = [];
var obstacles = [];
var coins = [];
var enemies = [];
var pits = [];
var gameSpeed = 1.0;
var distance = 0;
var coinsCollected = 0;
var gameRunning = true;
var groundY = 2400;
var lastObstacleSpawn = 0;
var lastCoinSpawn = 0;
// Initialize score display
var scoreText = new Text2('Distance: 0 | Coins: 0', {
size: 80,
fill: 0xFFFFFF
});
scoreText.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreText);
// Create Gül
gul = game.addChild(new Gul());
gul.x = 400;
gul.y = groundY;
gul.groundY = groundY;
// Create initial ground segments
for (var i = 0; i < 4; i++) {
var ground = game.addChild(new Ground());
ground.x = i * 300;
ground.y = groundY;
groundElements.push(ground);
}
function spawnObstacle() {
var obstacleType = Math.random();
if (obstacleType < 0.4) {
// Spawn regular obstacle
var obstacle = game.addChild(new Obstacle());
obstacle.x = 2200;
obstacle.y = groundY;
obstacles.push(obstacle);
} else if (obstacleType < 0.7) {
// Spawn enemy
var enemy = game.addChild(new Enemy());
enemy.x = 2200;
enemy.y = groundY;
enemies.push(enemy);
} else {
// Spawn pit
var pit = game.addChild(new Pit());
pit.x = 2200;
pit.y = groundY;
pits.push(pit);
}
}
function spawnCoin() {
var coin = game.addChild(new Coin());
coin.x = 2200;
coin.y = groundY - 150 - Math.random() * 200;
coin.startY = coin.y;
coins.push(coin);
}
function checkCollisions() {
// Check obstacle collisions
for (var i = obstacles.length - 1; i >= 0; i--) {
var obstacle = obstacles[i];
if (gul.intersects(obstacle)) {
gameRunning = false;
LK.getSound('gameOver').play();
LK.showGameOver();
return;
}
if (obstacle.x < -100) {
obstacle.destroy();
obstacles.splice(i, 1);
}
}
// Check enemy collisions
for (var i = enemies.length - 1; i >= 0; i--) {
var enemy = enemies[i];
if (gul.intersects(enemy)) {
gameRunning = false;
LK.getSound('gameOver').play();
LK.showGameOver();
return;
}
if (enemy.x < -100) {
enemy.destroy();
enemies.splice(i, 1);
}
}
// Check pit collisions
for (var i = pits.length - 1; i >= 0; i--) {
var pit = pits[i];
if (gul.intersects(pit) && gul.isGrounded) {
gameRunning = false;
LK.getSound('gameOver').play();
LK.showGameOver();
return;
}
if (pit.x < -200) {
pit.destroy();
pits.splice(i, 1);
}
}
// Check coin collection
for (var i = coins.length - 1; i >= 0; i--) {
var coin = coins[i];
if (!coin.collected && gul.intersects(coin)) {
coin.collected = true;
coinsCollected++;
LK.setScore(distance + coinsCollected * 10);
LK.getSound('coin').play();
coin.destroy();
coins.splice(i, 1);
} else if (coin.x < -100) {
coin.destroy();
coins.splice(i, 1);
}
}
}
function updateGameSpeed() {
gameSpeed = Math.min(2.0, 1.0 + distance * 0.0001);
}
function updateScore() {
distance += 1;
LK.setScore(distance + coinsCollected * 10);
scoreText.setText('Distance: ' + Math.floor(distance / 10) + ' | Coins: ' + coinsCollected);
}
game.down = function (x, y, obj) {
if (gameRunning) {
gul.jump();
}
};
game.update = function () {
if (!gameRunning) return;
updateScore();
updateGameSpeed();
// Spawn obstacles
if (LK.ticks - lastObstacleSpawn > 100 + Math.random() * 120) {
spawnObstacle();
lastObstacleSpawn = LK.ticks;
}
// Spawn coins
if (LK.ticks - lastCoinSpawn > 80 + Math.random() * 100) {
spawnCoin();
lastCoinSpawn = LK.ticks;
}
checkCollisions();
}; ===================================================================
--- original.js
+++ change.js
@@ -58,9 +58,9 @@
self.isJumping = false;
self.isGrounded = true;
self.velocityY = 0;
self.groundY = 0;
- self.jumpPower = -25;
+ self.jumpPower = -40;
self.gravity = 1.2;
self.jump = function () {
if (self.isGrounded) {
self.velocityY = self.jumpPower;