User prompt
yolun devamı yüklenmiyor
User prompt
yön değiştirmiyor
User prompt
dönüşlerde olsun orada araba nereye dönerse oraya baksın
User prompt
basılı tutunca yönlensin
User prompt
yön değiştirme yine ne kadar basarsak mantığı olsun bu olmadı
User prompt
ekranın yukarısına basınca hızlanalım ve yukarıda yön değişme olmasın bide kamera değiştirebilelim dediğim gibi sürücü gözünden ve kuş bakışı
User prompt
basarak yön değişsin sürükleyerek değil
User prompt
ne kadar basarsak o kadar gitsin ve yanda kaçıncı sırada oldugumuz yazsın
User prompt
kontroller önceki oyunumuz gibi olsun
User prompt
Let there be three cameras, one from the driver's eye, one from above and one from behind the car
User prompt
we do a formula car but game is modern
User prompt
delete this game
User prompt
ı cant see any car
User prompt
and do this car in the middle
User prompt
let's compete with others ↪💡 Consider importing and using the following plugins: @upit/storage.v1
Code edit (1 edits merged)
Please save this source code
User prompt
Formula 1 Speed Circuit
Initial prompt
lets do a race game name is Formula 1 Game like formula race,
/****
* Classes
****/
var F1Car = Container.expand(function () {
var self = Container.call(this);
var carGraphics = self.attachAsset('f1Car', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 0;
self.maxSpeed = 15;
self.acceleration = 0.8;
self.friction = 0.9;
self.boostMultiplier = 1.0;
self.boostTimer = 0;
self.update = function () {
// Apply friction
self.speed *= self.friction;
// Update boost
if (self.boostTimer > 0) {
self.boostTimer--;
self.boostMultiplier = 1.5;
carGraphics.tint = 0x00FF00;
} else {
self.boostMultiplier = 1.0;
carGraphics.tint = 0xFFFFFF;
}
// Apply speed with boost
self.y -= self.speed * self.boostMultiplier;
// Keep car on screen
if (self.x < 40) self.x = 40;
if (self.x > 2008) self.x = 2008;
if (self.y < 100) self.y = 100;
if (self.y > 2632) self.y = 2632;
// Engine sound based on speed
if (self.speed > 5) {
LK.getSound('engine').play();
}
};
self.accelerate = function () {
if (self.speed < self.maxSpeed) {
self.speed += self.acceleration;
}
};
self.activateBoost = function () {
self.boostTimer = 120; // 2 seconds at 60fps
LK.getSound('boost').play();
};
return self;
});
var OpponentCar = Container.expand(function () {
var self = Container.call(this);
var carGraphics = self.attachAsset('opponent', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 3 + Math.random() * 4;
self.lastY = 0;
self.update = function () {
self.y += self.speed;
// Slight horizontal movement for realism
self.x += (Math.random() - 0.5) * 2;
// Keep on track
if (self.x < 200) self.x = 200;
if (self.x > 1848) self.x = 1848;
};
return self;
});
var SpeedBoost = Container.expand(function () {
var self = Container.call(this);
var boostGraphics = self.attachAsset('speedBoost', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 5;
self.collected = false;
self.lastIntersecting = false;
self.update = function () {
self.y += self.speed;
// Pulsing effect
var pulse = Math.sin(LK.ticks * 0.2) * 0.3 + 0.7;
boostGraphics.alpha = pulse;
boostGraphics.rotation += 0.1;
};
return self;
});
/****
* Initialize Game
****/
// Create track background
var game = new LK.Game({
backgroundColor: 0x000000
});
/****
* Game Code
****/
// Create track background
var trackLeft = game.addChild(LK.getAsset('track', {
anchorX: 0,
anchorY: 0,
x: 0,
y: 0
}));
var trackRight = game.addChild(LK.getAsset('track', {
anchorX: 0,
anchorY: 0,
x: 0,
y: 2532
}));
// Track lines for visual effect
var centerLine = game.addChild(LK.getAsset('trackLine', {
anchorX: 0.5,
anchorY: 0,
x: 1024,
y: 0
}));
var leftLine = game.addChild(LK.getAsset('trackLine', {
anchorX: 0.5,
anchorY: 0,
x: 300,
y: 0
}));
var rightLine = game.addChild(LK.getAsset('trackLine', {
anchorX: 0.5,
anchorY: 0,
x: 1748,
y: 0
}));
// Create F1 car
var f1Car = game.addChild(new F1Car());
f1Car.x = 1024;
f1Car.y = 2200;
// Game arrays
var opponents = [];
var speedBoosts = [];
var trackLines = [centerLine, leftLine, rightLine];
// Score and UI
var scoreTxt = new Text2('Speed: 0', {
size: 80,
fill: 0xFFFFFF
});
scoreTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreTxt);
var distanceTxt = new Text2('Distance: 0m', {
size: 60,
fill: 0xFFFF00
});
distanceTxt.anchor.set(0, 0);
distanceTxt.x = 50;
distanceTxt.y = 100;
LK.gui.topLeft.addChild(distanceTxt);
// Game variables
var distance = 0;
var gameSpeed = 1;
var spawnTimer = 0;
var boostSpawnTimer = 0;
var trackOffset = 0;
// Touch controls
var isDragging = false;
var dragStartX = 0;
game.down = function (x, y, obj) {
isDragging = true;
dragStartX = x;
f1Car.accelerate();
};
game.move = function (x, y, obj) {
if (isDragging) {
var deltaX = x - dragStartX;
f1Car.x += deltaX * 0.1;
dragStartX = x;
}
};
game.up = function (x, y, obj) {
isDragging = false;
};
// Start race music
LK.playMusic('raceMusic');
game.update = function () {
// Update distance and speed
distance += f1Car.speed;
gameSpeed = 1 + distance / 10000;
// Update UI
scoreTxt.setText('Speed: ' + Math.floor(f1Car.speed * 10) + ' km/h');
distanceTxt.setText('Distance: ' + Math.floor(distance / 10) + 'm');
// Animate track lines moving
trackOffset += f1Car.speed * 2;
for (var i = 0; i < trackLines.length; i++) {
var line = trackLines[i];
line.y = trackOffset % 400 - 200;
}
// Spawn opponents
spawnTimer++;
if (spawnTimer > 60 / gameSpeed) {
spawnTimer = 0;
var opponent = new OpponentCar();
opponent.x = 300 + Math.random() * 1448;
opponent.y = -100;
opponent.lastY = opponent.y;
opponents.push(opponent);
game.addChild(opponent);
}
// Spawn speed boosts
boostSpawnTimer++;
if (boostSpawnTimer > 300) {
boostSpawnTimer = 0;
var boost = new SpeedBoost();
boost.x = 400 + Math.random() * 1248;
boost.y = -50;
boost.lastIntersecting = false;
speedBoosts.push(boost);
game.addChild(boost);
}
// Update and check opponents
for (var i = opponents.length - 1; i >= 0; i--) {
var opponent = opponents[i];
// Remove off-screen opponents
if (opponent.lastY < 2800 && opponent.y >= 2800) {
opponent.destroy();
opponents.splice(i, 1);
continue;
}
// Check collision with player
if (f1Car.intersects(opponent)) {
LK.effects.flashScreen(0xFF0000, 500);
LK.showGameOver();
return;
}
opponent.lastY = opponent.y;
}
// Update and check speed boosts
for (var i = speedBoosts.length - 1; i >= 0; i--) {
var boost = speedBoosts[i];
// Remove off-screen boosts
if (boost.y > 2800) {
boost.destroy();
speedBoosts.splice(i, 1);
continue;
}
// Check collection
var currentIntersecting = f1Car.intersects(boost);
if (!boost.lastIntersecting && currentIntersecting) {
f1Car.activateBoost();
boost.destroy();
speedBoosts.splice(i, 1);
continue;
}
boost.lastIntersecting = currentIntersecting;
}
// Win condition - reach 50km
if (distance >= 500000) {
LK.showYouWin();
}
}; ===================================================================
--- original.js
+++ change.js
@@ -1,6 +1,255 @@
-/****
+/****
+* Classes
+****/
+var F1Car = Container.expand(function () {
+ var self = Container.call(this);
+ var carGraphics = self.attachAsset('f1Car', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.speed = 0;
+ self.maxSpeed = 15;
+ self.acceleration = 0.8;
+ self.friction = 0.9;
+ self.boostMultiplier = 1.0;
+ self.boostTimer = 0;
+ self.update = function () {
+ // Apply friction
+ self.speed *= self.friction;
+ // Update boost
+ if (self.boostTimer > 0) {
+ self.boostTimer--;
+ self.boostMultiplier = 1.5;
+ carGraphics.tint = 0x00FF00;
+ } else {
+ self.boostMultiplier = 1.0;
+ carGraphics.tint = 0xFFFFFF;
+ }
+ // Apply speed with boost
+ self.y -= self.speed * self.boostMultiplier;
+ // Keep car on screen
+ if (self.x < 40) self.x = 40;
+ if (self.x > 2008) self.x = 2008;
+ if (self.y < 100) self.y = 100;
+ if (self.y > 2632) self.y = 2632;
+ // Engine sound based on speed
+ if (self.speed > 5) {
+ LK.getSound('engine').play();
+ }
+ };
+ self.accelerate = function () {
+ if (self.speed < self.maxSpeed) {
+ self.speed += self.acceleration;
+ }
+ };
+ self.activateBoost = function () {
+ self.boostTimer = 120; // 2 seconds at 60fps
+ LK.getSound('boost').play();
+ };
+ return self;
+});
+var OpponentCar = Container.expand(function () {
+ var self = Container.call(this);
+ var carGraphics = self.attachAsset('opponent', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.speed = 3 + Math.random() * 4;
+ self.lastY = 0;
+ self.update = function () {
+ self.y += self.speed;
+ // Slight horizontal movement for realism
+ self.x += (Math.random() - 0.5) * 2;
+ // Keep on track
+ if (self.x < 200) self.x = 200;
+ if (self.x > 1848) self.x = 1848;
+ };
+ return self;
+});
+var SpeedBoost = Container.expand(function () {
+ var self = Container.call(this);
+ var boostGraphics = self.attachAsset('speedBoost', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.speed = 5;
+ self.collected = false;
+ self.lastIntersecting = false;
+ self.update = function () {
+ self.y += self.speed;
+ // Pulsing effect
+ var pulse = Math.sin(LK.ticks * 0.2) * 0.3 + 0.7;
+ boostGraphics.alpha = pulse;
+ boostGraphics.rotation += 0.1;
+ };
+ return self;
+});
+
+/****
* Initialize Game
-****/
+****/
+// Create track background
var game = new LK.Game({
backgroundColor: 0x000000
-});
\ No newline at end of file
+});
+
+/****
+* Game Code
+****/
+// Create track background
+var trackLeft = game.addChild(LK.getAsset('track', {
+ anchorX: 0,
+ anchorY: 0,
+ x: 0,
+ y: 0
+}));
+var trackRight = game.addChild(LK.getAsset('track', {
+ anchorX: 0,
+ anchorY: 0,
+ x: 0,
+ y: 2532
+}));
+// Track lines for visual effect
+var centerLine = game.addChild(LK.getAsset('trackLine', {
+ anchorX: 0.5,
+ anchorY: 0,
+ x: 1024,
+ y: 0
+}));
+var leftLine = game.addChild(LK.getAsset('trackLine', {
+ anchorX: 0.5,
+ anchorY: 0,
+ x: 300,
+ y: 0
+}));
+var rightLine = game.addChild(LK.getAsset('trackLine', {
+ anchorX: 0.5,
+ anchorY: 0,
+ x: 1748,
+ y: 0
+}));
+// Create F1 car
+var f1Car = game.addChild(new F1Car());
+f1Car.x = 1024;
+f1Car.y = 2200;
+// Game arrays
+var opponents = [];
+var speedBoosts = [];
+var trackLines = [centerLine, leftLine, rightLine];
+// Score and UI
+var scoreTxt = new Text2('Speed: 0', {
+ size: 80,
+ fill: 0xFFFFFF
+});
+scoreTxt.anchor.set(0.5, 0);
+LK.gui.top.addChild(scoreTxt);
+var distanceTxt = new Text2('Distance: 0m', {
+ size: 60,
+ fill: 0xFFFF00
+});
+distanceTxt.anchor.set(0, 0);
+distanceTxt.x = 50;
+distanceTxt.y = 100;
+LK.gui.topLeft.addChild(distanceTxt);
+// Game variables
+var distance = 0;
+var gameSpeed = 1;
+var spawnTimer = 0;
+var boostSpawnTimer = 0;
+var trackOffset = 0;
+// Touch controls
+var isDragging = false;
+var dragStartX = 0;
+game.down = function (x, y, obj) {
+ isDragging = true;
+ dragStartX = x;
+ f1Car.accelerate();
+};
+game.move = function (x, y, obj) {
+ if (isDragging) {
+ var deltaX = x - dragStartX;
+ f1Car.x += deltaX * 0.1;
+ dragStartX = x;
+ }
+};
+game.up = function (x, y, obj) {
+ isDragging = false;
+};
+// Start race music
+LK.playMusic('raceMusic');
+game.update = function () {
+ // Update distance and speed
+ distance += f1Car.speed;
+ gameSpeed = 1 + distance / 10000;
+ // Update UI
+ scoreTxt.setText('Speed: ' + Math.floor(f1Car.speed * 10) + ' km/h');
+ distanceTxt.setText('Distance: ' + Math.floor(distance / 10) + 'm');
+ // Animate track lines moving
+ trackOffset += f1Car.speed * 2;
+ for (var i = 0; i < trackLines.length; i++) {
+ var line = trackLines[i];
+ line.y = trackOffset % 400 - 200;
+ }
+ // Spawn opponents
+ spawnTimer++;
+ if (spawnTimer > 60 / gameSpeed) {
+ spawnTimer = 0;
+ var opponent = new OpponentCar();
+ opponent.x = 300 + Math.random() * 1448;
+ opponent.y = -100;
+ opponent.lastY = opponent.y;
+ opponents.push(opponent);
+ game.addChild(opponent);
+ }
+ // Spawn speed boosts
+ boostSpawnTimer++;
+ if (boostSpawnTimer > 300) {
+ boostSpawnTimer = 0;
+ var boost = new SpeedBoost();
+ boost.x = 400 + Math.random() * 1248;
+ boost.y = -50;
+ boost.lastIntersecting = false;
+ speedBoosts.push(boost);
+ game.addChild(boost);
+ }
+ // Update and check opponents
+ for (var i = opponents.length - 1; i >= 0; i--) {
+ var opponent = opponents[i];
+ // Remove off-screen opponents
+ if (opponent.lastY < 2800 && opponent.y >= 2800) {
+ opponent.destroy();
+ opponents.splice(i, 1);
+ continue;
+ }
+ // Check collision with player
+ if (f1Car.intersects(opponent)) {
+ LK.effects.flashScreen(0xFF0000, 500);
+ LK.showGameOver();
+ return;
+ }
+ opponent.lastY = opponent.y;
+ }
+ // Update and check speed boosts
+ for (var i = speedBoosts.length - 1; i >= 0; i--) {
+ var boost = speedBoosts[i];
+ // Remove off-screen boosts
+ if (boost.y > 2800) {
+ boost.destroy();
+ speedBoosts.splice(i, 1);
+ continue;
+ }
+ // Check collection
+ var currentIntersecting = f1Car.intersects(boost);
+ if (!boost.lastIntersecting && currentIntersecting) {
+ f1Car.activateBoost();
+ boost.destroy();
+ speedBoosts.splice(i, 1);
+ continue;
+ }
+ boost.lastIntersecting = currentIntersecting;
+ }
+ // Win condition - reach 50km
+ if (distance >= 500000) {
+ LK.showYouWin();
+ }
+};
\ No newline at end of file