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); // Camera display var cameraTxt = new Text2('Camera: Behind Car', { size: 50, fill: 0x00FFFF }); cameraTxt.anchor.set(1, 0); LK.gui.topRight.addChild(cameraTxt); // Camera switch button var cameraButton = new Text2('📷 SWITCH', { size: 60, fill: 0xFFFF00 }); cameraButton.anchor.set(0.5, 0); cameraButton.x = 0; cameraButton.y = 200; LK.gui.topRight.addChild(cameraButton); // Game variables var distance = 0; var gameSpeed = 1; var spawnTimer = 0; var boostSpawnTimer = 0; var trackOffset = 0; // Camera system var currentCamera = 0; // 0: behind, 1: above, 2: driver's eye var cameraNames = ['Behind Car', 'Above Car', 'Driver View']; var cameraOffset = { x: 0, y: 0 }; var cameraZoom = 1; var cameraAngle = 0; // Touch controls - simple touch system game.down = function (x, y, obj) { // Check if camera button was pressed (top right area) var globalPos = game.toGlobal({ x: x, y: y }); if (globalPos.x > 1800 && globalPos.y < 300) { // Switch camera currentCamera = (currentCamera + 1) % 3; cameraTxt.setText('Camera: ' + cameraNames[currentCamera]); return; } // Simple touch control - car moves toward touch position f1Car.accelerate(); // Move car toward touch position (horizontal only) var targetX = x; if (targetX < f1Car.x) { f1Car.x -= 8; // Move left } else if (targetX > f1Car.x) { f1Car.x += 8; // Move right } }; game.move = function (x, y, obj) { // No drag movement needed with simple touch controls }; game.up = function (x, y, obj) { // No action needed for touch release }; // Camera update function function updateCamera() { switch (currentCamera) { case 0: // Behind car camera cameraOffset.x = 0; cameraOffset.y = 300; cameraZoom = 1; cameraAngle = 0; game.scale.set(1, 1); game.rotation = 0; game.x = -f1Car.x + 1024; game.y = -f1Car.y + 2000; break; case 1: // Above car camera (bird's eye view) cameraOffset.x = 0; cameraOffset.y = 0; cameraZoom = 0.6; cameraAngle = 0; game.scale.set(cameraZoom, cameraZoom); game.rotation = 0; game.x = (-f1Car.x + 1024) * cameraZoom; game.y = (-f1Car.y + 1366) * cameraZoom; break; case 2: // Driver's eye view cameraOffset.x = 0; cameraOffset.y = -80; cameraZoom = 1.5; cameraAngle = 0; game.scale.set(cameraZoom, cameraZoom); game.rotation = 0; game.x = (-f1Car.x + 1024) * cameraZoom; game.y = (-f1Car.y + 1000) * cameraZoom; break; } } // Start race music LK.playMusic('raceMusic'); game.update = function () { // Update distance and speed distance += f1Car.speed; gameSpeed = 1 + distance / 10000; // Update camera system updateCamera(); // 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
@@ -181,11 +181,9 @@
y: 0
};
var cameraZoom = 1;
var cameraAngle = 0;
-// Touch controls
-var isDragging = false;
-var dragStartX = 0;
+// Touch controls - simple touch system
game.down = function (x, y, obj) {
// Check if camera button was pressed (top right area)
var globalPos = game.toGlobal({
x: x,
@@ -196,21 +194,23 @@
currentCamera = (currentCamera + 1) % 3;
cameraTxt.setText('Camera: ' + cameraNames[currentCamera]);
return;
}
- isDragging = true;
- dragStartX = x;
+ // Simple touch control - car moves toward touch position
f1Car.accelerate();
+ // Move car toward touch position (horizontal only)
+ var targetX = x;
+ if (targetX < f1Car.x) {
+ f1Car.x -= 8; // Move left
+ } else if (targetX > f1Car.x) {
+ f1Car.x += 8; // Move right
+ }
};
game.move = function (x, y, obj) {
- if (isDragging) {
- var deltaX = x - dragStartX;
- f1Car.x += deltaX * 0.1;
- dragStartX = x;
- }
+ // No drag movement needed with simple touch controls
};
game.up = function (x, y, obj) {
- isDragging = false;
+ // No action needed for touch release
};
// Camera update function
function updateCamera() {
switch (currentCamera) {