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.steerDirection = 0; // -1 for left, 1 for right, 0 for straight self.steerSpeed = 6; 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; // Apply steering with pressure intensity var steerIntensity = touchPressure || 1; self.x += self.steerDirection * self.steerSpeed * steerIntensity; // 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 (pressureMultiplier) { if (self.speed < self.maxSpeed) { var accel = self.acceleration * (pressureMultiplier || 1); self.speed += accel; } }; 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); // Position display var positionTxt = new Text2('Position: 1/20', { size: 70, fill: 0x00FF00 }); positionTxt.anchor.set(1, 0); positionTxt.x = -50; positionTxt.y = 50; LK.gui.topRight.addChild(positionTxt); // 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; var playerPosition = 1; // Player's current position in race var totalCars = 20; // Total number of cars in race var touchPressure = 0; // How hard the screen is being pressed var isPressed = false; // Whether screen is currently being pressed // Camera system var currentCamera = 0; // 0: behind, 1: above, 2: driver's eye var cameraNames = ['Behind Car', 'Bird\'s Eye View', 'Driver View']; var cameraOffset = { x: 0, y: 0 }; var cameraZoom = 1; var cameraAngle = 0; // Touch controls - pressure-based acceleration 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; } // Only allow acceleration if touching upper part of screen if (y < 1366) { // Start pressure-based acceleration isPressed = true; touchPressure = 0.1; // Initial pressure } else { // Start pressure-based steering for lower screen touches isPressed = true; touchPressure = 0.1; // Initial pressure for steering if (x < f1Car.x) { f1Car.steerDirection = -1; // Steer left } else if (x > f1Car.x) { f1Car.steerDirection = 1; // Steer right } else { f1Car.steerDirection = 0; // Go straight } } }; game.move = function (x, y, obj) { // Update steering direction only for lower screen touches if (y >= 1366) { if (x < f1Car.x) { f1Car.steerDirection = -1; // Steer left } else if (x > f1Car.x) { f1Car.steerDirection = 1; // Steer right } else { f1Car.steerDirection = 0; // Go straight } } }; game.up = function (x, y, obj) { // Stop pressure-based acceleration isPressed = false; touchPressure = 0; // Stop steering f1Car.steerDirection = 0; }; // 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 () { // Handle pressure-based acceleration and steering if (isPressed) { // Increase pressure over time (longer press = more acceleration/steering) touchPressure = Math.min(touchPressure + 0.02, 2.0); // Max 2x acceleration f1Car.accelerate(touchPressure); } // Update distance and speed distance += f1Car.speed; gameSpeed = 1 + distance / 10000; // Calculate player position based on speed and distance var basePosition = Math.max(1, Math.min(totalCars, Math.floor(totalCars - distance / 5000 - f1Car.speed / 2))); playerPosition = basePosition; // Update camera system updateCamera(); // Update UI scoreTxt.setText('Speed: ' + Math.floor(f1Car.speed * 10) + ' km/h'); distanceTxt.setText('Distance: ' + Math.floor(distance / 10) + 'm'); positionTxt.setText('Position: ' + playerPosition + '/' + totalCars); // 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
@@ -28,10 +28,11 @@
carGraphics.tint = 0xFFFFFF;
}
// Apply speed with boost
self.y -= self.speed * self.boostMultiplier;
- // Apply steering
- self.x += self.steerDirection * self.steerSpeed;
+ // Apply steering with pressure intensity
+ var steerIntensity = touchPressure || 1;
+ self.x += self.steerDirection * self.steerSpeed * steerIntensity;
// 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;
@@ -218,9 +219,11 @@
// Start pressure-based acceleration
isPressed = true;
touchPressure = 0.1; // Initial pressure
} else {
- // Set steering direction based on touch position in lower part
+ // Start pressure-based steering for lower screen touches
+ isPressed = true;
+ touchPressure = 0.1; // Initial pressure for steering
if (x < f1Car.x) {
f1Car.steerDirection = -1; // Steer left
} else if (x > f1Car.x) {
f1Car.steerDirection = 1; // Steer right
@@ -288,11 +291,11 @@
}
// Start race music
LK.playMusic('raceMusic');
game.update = function () {
- // Handle pressure-based acceleration
+ // Handle pressure-based acceleration and steering
if (isPressed) {
- // Increase pressure over time (longer press = more acceleration)
+ // Increase pressure over time (longer press = more acceleration/steering)
touchPressure = Math.min(touchPressure + 0.02, 2.0); // Max 2x acceleration
f1Car.accelerate(touchPressure);
}
// Update distance and speed