User prompt
Oyuna sadece 64 level araba ekle
User prompt
Oyuna level 32 araba ekle
User prompt
Oyuna level 16 araba ekle
User prompt
Car 7 car 8 car 9 car 10 car 11 car 12 ekle oyuna
User prompt
Paralar aynanda gelsin
User prompt
Para her 3 saniyede bir gelsin
User prompt
Alt tarafta Buy car her satın altında bir omceki fiyatın 1.2 katını istesin . Tadan sonrayı gösterme
User prompt
22. Kareye kadar herkesi 1.5 kat ucuzlar
User prompt
28. Kare fiyatı 666.6m olsun 29. Kare fiyatı 1.22B olsun 30 Kare fiyatı. 2.22B olsun 31 Kare fiyatı 4.44 B olsun 32. Kare fiyatı 6.66B olsun 33. Kare fiyatı 12.5 B olsun 34. Kare fiyatı 16.6B olsun 35. Kare fiyatı 22.2B olsun 36 Kare fiyatı 30B olsun 37 Kare fiyatı 36.6 B olsun 38. Karenin fiyatı 40B olsun 39 karenin fiyatı 50B olsun 40 karenin fiyatı 60B olsun
User prompt
21 kare fiyatı 6.6 m olsun 22. Kare fiyat 12.2m olsun 23. Kare 24.4m olsun 24. Kare fiyatı 48.8 milyon olsun 25. Kare 96.6m olsun 26. Kare fiyatı 193.2m olsun 27. Kare 388.8 mil olsun
User prompt
Fiyat 1000.000.000 ulaşınca 1B yazsın
User prompt
999 milyonu gecerse B yazsın
User prompt
Paralar 1000 ulaşırsa yanında k yazsın milyona ulaşırsa m yazssın
User prompt
İlk oyuna başladı jz zaman sadece 4 tane kare kullanalım diyer kareler avmaj icin 5 kare 100 para 6. Kare 200 para 7. Kare 400 para hepsi bir onceki fiyatın w katını istesin satın almak icin ustune tıklıyalım
User prompt
Ekranda her satır 8 kare olsun toplamda 40 kare olsun
User prompt
Araba kac level yazılsa ustunde bize her 5 saniyede bir o kac kevelse okadar para gelsin ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Her araba birlestirdimizde para gelsin bizde kac levelik aracılığıyla varsa onun ustundekac level varsa okadar para gelsin
User prompt
Her araba satın aldında 1 level aracılığıyla gelsin
User prompt
Her 5 saniyede bir 1 levelik car gelsin
User prompt
Buy car 10 para olsun
User prompt
Buy car alakalı dedim hersek sil kafana göre sen ayarla
User prompt
Buy car yanına car level ekle her satın altında artık 2 level 2 level gelsin bilahare aldın zaman 4 levle 4 level cıksın fiyatı 20 olsun her satın alındın bir onceki fiyatın 2 katını istesin
User prompt
Buy car buyult
User prompt
Hayır arbalar 1 1 birkesti zaman 2 2 ile birlesti zaman 4 ile 4 birlestirdi zaman 8 hep ikikatı
Code edit (1 edits merged)
Please save this source code
/**** 
* Plugins
****/ 
var tween = LK.import("@upit/tween.v1");
var storage = LK.import("@upit/storage.v1", {
	coins: 100,
	highestCar: 1,
	availableSlots: 4
});
/**** 
* Classes
****/ 
var BuyButton = Container.expand(function (startLevel) {
	var self = Container.call(this);
	self.carLevel = startLevel || 2;
	self.price = 10;
	var buttonGraphics = self.attachAsset('buy_button', {
		anchorX: 0.5,
		anchorY: 0.5
	});
	// Add coin icon
	var coinIcon = self.attachAsset('coin', {
		anchorX: 0.5,
		anchorY: 0.5,
		x: -70,
		y: 0,
		scaleX: 0.8,
		scaleY: 0.8
	});
	// Add price text
	var formattedPrice;
	// Will use formatCoin after game is initialized
	if (typeof game !== 'undefined' && game.formatCoin) {
		formattedPrice = game.formatCoin(self.price);
	} else {
		if (self.price >= 1000000000) {
			formattedPrice = Math.floor(self.price / 1000000000) + "B";
		} else if (self.price >= 1000000) {
			formattedPrice = (self.price / 1000000).toFixed(1) + "m";
		} else if (self.price >= 1000) {
			formattedPrice = (self.price / 1000).toFixed(1) + "k";
		} else {
			formattedPrice = self.price.toString();
		}
	}
	self.priceText = new Text2(formattedPrice, {
		size: 35,
		fill: 0xFFFFFF
	});
	self.priceText.anchor.set(0, 0.5);
	self.priceText.x = -40;
	self.addChild(self.priceText);
	// Add "Buy Car" text
	var buyText = new Text2("Buy Car", {
		size: 25,
		fill: 0xFFFFFF
	});
	buyText.anchor.set(0.5, 0.5);
	buyText.y = -40;
	self.addChild(buyText);
	// Add car level text
	self.levelText = new Text2("Level " + self.carLevel, {
		size: 25,
		fill: 0xFFFFFF
	});
	self.levelText.anchor.set(0.5, 0.5);
	self.levelText.y = -10;
	self.addChild(self.levelText);
	self.down = function (x, y, obj) {
		tween(self, {
			scaleX: 0.95,
			scaleY: 0.95
		}, {
			duration: 100
		});
	};
	self.up = function (x, y, obj) {
		tween(self, {
			scaleX: 1,
			scaleY: 1
		}, {
			duration: 100
		});
		if (game.coins >= self.price) {
			game.coins -= self.price;
			storage.coins = game.coins;
			game.updateCoinsDisplay();
			// Add car with level 1 instead of current car level
			game.addNewCar(1);
			LK.getSound('buy').play();
			// Increase car level and increase price by 1.2 times for next car
			self.price = Math.round(self.price * 1.2);
			if (self.price >= 80) {
				self.carLevel *= 2;
				self.levelText.setText("Level " + self.carLevel);
			}
			var formattedPrice = game.formatCoin(self.price);
			self.priceText.setText(formattedPrice);
		} else {
			// Visual feedback for not enough coins
			tween(self, {
				rotation: 0.1
			}, {
				duration: 100,
				onFinish: function onFinish() {
					tween(self, {
						rotation: -0.1
					}, {
						duration: 100,
						onFinish: function onFinish() {
							tween(self, {
								rotation: 0
							}, {
								duration: 100
							});
						}
					});
				}
			});
		}
	};
	return self;
});
var Car = Container.expand(function (carLevel) {
	var self = Container.call(this);
	self.carLevel = carLevel || 1;
	self.lastIncomeTime = Date.now();
	var colorMap = {
		1: 0x336699,
		// Blue
		2: 0x66CC99,
		// Teal
		3: 0xCC6633,
		// Orange
		4: 0x9966CC,
		// Purple
		5: 0xFFCC33,
		// Yellow
		6: 0xFF3366 // Pink
	};
	var assetId = 'car' + (self.carLevel <= 6 ? self.carLevel : 1 + self.carLevel % 6);
	var carGraphics = self.attachAsset(assetId, {
		anchorX: 0.5,
		anchorY: 0.5,
		scaleX: 0.9,
		scaleY: 0.9
	});
	// Text to display car level
	self.levelText = new Text2("Level " + self.carLevel.toString(), {
		size: 40,
		fill: 0xFFFFFF
	});
	self.levelText.anchor.set(0.5, 0.5);
	self.addChild(self.levelText);
	self.isDragging = false;
	self.originalPosition = {
		x: 0,
		y: 0
	};
	self.originalSlot = null;
	// Make cars draggable
	self.down = function (x, y, obj) {
		self.isDragging = true;
		self.originalPosition.x = self.x;
		self.originalPosition.y = self.y;
		// Bring to front (since we can't use swapChildren, we'll handle in the game class)
		game.bringCarToFront(self);
		// Scale up to indicate being dragged
		tween(self, {
			scaleX: 1.1,
			scaleY: 1.1
		}, {
			duration: 200
		});
	};
	self.up = function (x, y, obj) {
		if (self.isDragging) {
			self.isDragging = false;
			// Scale back to normal
			tween(self, {
				scaleX: 1,
				scaleY: 1
			}, {
				duration: 200
			});
			// Check for merge in game controller
			game.checkForMerge(self);
		}
	};
	self.getValue = function () {
		// Base value is 5 for level 1, direct multiplication for other levels
		return 5 * self.carLevel;
	};
	self.generateIncome = function () {
		var currentTime = Date.now();
		// Check if it's been 5 seconds since last income
		if (currentTime - self.lastIncomeTime >= 5000) {
			// Generate income equal to car level
			var income = self.carLevel;
			game.coins += income;
			storage.coins = game.coins;
			game.updateCoinsDisplay();
			// Show the coin reward
			if (self.originalSlot) {
				game.showCoinReward(self.x, self.y, income);
			}
			// Update the last income time
			self.lastIncomeTime = currentTime;
			return true;
		}
		return false;
	};
	self.update = function () {
		// Generate income if time has passed
		self.generateIncome();
	};
	return self;
});
var GarageSlot = Container.expand(function (row, col) {
	var self = Container.call(this);
	self.row = row;
	self.col = col;
	self.isEmpty = true;
	self.currentCar = null;
	var slotGraphics = self.attachAsset('garage_slot', {
		anchorX: 0.5,
		anchorY: 0.5,
		alpha: 0.3,
		scaleX: 0.9,
		scaleY: 0.9
	});
	self.highlight = function () {
		tween(slotGraphics, {
			alpha: 0.6
		}, {
			duration: 200
		});
	};
	self.unhighlight = function () {
		tween(slotGraphics, {
			alpha: 0.3
		}, {
			duration: 200
		});
	};
	self.setCar = function (car) {
		self.currentCar = car;
		self.isEmpty = false;
	};
	self.removeCar = function () {
		self.currentCar = null;
		self.isEmpty = true;
	};
	// Down handler for locked slots
	self.down = function (x, y, obj) {
		if (self.locked) {
			tween(self, {
				scaleX: 0.95,
				scaleY: 0.95
			}, {
				duration: 100
			});
		}
	};
	// Up handler for locked slots
	self.up = function (x, y, obj) {
		if (self.locked) {
			tween(self, {
				scaleX: 1,
				scaleY: 1
			}, {
				duration: 100
			});
			// Get the price for this slot
			var price = game.slotPrices[self.slotNumber] || 100000;
			// Check if player has enough coins
			if (game.coins >= price) {
				// Deduct coins
				game.coins -= price;
				storage.coins = game.coins;
				game.updateCoinsDisplay();
				// Unlock the slot
				self.locked = false;
				game.availableSlots++;
				storage.availableSlots = game.availableSlots;
				// Remove all children (price text, coin icon, etc.)
				while (self.children.length > 1) {
					// Keep only the slot graphics
					self.removeChild(self.children[self.children.length - 1]);
				}
				// Change appearance
				tween(self.children[0], {
					alpha: 0.3
				}, {
					duration: 200
				});
				// Play purchase sound
				LK.getSound('buy').play();
				// Flash effect
				LK.effects.flashObject(self, 0xFFFFFF, 500);
			} else {
				// Not enough coins - shake effect
				tween(self, {
					rotation: 0.1
				}, {
					duration: 100,
					onFinish: function onFinish() {
						tween(self, {
							rotation: -0.1
						}, {
							duration: 100,
							onFinish: function onFinish() {
								tween(self, {
									rotation: 0
								}, {
									duration: 100
								});
							}
						});
					}
				});
			}
		}
	};
	return self;
});
/**** 
* Initialize Game
****/ 
var game = new LK.Game({
	backgroundColor: 0x222222
});
/**** 
* Game Code
****/ 
// Game variables
game.grid = {
	rows: 5,
	cols: 8
};
game.slotSize = 250;
game.slots = [];
game.cars = [];
game.draggedCar = null;
game.coins = storage.coins || 100;
game.highestCar = storage.highestCar || 1;
game.availableSlots = storage.availableSlots || 4;
// Start background music
LK.playMusic('bgmusic');
// Calculate garage position
game.garageX = 2048 / 2 - game.grid.cols * game.slotSize / 2 + game.slotSize / 2;
game.garageY = 300;
// Adjust slot size to fit the wider grid
game.slotSize = 220;
// Initialize garage grid
game.initializeGarage = function () {
	game.availableSlots = 4; // Start with only 4 slots
	game.slotPrices = {
		5: Math.round(100 / 1.5),
		// 5th slot costs 67 coins (1.5x cheaper)
		6: Math.round(200 / 1.5),
		// 6th slot costs 133 coins (1.5x cheaper)
		7: Math.round(400 / 1.5),
		// 7th slot costs 267 coins (1.5x cheaper)
		8: Math.round(800 / 1.5),
		// 8th slot costs 533 coins (1.5x cheaper)
		9: Math.round(1600 / 1.5),
		// 9th slot costs 1067 coins (1.5x cheaper)
		10: Math.round(3200 / 1.5),
		// 10th slot costs 2133 coins (1.5x cheaper)
		11: Math.round(6400 / 1.5),
		// 11th slot costs 4267 coins (1.5x cheaper)
		12: Math.round(12800 / 1.5),
		// 12th slot costs 8533 coins (1.5x cheaper)
		13: Math.round(25600 / 1.5),
		// 13th slot costs 17067 coins (1.5x cheaper)
		14: Math.round(51200 / 1.5),
		// 14th slot costs 34133 coins (1.5x cheaper)
		15: Math.round(102400 / 1.5),
		// 15th slot costs 68267 coins (1.5x cheaper)
		16: Math.round(204800 / 1.5),
		// 16th slot costs 136533 coins (1.5x cheaper)
		17: Math.round(409600 / 1.5),
		// 17th slot costs 273067 coins (1.5x cheaper)
		18: Math.round(819200 / 1.5),
		// 18th slot costs 546133 coins (1.5x cheaper)
		19: Math.round(1638400 / 1.5),
		// 19th slot costs 1092267 coins (1.5x cheaper)
		20: Math.round(3276800 / 1.5),
		// 20th slot costs 2184533 coins (1.5x cheaper)
		21: Math.round(6600000 / 1.5),
		// 21st slot costs 4.4 million (1.5x cheaper)
		22: Math.round(12200000 / 1.5),
		// 22nd slot costs 8.13 million (1.5x cheaper)
		23: 24400000,
		// 23rd slot costs 24.4 million
		24: 48800000,
		// 24th slot costs 48.8 million
		25: 96600000,
		// 25th slot costs 96.6 million
		26: 193200000,
		// 26th slot costs 193.2 million
		27: 388800000,
		// 27th slot costs 388.8 million
		28: 666600000,
		// 28th slot costs 666.6 million
		29: 1220000000,
		// 29th slot costs 1.22 billion
		30: 2220000000,
		// 30th slot costs 2.22 billion
		31: 4440000000,
		// 31st slot costs 4.44 billion
		32: 6660000000,
		// 32nd slot costs 6.66 billion
		33: 12500000000,
		// 33rd slot costs 12.5 billion
		34: 16600000000,
		// 34th slot costs 16.6 billion
		35: 22200000000,
		// 35th slot costs 22.2 billion
		36: 30000000000,
		// 36th slot costs 30 billion
		37: 36600000000,
		// 37th slot costs 36.6 billion
		38: 40000000000,
		// 38th slot costs 40 billion
		39: 50000000000,
		// 39th slot costs 50 billion
		40: 60000000000
		// 40th slot costs 60 billion
	};
	for (var row = 0; row < game.grid.rows; row++) {
		game.slots[row] = [];
		for (var col = 0; col < game.grid.cols; col++) {
			var slot = new GarageSlot(row, col);
			slot.x = game.garageX + col * game.slotSize;
			slot.y = game.garageY + row * game.slotSize;
			game.addChild(slot);
			game.slots[row][col] = slot;
			// Calculate the slot number (1-indexed)
			var slotNumber = row * game.grid.cols + col + 1;
			// If this slot is beyond the initially available slots
			if (slotNumber > game.availableSlots) {
				// Lock this slot
				slot.locked = true;
				slot.slotNumber = slotNumber;
				// Create price tag
				var price = game.slotPrices[slotNumber] || 100000;
				var formattedPrice;
				// Will use formatCoin if available during initialization
				if (typeof game.formatCoin === 'function') {
					formattedPrice = game.formatCoin(price);
				} else {
					if (price >= 1000000000) {
						formattedPrice = Math.floor(price / 1000000000) + "B";
					} else if (price >= 1000000) {
						formattedPrice = (price / 1000000).toFixed(1) + "m";
					} else if (price >= 1000) {
						formattedPrice = (price / 1000).toFixed(1) + "k";
					} else {
						formattedPrice = price.toString();
					}
				}
				var priceText = new Text2(formattedPrice, {
					size: 30,
					fill: 0xFFD700
				});
				priceText.anchor.set(0.5, 0.5);
				priceText.y = 30;
				slot.addChild(priceText);
				// Add coin icon
				var coinIcon = slot.attachAsset('coin', {
					anchorX: 0.5,
					anchorY: 0.5,
					x: -50,
					y: 30,
					scaleX: 0.6,
					scaleY: 0.6
				});
				// Add "tap to unlock" text
				var unlockText = new Text2("Tap to unlock", {
					size: 20,
					fill: 0xFFFFFF
				});
				unlockText.anchor.set(0.5, 0.5);
				unlockText.y = -20;
				slot.addChild(unlockText);
			}
		}
	}
};
// Create UI elements
game.initializeUI = function () {
	// Coins display
	var coinIcon = LK.getAsset('coin', {
		anchorX: 0.5,
		anchorY: 0.5,
		x: 50,
		y: 50
	});
	game.addChild(coinIcon);
	game.coinsText = new Text2(game.coins.toString(), {
		size: 45,
		fill: 0xFFD700
	});
	game.coinsText.anchor.set(0, 0.5);
	game.coinsText.x = 80;
	game.coinsText.y = 50;
	game.addChild(game.coinsText);
	// Game title
	var titleText = new Text2("Car Merge: Garage Tycoon", {
		size: 70,
		fill: 0xFFFFFF
	});
	titleText.anchor.set(0.5, 0);
	titleText.x = 2048 / 2;
	titleText.y = 50;
	game.addChild(titleText);
	// Highest car level display
	game.highestCarText = new Text2("Highest Car: Level " + game.highestCar, {
		size: 35,
		fill: 0xFFFFFF
	});
	game.highestCarText.anchor.set(1, 0.5);
	game.highestCarText.x = 2048 - 50;
	game.highestCarText.y = 50;
	game.addChild(game.highestCarText);
	// Buy button
	game.buyButton = new BuyButton(2);
	game.buyButton.x = 2048 / 2;
	game.buyButton.y = game.garageY + game.grid.rows * game.slotSize + 50;
	game.addChild(game.buyButton);
	// Instructions
	var instructionsText = new Text2("Drag matching cars together to merge them into higher level cars!", {
		size: 30,
		fill: 0xAAAAAA
	});
	instructionsText.anchor.set(0.5, 0);
	instructionsText.x = 2048 / 2;
	instructionsText.y = game.garageY - 100;
	game.addChild(instructionsText);
};
// Format coin amount
game.formatCoin = function (amount) {
	var formatted;
	if (amount >= 1000000000) {
		formatted = Math.floor(amount / 1000000000) + "B";
	} else if (amount >= 1000000) {
		formatted = (amount / 1000000).toFixed(1) + "m";
	} else if (amount >= 1000) {
		formatted = (amount / 1000).toFixed(1) + "k";
	} else {
		formatted = amount.toString();
	}
	return formatted;
};
// Update coins display
game.updateCoinsDisplay = function () {
	var formattedCoins = game.formatCoin(game.coins);
	game.coinsText.setText(formattedCoins);
};
// Update highest car display
game.updateHighestCarDisplay = function () {
	game.highestCarText.setText("Highest Car: Level " + game.highestCar);
};
// Find an empty slot
game.findEmptySlot = function () {
	for (var row = 0; row < game.grid.rows; row++) {
		for (var col = 0; col < game.grid.cols; col++) {
			var slot = game.slots[row][col];
			var slotNumber = row * game.grid.cols + col + 1;
			// Only consider unlocked slots
			if (!slot.locked && slot.isEmpty && slotNumber <= game.availableSlots) {
				return slot;
			}
		}
	}
	return null;
};
// Add a new car of specified level
game.addNewCar = function (level) {
	var emptySlot = game.findEmptySlot();
	if (!emptySlot) {
		// No empty slots, can't add a car
		return false;
	}
	var car = new Car(level);
	car.x = emptySlot.x;
	car.y = emptySlot.y;
	car.originalSlot = emptySlot;
	emptySlot.setCar(car);
	game.addChild(car);
	game.cars.push(car);
	return true;
};
// Move handler for drag operations
game.move = function (x, y, obj) {
	game.cars.forEach(function (car) {
		if (car.isDragging) {
			car.x = x;
			car.y = y;
		}
	});
};
// Check if a car can be merged with another
game.checkForMerge = function (draggedCar) {
	var foundMerge = false;
	// Find the closest slot to the car
	var closestSlot = null;
	var closestDistance = Number.MAX_VALUE;
	for (var row = 0; row < game.grid.rows; row++) {
		for (var col = 0; col < game.grid.cols; col++) {
			var slot = game.slots[row][col];
			// Skip locked slots
			if (slot.locked) {
				continue;
			}
			var distance = Math.sqrt(Math.pow(draggedCar.x - slot.x, 2) + Math.pow(draggedCar.y - slot.y, 2));
			if (distance < closestDistance) {
				closestDistance = distance;
				closestSlot = slot;
			}
		}
	}
	// If the closest slot has a car of the same level, merge them
	if (closestSlot && !closestSlot.isEmpty && closestSlot.currentCar !== draggedCar && closestSlot.currentCar.carLevel === draggedCar.carLevel) {
		// Perform the merge - level doubles when identical cars merge (1+1=2, 2+2=4, 4+4=8, etc.)
		var newLevel = draggedCar.carLevel + draggedCar.carLevel;
		var mergeTargetCar = closestSlot.currentCar;
		// Update the highest car level if needed
		if (newLevel > game.highestCar) {
			game.highestCar = newLevel;
			storage.highestCar = game.highestCar;
			game.updateHighestCarDisplay();
		}
		// Remove both cars
		closestSlot.removeCar();
		draggedCar.originalSlot.removeCar();
		// Add coins based on the new car level
		var reward = newLevel;
		game.coins += reward;
		// Show coin reward visual
		game.showCoinReward(closestSlot.x, closestSlot.y, reward);
		storage.coins = game.coins;
		game.updateCoinsDisplay();
		// Create the new car
		var newCar = new Car(newLevel);
		newCar.x = closestSlot.x;
		newCar.y = closestSlot.y;
		newCar.originalSlot = closestSlot;
		closestSlot.setCar(newCar);
		game.addChild(newCar);
		// Remove old cars from the array
		game.cars = game.cars.filter(function (car) {
			return car !== draggedCar && car !== mergeTargetCar;
		});
		// Add new car to the array
		game.cars.push(newCar);
		// Visual and audio feedback
		LK.effects.flashObject(newCar, 0xFFFFFF, 500);
		LK.getSound('merge').play();
		// Cleanup old car visuals
		draggedCar.destroy();
		mergeTargetCar.destroy();
		foundMerge = true;
	} else if (closestSlot && closestDistance < 100) {
		// If we're close to a slot but not merging, move to that slot
		if (closestSlot.isEmpty) {
			// Move to the empty slot
			if (draggedCar.originalSlot) {
				draggedCar.originalSlot.removeCar();
			}
			draggedCar.originalSlot = closestSlot;
			closestSlot.setCar(draggedCar);
			tween(draggedCar, {
				x: closestSlot.x,
				y: closestSlot.y
			}, {
				duration: 200
			});
		} else {
			// Slot occupied, return to original position
			tween(draggedCar, {
				x: draggedCar.originalPosition.x,
				y: draggedCar.originalPosition.y
			}, {
				duration: 200
			});
		}
	} else {
		// If not close to any slot, return to original position
		tween(draggedCar, {
			x: draggedCar.originalPosition.x,
			y: draggedCar.originalPosition.y
		}, {
			duration: 200
		});
	}
	return foundMerge;
};
// Bring a car to the front of the display list
game.bringCarToFront = function (car) {
	// Since we can't use swapChildren, we'll remove and re-add
	game.removeChild(car);
	game.addChild(car);
};
// Show floating coin reward
game.showCoinReward = function (x, y, amount) {
	// Create coin display
	var rewardContainer = new Container();
	rewardContainer.x = x;
	rewardContainer.y = y;
	// Add coin icon
	var coinIcon = rewardContainer.attachAsset('coin', {
		anchorX: 0.5,
		anchorY: 0.5,
		scaleX: 0.8,
		scaleY: 0.8
	});
	// Add reward text
	var formattedAmount = "+" + game.formatCoin(amount);
	var rewardText = new Text2(formattedAmount, {
		size: 40,
		fill: 0xFFD700
	});
	rewardText.anchor.set(0, 0.5);
	rewardText.x = 25;
	rewardContainer.addChild(rewardText);
	game.addChild(rewardContainer);
	// Animate the reward floating up and fading out
	tween(rewardContainer, {
		y: y - 100,
		alpha: 0
	}, {
		duration: 1500,
		onFinish: function onFinish() {
			rewardContainer.destroy();
		}
	});
};
// Initialize the game
game.initializeGarage();
game.initializeUI();
// Add initial cars - only 4 at the beginning
for (var i = 0; i < 4; i++) {
	game.addNewCar(1);
}
// No longer spawning cars automatically every 5 seconds
// Instead, cars will generate income every 5 seconds
// Game update function
game.update = function () {
	// Check if game is full
	var hasEmptySlot = game.findEmptySlot() !== null;
	game.buyButton.alpha = hasEmptySlot ? 1 : 0.5;
	// Check each car for income generation
	for (var i = 0; i < game.cars.length; i++) {
		game.cars[i].update();
	}
}; ===================================================================
--- original.js
+++ change.js
@@ -29,16 +29,21 @@
 		scaleY: 0.8
 	});
 	// Add price text
 	var formattedPrice;
