/****
* Classes
****/
var Runner = Container.expand(function (assetName) {
var self = Container.call(this);
var runnerGraphics = self.attachAsset(assetName, {
anchorX: 0.5,
anchorY: 1.0
});
self.speed = 0;
self.distance = 0; // Distance in meters (0-100)
self.animationTime = 0;
self.update = function () {
// Update distance based on speed
self.distance += self.speed / 60;
// Simple running animation
if (self.speed > 0) {
self.animationTime += self.speed * 0.3;
runnerGraphics.rotation = Math.sin(self.animationTime) * 0.1;
runnerGraphics.scaleY = 1 + Math.sin(self.animationTime * 2) * 0.05;
}
// Update visual position on track
self.x = 100 + self.distance * 18; // Scale distance to pixels
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x87CEEB
});
/****
* Game Code
****/
// Game variables
var raceStarted = false;
var raceFinished = false;
var clickCount = 0;
var lastClickTime = 0;
// Create track
var track = game.addChild(LK.getAsset('track', {
anchorX: 0,
anchorY: 0.5,
x: 0,
y: 2732 / 2
}));
// Create finish line at 100 meters (1900 pixels from start)
var finishLine = game.addChild(LK.getAsset('finishLine', {
anchorX: 0.5,
anchorY: 0.5,
x: 1900,
y: 2732 / 2
}));
// Create runners
var gul = game.addChild(new Runner('gul'));
gul.y = 2732 / 2 - 60; // Lane 1
var lina = game.addChild(new Runner('lina'));
lina.y = 2732 / 2 + 60; // Lane 2
// UI Elements
var scoreText = new Text2('Gül: 0m | Lina: 0m', {
size: 60,
fill: 0xFFFFFF
});
scoreText.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreText);
var instructionText = new Text2('Click rapidly to make Gül run faster!', {
size: 50,
fill: 0xFFFFFF
});
instructionText.anchor.set(0.5, 0);
instructionText.y = 80;
LK.gui.top.addChild(instructionText);
var speedText = new Text2('Speed: 0', {
size: 40,
fill: 0xFFFFFF
});
speedText.anchor.set(0.5, 0);
speedText.y = 150;
LK.gui.top.addChild(speedText);
// Event handler
game.down = function (x, y, obj) {
if (raceFinished) {
// Restart race
raceStarted = false;
raceFinished = false;
clickCount = 0;
gul.distance = 0;
lina.distance = 0;
gul.speed = 0;
lina.speed = 0;
instructionText.setText('Click rapidly to make Gül run faster!');
return;
}
if (!raceStarted) {
raceStarted = true;
instructionText.setText('Race started! Keep clicking!');
}
clickCount++;
lastClickTime = LK.ticks;
// Boost Gül's speed
gul.speed = Math.min(gul.speed + 0.8, 5.0);
};
// Main game loop
game.update = function () {
if (!raceStarted || raceFinished) {
return;
}
// Decay Gül's speed over time (must keep clicking)
gul.speed *= 0.95;
if (gul.speed < 0.1) {
gul.speed = 0;
}
// Lina runs at steady pace with some variation (much slower)
lina.speed = 0.8 + Math.sin(LK.ticks * 0.05) * 0.2 + Math.random() * 0.1;
// Update distances and check for finish
if (gul.distance >= 100 && !raceFinished) {
raceFinished = true;
LK.getSound('victory').play();
instructionText.setText('Gül wins! Click to race again!');
LK.setScore(LK.getScore() + 1);
} else if (lina.distance >= 100 && !raceFinished) {
raceFinished = true;
instructionText.setText('Lina wins! Click to try again!');
}
// Update UI
var gulMeters = Math.floor(gul.distance);
var linaMeters = Math.floor(lina.distance);
scoreText.setText('Gül: ' + gulMeters + 'm | Lina: ' + linaMeters + 'm');
speedText.setText('Speed: ' + Math.floor(gul.speed * 10) + '/50');
}; /****
* Classes
****/
var Runner = Container.expand(function (assetName) {
var self = Container.call(this);
var runnerGraphics = self.attachAsset(assetName, {
anchorX: 0.5,
anchorY: 1.0
});
self.speed = 0;
self.distance = 0; // Distance in meters (0-100)
self.animationTime = 0;
self.update = function () {
// Update distance based on speed
self.distance += self.speed / 60;
// Simple running animation
if (self.speed > 0) {
self.animationTime += self.speed * 0.3;
runnerGraphics.rotation = Math.sin(self.animationTime) * 0.1;
runnerGraphics.scaleY = 1 + Math.sin(self.animationTime * 2) * 0.05;
}
// Update visual position on track
self.x = 100 + self.distance * 18; // Scale distance to pixels
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x87CEEB
});
/****
* Game Code
****/
// Game variables
var raceStarted = false;
var raceFinished = false;
var clickCount = 0;
var lastClickTime = 0;
// Create track
var track = game.addChild(LK.getAsset('track', {
anchorX: 0,
anchorY: 0.5,
x: 0,
y: 2732 / 2
}));
// Create finish line at 100 meters (1900 pixels from start)
var finishLine = game.addChild(LK.getAsset('finishLine', {
anchorX: 0.5,
anchorY: 0.5,
x: 1900,
y: 2732 / 2
}));
// Create runners
var gul = game.addChild(new Runner('gul'));
gul.y = 2732 / 2 - 60; // Lane 1
var lina = game.addChild(new Runner('lina'));
lina.y = 2732 / 2 + 60; // Lane 2
// UI Elements
var scoreText = new Text2('Gül: 0m | Lina: 0m', {
size: 60,
fill: 0xFFFFFF
});
scoreText.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreText);
var instructionText = new Text2('Click rapidly to make Gül run faster!', {
size: 50,
fill: 0xFFFFFF
});
instructionText.anchor.set(0.5, 0);
instructionText.y = 80;
LK.gui.top.addChild(instructionText);
var speedText = new Text2('Speed: 0', {
size: 40,
fill: 0xFFFFFF
});
speedText.anchor.set(0.5, 0);
speedText.y = 150;
LK.gui.top.addChild(speedText);
// Event handler
game.down = function (x, y, obj) {
if (raceFinished) {
// Restart race
raceStarted = false;
raceFinished = false;
clickCount = 0;
gul.distance = 0;
lina.distance = 0;
gul.speed = 0;
lina.speed = 0;
instructionText.setText('Click rapidly to make Gül run faster!');
return;
}
if (!raceStarted) {
raceStarted = true;
instructionText.setText('Race started! Keep clicking!');
}
clickCount++;
lastClickTime = LK.ticks;
// Boost Gül's speed
gul.speed = Math.min(gul.speed + 0.8, 5.0);
};
// Main game loop
game.update = function () {
if (!raceStarted || raceFinished) {
return;
}
// Decay Gül's speed over time (must keep clicking)
gul.speed *= 0.95;
if (gul.speed < 0.1) {
gul.speed = 0;
}
// Lina runs at steady pace with some variation (much slower)
lina.speed = 0.8 + Math.sin(LK.ticks * 0.05) * 0.2 + Math.random() * 0.1;
// Update distances and check for finish
if (gul.distance >= 100 && !raceFinished) {
raceFinished = true;
LK.getSound('victory').play();
instructionText.setText('Gül wins! Click to race again!');
LK.setScore(LK.getScore() + 1);
} else if (lina.distance >= 100 && !raceFinished) {
raceFinished = true;
instructionText.setText('Lina wins! Click to try again!');
}
// Update UI
var gulMeters = Math.floor(gul.distance);
var linaMeters = Math.floor(lina.distance);
scoreText.setText('Gül: ' + gulMeters + 'm | Lina: ' + linaMeters + 'm');
speedText.setText('Speed: ' + Math.floor(gul.speed * 10) + '/50');
};