/****
* 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 = -25;
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
@@ -1,6 +1,270 @@
-/****
+/****
+* 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 = -25;
+ 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: 0x000000
-});
\ No newline at end of file
+ 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();
+};
\ No newline at end of file