-	if (self.price >= 1000000000) {
-		formattedPrice = (self.price / 1000000000).toFixed(1) + "B";
-	} else if (self.price >= 1000000) {
-		formattedPrice = (self.price / 1000000).toFixed(1) + "m";
-	} else if (self.price >= 1000) {
-		formattedPrice = (self.price / 1000).toFixed(1) + "k";
+	// Will use formatCoin after game is initialized
+	if (typeof game !== 'undefined' && game.formatCoin) {
+		formattedPrice = game.formatCoin(self.price);
 	} else {
-		formattedPrice = self.price.toString();
+		if (self.price >= 1000000000) {
+			formattedPrice = Math.floor(self.price / 1000000000) + "B";
+		} else if (self.price >= 1000000) {
+			formattedPrice = (self.price / 1000000).toFixed(1) + "m";
+		} else if (self.price >= 1000) {
+			formattedPrice = (self.price / 1000).toFixed(1) + "k";
+		} else {
+			formattedPrice = self.price.toString();
+		}
 	}
 	self.priceText = new Text2(formattedPrice, {
 		size: 35,
 		fill: 0xFFFFFF
@@ -83,24 +88,15 @@
 			game.updateCoinsDisplay();
 			// Add car with level 1 instead of current car level
 			game.addNewCar(1);
 			LK.getSound('buy').play();
-			// Increase car level and double price for next car
-			self.price = self.price * 2;
+			// Increase car level and increase price by 1.2 times for next car
+			self.price = Math.round(self.price * 1.2);
 			if (self.price >= 80) {
 				self.carLevel *= 2;
 				self.levelText.setText("Level " + self.carLevel);
 			}
-			var formattedPrice;
-			if (self.price >= 1000000000) {
-				formattedPrice = (self.price / 1000000000).toFixed(1) + "B";
-			} else if (self.price >= 1000000) {
-				formattedPrice = (self.price / 1000000).toFixed(1) + "m";
-			} else if (self.price >= 1000) {
-				formattedPrice = (self.price / 1000).toFixed(1) + "k";
-			} else {
-				formattedPrice = self.price.toString();
-			}
+			var formattedPrice = game.formatCoin(self.price);
 			self.priceText.setText(formattedPrice);
 		} else {
 			// Visual feedback for not enough coins
 			tween(self, {
@@ -453,16 +449,21 @@
 				slot.slotNumber = slotNumber;
 				// Create price tag
 				var price = game.slotPrices[slotNumber] || 100000;
 				var formattedPrice;
-				if (price >= 1000000000) {
-					formattedPrice = (price / 1000000000).toFixed(1) + "B";
-				} else if (price >= 1000000) {
-					formattedPrice = (price / 1000000).toFixed(1) + "m";
-				} else if (price >= 1000) {
-					formattedPrice = (price / 1000).toFixed(1) + "k";
+				// Will use formatCoin if available during initialization
+				if (typeof game.formatCoin === 'function') {
+					formattedPrice = game.formatCoin(price);
 				} else {
-					formattedPrice = price.toString();
+					if (price >= 1000000000) {
+						formattedPrice = Math.floor(price / 1000000000) + "B";
+					} else if (price >= 1000000) {
+						formattedPrice = (price / 1000000).toFixed(1) + "m";
+					} else if (price >= 1000) {
+						formattedPrice = (price / 1000).toFixed(1) + "k";
+					} else {
+						formattedPrice = price.toString();
+					}
 				}
 				var priceText = new Text2(formattedPrice, {
 					size: 30,
 					fill: 0xFFD700
@@ -541,20 +542,25 @@
 	instructionsText.x = 2048 / 2;
 	instructionsText.y = game.garageY - 100;
 	game.addChild(instructionsText);
 };
-// Update coins display
-game.updateCoinsDisplay = function () {
-	var formattedCoins;
-	if (game.coins >= 1000000000) {
-		formattedCoins = (game.coins / 1000000000).toFixed(1) + "B";
-	} else if (game.coins >= 1000000) {
-		formattedCoins = (game.coins / 1000000).toFixed(1) + "m";
-	} else if (game.coins >= 1000) {
-		formattedCoins = (game.coins / 1000).toFixed(1) + "k";
+// Format coin amount
+game.formatCoin = function (amount) {
+	var formatted;
+	if (amount >= 1000000000) {
+		formatted = Math.floor(amount / 1000000000) + "B";
+	} else if (amount >= 1000000) {
+		formatted = (amount / 1000000).toFixed(1) + "m";
+	} else if (amount >= 1000) {
+		formatted = (amount / 1000).toFixed(1) + "k";
 	} else {
-		formattedCoins = game.coins.toString();
+		formatted = amount.toString();
 	}
+	return formatted;
+};
+// Update coins display
+game.updateCoinsDisplay = function () {
+	var formattedCoins = game.formatCoin(game.coins);
 	game.coinsText.setText(formattedCoins);
 };
 // Update highest car display
 game.updateHighestCarDisplay = function () {
@@ -714,18 +720,9 @@
 		scaleX: 0.8,
 		scaleY: 0.8
 	});
 	// Add reward text
-	var formattedAmount;
-	if (amount >= 1000000000) {
-		formattedAmount = "+" + (amount / 1000000000).toFixed(1) + "B";
-	} else if (amount >= 1000000) {
-		formattedAmount = "+" + (amount / 1000000).toFixed(1) + "m";
-	} else if (amount >= 1000) {
-		formattedAmount = "+" + (amount / 1000).toFixed(1) + "k";
-	} else {
-		formattedAmount = "+" + amount;
-	}
+	var formattedAmount = "+" + game.formatCoin(amount);
 	var rewardText = new Text2(formattedAmount, {
 		size: 40,
 		fill: 0xFFD700
 	});