User prompt
Araba drift yapsın
User prompt
Banknot aldığımızda 200 artsın
User prompt
Kağıt para ekle
User prompt
1 1 artsın
User prompt
Gösterge sadece para topladığımızda artsın
User prompt
Para göstergesi ekel
User prompt
Please fix the bug: 'PlayerCar is not defined' in or related to this line: 'playerCar = new PlayerCar();' Line Number: 72
User prompt
Please fix the bug: 'PlayerCar is not defined' in or related to this line: 'playerCar = new PlayerCar();' Line Number: 72
User prompt
Başka bi tane daha para birimi ekel
User prompt
Para ekel
User prompt
Başka bi tane daha para ekle nadir çıksın
User prompt
Para bir bir yazsın
User prompt
Topladığımız para yazsın
User prompt
Kap para aldığımız yazsın
User prompt
Göstergeyi sil
User prompt
Yola para ekle
User prompt
Ağacı küçült
User prompt
Ağavı çok büyült
User prompt
Ağacı büyült
User prompt
2 arabayıda birazcık büyült
User prompt
2 arabayıda küçük
User prompt
Arabaya kayma ekle
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ // Coin class var Coin = Container.expand(function () { var self = Container.call(this); var coinSprite = self.attachAsset('coin', { anchorX: 0.5, anchorY: 0.5, width: coinWidth, height: coinHeight }); self.speedY = speed; self.update = function () { self.y += self.speedY; }; return self; }); // Diamond class var Diamond = Container.expand(function () { var self = Container.call(this); var diamondSprite = self.attachAsset('diamond', { anchorX: 0.5, anchorY: 0.5, width: diamondWidth, height: diamondHeight }); self.speedY = speed; self.update = function () { self.y += self.speedY; }; return self; }); // LaneMarking class var LaneMarking = Container.expand(function () { var self = Container.call(this); var marking = self.attachAsset('laneMarking', { anchorX: 0.5, anchorY: 0.5, width: laneMarkingWidth, height: laneMarkingHeight }); self.speedY = speed; self.update = function () { self.y += self.speedY; }; return self; }); // ObstacleCar class var ObstacleCar = Container.expand(function () { var self = Container.call(this); var obsSprite = self.attachAsset('obstacleCar', { anchorX: 0.5, anchorY: 0.5, width: obstacleCarWidth, height: obstacleCarHeight }); self.speedY = speed; self.update = function () { self.y += self.speedY; }; return self; }); // Prevent placing anything in top left 100x100 px (no code needed, just a reminder) // PlayerCar class var PlayerCar = Container.expand(function () { var self = Container.call(this); // Attach player car asset, anchor center var carSprite = self.attachAsset('playerCar', { anchorX: 0.5, anchorY: 0.5, width: playerCarWidth, height: playerCarHeight }); self.speedX = 0; // Track lastX for good practice (if needed for future logic) self.lastX = self.x; self.update = function () { self.lastX = self.x; // Move horizontally, clamp to road self.x += self.speedX; if (self.x < laneCenters[0]) self.x = laneCenters[0]; if (self.x > laneCenters[laneCount - 1]) self.x = laneCenters[laneCount - 1]; }; return self; }); // Tree class var Tree = Container.expand(function () { var self = Container.call(this); var treeSprite = self.attachAsset('tree', { anchorX: 0.5, anchorY: 0.5, width: treeWidth, height: treeHeight }); self.speedY = speed; self.update = function () { self.y += self.speedY; }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x222222 }); /**** * Game Code ****/ // Road dimensions var roadWidth = 900; var roadLeft = (2048 - roadWidth) / 2; var roadRight = roadLeft + roadWidth; // Lane count and positions var laneCount = 3; var laneWidth = roadWidth / laneCount; var laneCenters = [roadLeft + laneWidth / 2, roadLeft + laneWidth * 1.5, roadLeft + laneWidth * 2.5]; // Player and obstacle car size (equalized, made slightly larger) var playerCarWidth = 200; var playerCarHeight = 320; var obstacleCarWidth = 200; var obstacleCarHeight = 320; // Lane marking size var laneMarkingWidth = 54; var laneMarkingHeight = 330; // Tree size and spacing var treeWidth = 180; var treeHeight = 270; var treeSpacing = 220; // Asset initialization (shapes) // Game variables var playerCar; var obstacles = []; var laneMarkings = []; var trees = []; var coins = []; var diamonds = []; var coinSpawnTimer = 0; var coinSpawnInterval = 45; // frames, coins spawn more frequently var diamondSpawnTimer = 0; var diamondSpawnInterval = 120; // diamonds spawn less frequently var coinWidth = 80; var coinHeight = 80; var diamondWidth = 80; var diamondHeight = 80; var diamondScore = 0; var obstacleSpawnTimer = 0; var obstacleSpawnInterval = 60; // frames var laneMarkingSpacing = 320; var speed = 18; // vertical speed (pixels per frame) var score = 0; var distance = 0; var isGameOver = false; // Score text removed // Initialize player car playerCar = new PlayerCar(); playerCar.x = laneCenters[1]; playerCar.y = 2732 - 400; game.addChild(playerCar); // Initialize lane markings as dashed (split into short segments) var dashLength = 80; var dashGap = 80; var dashesPerMarking = Math.floor(laneMarkingHeight / (dashLength + dashGap)); for (var i = 0; i < laneCount - 1; i++) { for (var j = 0; j < Math.ceil(2732 / laneMarkingSpacing) + 2; j++) { var baseY = j * laneMarkingSpacing - laneMarkingHeight / 2; for (var d = 0; d < dashesPerMarking; d++) { var marking = new LaneMarking(); marking.x = roadLeft + laneWidth * (i + 1); marking.y = baseY + d * (dashLength + dashGap); marking.speedY = speed; marking.height = dashLength; marking.width = laneMarkingWidth; laneMarkings.push(marking); game.addChild(marking); } } } // Initialize trees along both sides of the road (slightly more trees) for (var side = 0; side < 2; side++) { var xPos = side === 0 ? roadLeft - treeWidth / 2 - 30 : roadRight + treeWidth / 2 + 30; for (var j = 0; j < 6; j++) { // 6 trees per side! var tree = new Tree(); tree.x = xPos; tree.y = j * (2732 / 6) + 100; tree.speedY = speed; trees.push(tree); game.addChild(tree); } } // Touch controls var moveLeft = false; var moveRight = false; // Helper: get which side of the screen is pressed function getSide(x) { if (x < 2048 / 2) return 'left'; return 'right'; } // Touch down game.down = function (x, y, obj) { if (isGameOver) return; var side = getSide(x); if (side === 'left') { moveLeft = true; moveRight = false; } else { moveRight = true; moveLeft = false; } updatePlayerSpeed(); }; // Touch up game.up = function (x, y, obj) { moveLeft = false; moveRight = false; updatePlayerSpeed(); }; // Touch move (optional, for smoother control) game.move = function (x, y, obj) { if (isGameOver) return; var side = getSide(x); if (side === 'left') { moveLeft = true; moveRight = false; } else { moveRight = true; moveLeft = false; } updatePlayerSpeed(); }; // Update player car speedX based on input function updatePlayerSpeed() { if (moveLeft && !moveRight) { playerCar.speedX = -22; } else if (moveRight && !moveLeft) { playerCar.speedX = 22; } else { playerCar.speedX = 0; } } // Main game update loop game.update = function () { if (isGameOver) return; // Update lane markings for (var i = 0; i < laneMarkings.length; i++) { var marking = laneMarkings[i]; marking.speedY = speed; marking.update(); if (marking.y > 2732 + laneMarkingHeight / 2) { marking.y -= (Math.ceil(2732 / laneMarkingSpacing) + 2) * laneMarkingSpacing; } } // Update trees for (var i = 0; i < trees.length; i++) { var tree = trees[i]; tree.speedY = speed; tree.update(); if (tree.y > 2732 + treeHeight / 2) { tree.y -= (Math.ceil(2732 / treeSpacing) + 3) * treeSpacing; } } // Update player car playerCar.update(); // Spawn coins coinSpawnTimer++; if (coinSpawnTimer >= coinSpawnInterval) { coinSpawnTimer = 0; // Spawn coin in a random lane var coin = new Coin(); var laneIdx = Math.floor(Math.random() * laneCount); coin.x = laneCenters[laneIdx]; coin.y = -coinHeight / 2; coin.speedY = speed; coins.push(coin); game.addChild(coin); } // Spawn diamonds diamondSpawnTimer++; if (diamondSpawnTimer >= diamondSpawnInterval) { diamondSpawnTimer = 0; // Spawn diamond in a random lane var diamond = new Diamond(); var laneIdx = Math.floor(Math.random() * laneCount); diamond.x = laneCenters[laneIdx]; diamond.y = -diamondHeight / 2; diamond.speedY = speed; diamonds.push(diamond); game.addChild(diamond); } // Update coins for (var i = coins.length - 1; i >= 0; i--) { var coin = coins[i]; coin.speedY = speed; coin.update(); // Remove if off screen if (coin.y > 2732 + coinHeight) { coin.destroy(); coins.splice(i, 1); continue; } // Collect coin if (playerCar.intersects(coin)) { coin.destroy(); coins.splice(i, 1); score += 10; // Add 10 points for each coin continue; } } // Update diamonds for (var i = diamonds.length - 1; i >= 0; i--) { var diamond = diamonds[i]; diamond.speedY = speed; diamond.update(); // Remove if off screen if (diamond.y > 2732 + diamondHeight) { diamond.destroy(); diamonds.splice(i, 1); continue; } // Collect diamond if (playerCar.intersects(diamond)) { diamond.destroy(); diamonds.splice(i, 1); diamondScore += 1; // Add 1 for each diamond continue; } } // Spawn obstacles obstacleSpawnTimer++; if (obstacleSpawnTimer >= obstacleSpawnInterval) { obstacleSpawnTimer = 0; spawnObstacle(); } // Update obstacles for (var i = obstacles.length - 1; i >= 0; i--) { var obs = obstacles[i]; obs.update(); // Remove if off screen if (obs.y > 2732 + obstacleCarHeight) { obs.destroy(); obstacles.splice(i, 1); continue; } // Collision detection if (playerCar.intersects(obs)) { gameOver(); return; } } // Update score (distance) distance += speed; score = Math.floor(distance / 10) + score; // Add coin score to distance score // scoreTxt.setText(score);//{2B} (removed) // Gradually increase speed for difficulty if (LK.ticks % 180 === 0 && speed < 36) { speed += 1; } }; // Spawn an obstacle car in a random lane function spawnObstacle() { // Synchronize the red car (obstacle) to the blue car (player) on spawn var obs = new ObstacleCar(); obs.x = playerCar.x; obs.y = -obstacleCarHeight / 2; obs.speedY = speed; obstacles.push(obs); game.addChild(obs); } // Game over logic function gameOver() { isGameOver = true; LK.effects.flashScreen(0xff0000, 800); LK.showGameOver(); } // Reset on game restart game.on('reset', function () { // Remove all obstacles for (var i = 0; i < obstacles.length; i++) { obstacles[i].destroy(); } obstacles = []; // Remove all coins for (var i = 0; i < coins.length; i++) { coins[i].destroy(); } coins = []; // Remove all diamonds for (var i = 0; i < diamonds.length; i++) { diamonds[i].destroy(); } diamonds = []; // Remove all lane markings for (var i = 0; i < laneMarkings.length; i++) { laneMarkings[i].destroy(); } laneMarkings = []; // Remove all trees for (var i = 0; i < trees.length; i++) { trees[i].destroy(); } trees = []; // Recreate lane markings as dashed var dashLength = 80; var dashGap = 80; var dashesPerMarking = Math.floor(laneMarkingHeight / (dashLength + dashGap)); for (var i = 0; i < laneCount - 1; i++) { for (var j = 0; j < Math.ceil(2732 / laneMarkingSpacing) + 2; j++) { var baseY = j * laneMarkingSpacing - laneMarkingHeight / 2; for (var d = 0; d < dashesPerMarking; d++) { var marking = new LaneMarking(); marking.x = roadLeft + laneWidth * (i + 1); marking.y = baseY + d * (dashLength + dashGap); marking.speedY = speed; marking.height = dashLength; marking.width = laneMarkingWidth; laneMarkings.push(marking); game.addChild(marking); } } } // Recreate trees (slightly more trees) for (var side = 0; side < 2; side++) { var xPos = side === 0 ? roadLeft - treeWidth / 2 - 30 : roadRight + treeWidth / 2 + 30; for (var j = 0; j < 6; j++) { // 6 trees per side! var tree = new Tree(); tree.x = xPos; tree.y = j * (2732 / 6) + 100; tree.speedY = speed; trees.push(tree); game.addChild(tree); } } // Reset player position playerCar.x = laneCenters[1]; playerCar.y = 2732 - 400; playerCar.speedX = 0; moveLeft = false; moveRight = false; updatePlayerSpeed(); // Reset score and distance score = 0; distance = 0; diamondScore = 0; diamondSpawnTimer = 0; // scoreTxt.setText('0'); (removed) isGameOver = false; speed = 18; obstacleSpawnTimer = 0; });
===================================================================
--- original.js
+++ change.js
@@ -3,8 +3,110 @@
****/
var tween = LK.import("@upit/tween.v1");
/****
+* Classes
+****/
+// Coin class
+var Coin = Container.expand(function () {
+ var self = Container.call(this);
+ var coinSprite = self.attachAsset('coin', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ width: coinWidth,
+ height: coinHeight
+ });
+ self.speedY = speed;
+ self.update = function () {
+ self.y += self.speedY;
+ };
+ return self;
+});
+// Diamond class
+var Diamond = Container.expand(function () {
+ var self = Container.call(this);
+ var diamondSprite = self.attachAsset('diamond', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ width: diamondWidth,
+ height: diamondHeight
+ });
+ self.speedY = speed;
+ self.update = function () {
+ self.y += self.speedY;
+ };
+ return self;
+});
+// LaneMarking class
+var LaneMarking = Container.expand(function () {
+ var self = Container.call(this);
+ var marking = self.attachAsset('laneMarking', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ width: laneMarkingWidth,
+ height: laneMarkingHeight
+ });
+ self.speedY = speed;
+ self.update = function () {
+ self.y += self.speedY;
+ };
+ return self;
+});
+// ObstacleCar class
+var ObstacleCar = Container.expand(function () {
+ var self = Container.call(this);
+ var obsSprite = self.attachAsset('obstacleCar', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ width: obstacleCarWidth,
+ height: obstacleCarHeight
+ });
+ self.speedY = speed;
+ self.update = function () {
+ self.y += self.speedY;
+ };
+ return self;
+});
+// Prevent placing anything in top left 100x100 px (no code needed, just a reminder)
+// PlayerCar class
+var PlayerCar = Container.expand(function () {
+ var self = Container.call(this);
+ // Attach player car asset, anchor center
+ var carSprite = self.attachAsset('playerCar', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ width: playerCarWidth,
+ height: playerCarHeight
+ });
+ self.speedX = 0;
+ // Track lastX for good practice (if needed for future logic)
+ self.lastX = self.x;
+ self.update = function () {
+ self.lastX = self.x;
+ // Move horizontally, clamp to road
+ self.x += self.speedX;
+ if (self.x < laneCenters[0]) self.x = laneCenters[0];
+ if (self.x > laneCenters[laneCount - 1]) self.x = laneCenters[laneCount - 1];
+ };
+ return self;
+});
+// Tree class
+var Tree = Container.expand(function () {
+ var self = Container.call(this);
+ var treeSprite = self.attachAsset('tree', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ width: treeWidth,
+ height: treeHeight
+ });
+ self.speedY = speed;
+ self.update = function () {
+ self.y += self.speedY;
+ };
+ return self;
+});
+
+/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x222222
@@ -353,6 +455,5 @@
// scoreTxt.setText('0'); (removed)
isGameOver = false;
speed = 18;
obstacleSpawnTimer = 0;
-});
-// Prevent placing anything in top left 100x100 px (no code needed, just a reminder)
\ No newline at end of file
+});
\ No newline at end of file