User prompt
oyuna 20 bölüm ekleyip hepsini birbirinden zor yap
User prompt
Please fix the bug: 'TypeError: setTimeout is not a function' in or related to this line: 'setTimeout(function () {' Line Number: 225
Code edit (1 edits merged)
Please save this source code
User prompt
Frog Road Cross
Initial prompt
kurbağayı karşıdan karşıya geçir me oyunu yapar mısın
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ var Frog = Container.expand(function () { var self = Container.call(this); var frogGraphics = self.attachAsset('frog', { anchorX: 0.5, anchorY: 0.5 }); self.gridSize = 120; self.isMoving = false; self.targetX = 0; self.targetY = 0; self.moveTo = function (newX, newY) { if (self.isMoving) return; // Constrain movement to game boundaries newX = Math.max(40, Math.min(2008, newX)); newY = Math.max(60, Math.min(2672, newY)); self.targetX = newX; self.targetY = newY; self.isMoving = true; LK.getSound('move').play(); tween(self, { x: self.targetX, y: self.targetY }, { duration: 150, easing: tween.easeOut, onFinish: function onFinish() { self.isMoving = false; } }); }; return self; }); var Vehicle = Container.expand(function (type, speed) { var self = Container.call(this); var vehicleGraphics = self.attachAsset(type, { anchorX: 0.5, anchorY: 0.5 }); self.speed = speed || 3; self.type = type; self.update = function () { self.x += self.speed; // Reset position when off screen if (self.speed > 0 && self.x > 2200) { self.x = -200; } else if (self.speed < 0 && self.x < -200) { self.x = 2200; } }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x228B22 }); /**** * Game Code ****/ var GRID_SIZE = 120; var NUM_LANES = 8; var LANE_HEIGHT = 120; // Game state var frog = null; var vehicles = []; var roads = []; var safeZones = []; var gameStarted = false; var currentLevel = 1; var maxLevel = 20; var crossingsThisLevel = 0; var crossingsNeededPerLevel = 3; // Level configuration with increasing difficulty var levelConfigs = [ // Levels 1-5: Beginner { vehicleCount: 2, baseSpeed: 2, speedVariation: 0.5, vehicleTypes: ['car'] }, { vehicleCount: 2, baseSpeed: 2.5, speedVariation: 0.7, vehicleTypes: ['car'] }, { vehicleCount: 3, baseSpeed: 2.8, speedVariation: 0.8, vehicleTypes: ['car'] }, { vehicleCount: 3, baseSpeed: 3, speedVariation: 1, vehicleTypes: ['car', 'truck'] }, { vehicleCount: 3, baseSpeed: 3.2, speedVariation: 1.2, vehicleTypes: ['car', 'truck'] }, // Levels 6-10: Intermediate { vehicleCount: 4, baseSpeed: 3.5, speedVariation: 1.3, vehicleTypes: ['car', 'truck'] }, { vehicleCount: 4, baseSpeed: 3.8, speedVariation: 1.5, vehicleTypes: ['car', 'truck'] }, { vehicleCount: 4, baseSpeed: 4, speedVariation: 1.7, vehicleTypes: ['car', 'truck'] }, { vehicleCount: 5, baseSpeed: 4.2, speedVariation: 1.8, vehicleTypes: ['car', 'truck'] }, { vehicleCount: 5, baseSpeed: 4.5, speedVariation: 2, vehicleTypes: ['car', 'truck'] }, // Levels 11-15: Advanced { vehicleCount: 5, baseSpeed: 4.8, speedVariation: 2.2, vehicleTypes: ['car', 'truck'] }, { vehicleCount: 6, baseSpeed: 5, speedVariation: 2.5, vehicleTypes: ['car', 'truck'] }, { vehicleCount: 6, baseSpeed: 5.3, speedVariation: 2.7, vehicleTypes: ['car', 'truck'] }, { vehicleCount: 6, baseSpeed: 5.5, speedVariation: 3, vehicleTypes: ['car', 'truck'] }, { vehicleCount: 7, baseSpeed: 5.8, speedVariation: 3.2, vehicleTypes: ['car', 'truck'] }, // Levels 16-20: Expert { vehicleCount: 7, baseSpeed: 6, speedVariation: 3.5, vehicleTypes: ['car', 'truck'] }, { vehicleCount: 8, baseSpeed: 6.3, speedVariation: 3.7, vehicleTypes: ['car', 'truck'] }, { vehicleCount: 8, baseSpeed: 6.5, speedVariation: 4, vehicleTypes: ['car', 'truck'] }, { vehicleCount: 9, baseSpeed: 6.8, speedVariation: 4.2, vehicleTypes: ['car', 'truck'] }, { vehicleCount: 10, baseSpeed: 7, speedVariation: 4.5, vehicleTypes: ['car', 'truck'] }]; // Create score display var scoreTxt = new Text2('Score: 0', { size: 60, fill: 0xFFFFFF }); scoreTxt.anchor.set(0.5, 0); LK.gui.top.addChild(scoreTxt); // Create level display var levelTxt = new Text2('Level: 1 (0/3)', { size: 50, fill: 0xFFFFFF }); levelTxt.anchor.set(1, 0); levelTxt.y = 80; LK.gui.topRight.addChild(levelTxt); // Create progress display var progressTxt = new Text2('Progress: Level 1 of 20', { size: 40, fill: 0xFFFFFF }); progressTxt.anchor.set(0.5, 0); progressTxt.y = 140; LK.gui.top.addChild(progressTxt); // Initialize game elements function initializeGame() { // Clear existing elements vehicles = []; roads = []; safeZones = []; // Create safe zones and roads for (var i = 0; i < NUM_LANES + 2; i++) { var yPos = i * LANE_HEIGHT + 60; if (i === 0 || i === NUM_LANES + 1) { // Safe zones at top and bottom var safeZone = game.addChild(LK.getAsset('safeZone', { x: 1024, y: yPos, anchorX: 0.5, anchorY: 0.5 })); safeZones.push(safeZone); } else { // Road lanes var road = game.addChild(LK.getAsset('road', { x: 1024, y: yPos, anchorX: 0.5, anchorY: 0.5 })); roads.push(road); } } // Get current level configuration var config = levelConfigs[currentLevel - 1] || levelConfigs[levelConfigs.length - 1]; // Create vehicles for each road lane for (var i = 0; i < NUM_LANES; i++) { var laneY = (i + 1) * LANE_HEIGHT + 60; var vehicleCount = config.vehicleCount; var direction = i % 2 === 0 ? 1 : -1; var baseSpeed = config.baseSpeed * direction; // Different lanes can have different densities for variety if (currentLevel > 10) { // In advanced levels, some lanes are extra packed if (i === 2 || i === 5) vehicleCount += 1; } if (currentLevel > 15) { // In expert levels, add even more variety if (i === 1 || i === 4 || i === 7) vehicleCount += 1; } for (var j = 0; j < vehicleCount; j++) { // Choose vehicle type based on level config var vehicleType; if (config.vehicleTypes.length === 1) { vehicleType = config.vehicleTypes[0]; } else { // Trucks become more common in higher levels var truckChance = currentLevel > 10 ? 0.4 : 0.3; vehicleType = Math.random() < truckChance ? 'truck' : 'car'; } var speedVariation = Math.random() * config.speedVariation * 2 - config.speedVariation; var vehicle = new Vehicle(vehicleType, baseSpeed + speedVariation); // Spread vehicles across the lane with some randomness var spacing = 2048 / vehicleCount; vehicle.x = j * spacing + Math.random() * (spacing * 0.3); vehicle.y = laneY; vehicles.push(vehicle); game.addChild(vehicle); } } // Create frog frog = new Frog(); frog.x = 1024; frog.y = (NUM_LANES + 1) * LANE_HEIGHT + 60; // Start at bottom safe zone game.addChild(frog); gameStarted = true; } // Handle input game.down = function (x, y, obj) { if (!gameStarted || frog.isMoving) return; var frogGridX = Math.round(frog.x / GRID_SIZE); var frogGridY = Math.round(frog.y / LANE_HEIGHT); var touchGridX = Math.round(x / GRID_SIZE); var touchGridY = Math.round(y / LANE_HEIGHT); var deltaX = touchGridX - frogGridX; var deltaY = touchGridY - frogGridY; // Determine movement direction var newX = frog.x; var newY = frog.y; if (Math.abs(deltaX) > Math.abs(deltaY)) { // Horizontal movement if (deltaX > 0) { newX = frog.x + GRID_SIZE; } else { newX = frog.x - GRID_SIZE; } } else { // Vertical movement if (deltaY < 0) { newY = frog.y - LANE_HEIGHT; } else { newY = frog.y + LANE_HEIGHT; } } frog.moveTo(newX, newY); }; // Check collisions and game state function checkCollisions() { if (!frog || frog.isMoving) return; // Check vehicle collisions for (var i = 0; i < vehicles.length; i++) { var vehicle = vehicles[i]; if (frog.intersects(vehicle)) { // Game over LK.getSound('crash').play(); LK.effects.flashScreen(0xFF0000, 1000); LK.showGameOver(); return; } } // Check if frog reached top safe zone if (frog.y <= 180) { // Success! crossingsThisLevel++; var levelBonus = currentLevel * 50; var scoreIncrease = 100 + levelBonus; LK.setScore(LK.getScore() + scoreIncrease); scoreTxt.setText('Score: ' + LK.getScore()); LK.getSound('success').play(); // Check if level is complete if (crossingsThisLevel >= crossingsNeededPerLevel) { if (currentLevel >= maxLevel) { // Player completed all 20 levels! LK.effects.flashScreen(0xFFD700, 2000); LK.showYouWin(); return; } else { // Advance to next level currentLevel++; crossingsThisLevel = 0; levelTxt.setText('Level: ' + currentLevel + ' (0/' + crossingsNeededPerLevel + ')'); progressTxt.setText('Progress: Level ' + currentLevel + ' of 20'); // Show level up notification LK.effects.flashScreen(0x00FFFF, 1000); } } else { // Update progress within current level levelTxt.setText('Level: ' + currentLevel + ' (' + crossingsThisLevel + '/' + crossingsNeededPerLevel + ')'); } // Reset frog position frog.x = 1024; frog.y = (NUM_LANES + 1) * LANE_HEIGHT + 60; // Flash green for success LK.effects.flashObject(frog, 0x00FF00, 500); // Reinitialize with updated difficulty LK.setTimeout(function () { // Clear old vehicles for (var i = 0; i < vehicles.length; i++) { vehicles[i].destroy(); } initializeGame(); }, 500); } } // Main game loop game.update = function () { if (!gameStarted) return; // Update vehicles for (var i = 0; i < vehicles.length; i++) { vehicles[i].update(); } checkCollisions(); }; // Initialize the game initializeGame();
/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
/****
* Classes
****/
var Frog = Container.expand(function () {
var self = Container.call(this);
var frogGraphics = self.attachAsset('frog', {
anchorX: 0.5,
anchorY: 0.5
});
self.gridSize = 120;
self.isMoving = false;
self.targetX = 0;
self.targetY = 0;
self.moveTo = function (newX, newY) {
if (self.isMoving) return;
// Constrain movement to game boundaries
newX = Math.max(40, Math.min(2008, newX));
newY = Math.max(60, Math.min(2672, newY));
self.targetX = newX;
self.targetY = newY;
self.isMoving = true;
LK.getSound('move').play();
tween(self, {
x: self.targetX,
y: self.targetY
}, {
duration: 150,
easing: tween.easeOut,
onFinish: function onFinish() {
self.isMoving = false;
}
});
};
return self;
});
var Vehicle = Container.expand(function (type, speed) {
var self = Container.call(this);
var vehicleGraphics = self.attachAsset(type, {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = speed || 3;
self.type = type;
self.update = function () {
self.x += self.speed;
// Reset position when off screen
if (self.speed > 0 && self.x > 2200) {
self.x = -200;
} else if (self.speed < 0 && self.x < -200) {
self.x = 2200;
}
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x228B22
});
/****
* Game Code
****/
var GRID_SIZE = 120;
var NUM_LANES = 8;
var LANE_HEIGHT = 120;
// Game state
var frog = null;
var vehicles = [];
var roads = [];
var safeZones = [];
var gameStarted = false;
var currentLevel = 1;
var maxLevel = 20;
var crossingsThisLevel = 0;
var crossingsNeededPerLevel = 3;
// Level configuration with increasing difficulty
var levelConfigs = [
// Levels 1-5: Beginner
{
vehicleCount: 2,
baseSpeed: 2,
speedVariation: 0.5,
vehicleTypes: ['car']
}, {
vehicleCount: 2,
baseSpeed: 2.5,
speedVariation: 0.7,
vehicleTypes: ['car']
}, {
vehicleCount: 3,
baseSpeed: 2.8,
speedVariation: 0.8,
vehicleTypes: ['car']
}, {
vehicleCount: 3,
baseSpeed: 3,
speedVariation: 1,
vehicleTypes: ['car', 'truck']
}, {
vehicleCount: 3,
baseSpeed: 3.2,
speedVariation: 1.2,
vehicleTypes: ['car', 'truck']
},
// Levels 6-10: Intermediate
{
vehicleCount: 4,
baseSpeed: 3.5,
speedVariation: 1.3,
vehicleTypes: ['car', 'truck']
}, {
vehicleCount: 4,
baseSpeed: 3.8,
speedVariation: 1.5,
vehicleTypes: ['car', 'truck']
}, {
vehicleCount: 4,
baseSpeed: 4,
speedVariation: 1.7,
vehicleTypes: ['car', 'truck']
}, {
vehicleCount: 5,
baseSpeed: 4.2,
speedVariation: 1.8,
vehicleTypes: ['car', 'truck']
}, {
vehicleCount: 5,
baseSpeed: 4.5,
speedVariation: 2,
vehicleTypes: ['car', 'truck']
},
// Levels 11-15: Advanced
{
vehicleCount: 5,
baseSpeed: 4.8,
speedVariation: 2.2,
vehicleTypes: ['car', 'truck']
}, {
vehicleCount: 6,
baseSpeed: 5,
speedVariation: 2.5,
vehicleTypes: ['car', 'truck']
}, {
vehicleCount: 6,
baseSpeed: 5.3,
speedVariation: 2.7,
vehicleTypes: ['car', 'truck']
}, {
vehicleCount: 6,
baseSpeed: 5.5,
speedVariation: 3,
vehicleTypes: ['car', 'truck']
}, {
vehicleCount: 7,
baseSpeed: 5.8,
speedVariation: 3.2,
vehicleTypes: ['car', 'truck']
},
// Levels 16-20: Expert
{
vehicleCount: 7,
baseSpeed: 6,
speedVariation: 3.5,
vehicleTypes: ['car', 'truck']
}, {
vehicleCount: 8,
baseSpeed: 6.3,
speedVariation: 3.7,
vehicleTypes: ['car', 'truck']
}, {
vehicleCount: 8,
baseSpeed: 6.5,
speedVariation: 4,
vehicleTypes: ['car', 'truck']
}, {
vehicleCount: 9,
baseSpeed: 6.8,
speedVariation: 4.2,
vehicleTypes: ['car', 'truck']
}, {
vehicleCount: 10,
baseSpeed: 7,
speedVariation: 4.5,
vehicleTypes: ['car', 'truck']
}];
// Create score display
var scoreTxt = new Text2('Score: 0', {
size: 60,
fill: 0xFFFFFF
});
scoreTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreTxt);
// Create level display
var levelTxt = new Text2('Level: 1 (0/3)', {
size: 50,
fill: 0xFFFFFF
});
levelTxt.anchor.set(1, 0);
levelTxt.y = 80;
LK.gui.topRight.addChild(levelTxt);
// Create progress display
var progressTxt = new Text2('Progress: Level 1 of 20', {
size: 40,
fill: 0xFFFFFF
});
progressTxt.anchor.set(0.5, 0);
progressTxt.y = 140;
LK.gui.top.addChild(progressTxt);
// Initialize game elements
function initializeGame() {
// Clear existing elements
vehicles = [];
roads = [];
safeZones = [];
// Create safe zones and roads
for (var i = 0; i < NUM_LANES + 2; i++) {
var yPos = i * LANE_HEIGHT + 60;
if (i === 0 || i === NUM_LANES + 1) {
// Safe zones at top and bottom
var safeZone = game.addChild(LK.getAsset('safeZone', {
x: 1024,
y: yPos,
anchorX: 0.5,
anchorY: 0.5
}));
safeZones.push(safeZone);
} else {
// Road lanes
var road = game.addChild(LK.getAsset('road', {
x: 1024,
y: yPos,
anchorX: 0.5,
anchorY: 0.5
}));
roads.push(road);
}
}
// Get current level configuration
var config = levelConfigs[currentLevel - 1] || levelConfigs[levelConfigs.length - 1];
// Create vehicles for each road lane
for (var i = 0; i < NUM_LANES; i++) {
var laneY = (i + 1) * LANE_HEIGHT + 60;
var vehicleCount = config.vehicleCount;
var direction = i % 2 === 0 ? 1 : -1;
var baseSpeed = config.baseSpeed * direction;
// Different lanes can have different densities for variety
if (currentLevel > 10) {
// In advanced levels, some lanes are extra packed
if (i === 2 || i === 5) vehicleCount += 1;
}
if (currentLevel > 15) {
// In expert levels, add even more variety
if (i === 1 || i === 4 || i === 7) vehicleCount += 1;
}
for (var j = 0; j < vehicleCount; j++) {
// Choose vehicle type based on level config
var vehicleType;
if (config.vehicleTypes.length === 1) {
vehicleType = config.vehicleTypes[0];
} else {
// Trucks become more common in higher levels
var truckChance = currentLevel > 10 ? 0.4 : 0.3;
vehicleType = Math.random() < truckChance ? 'truck' : 'car';
}
var speedVariation = Math.random() * config.speedVariation * 2 - config.speedVariation;
var vehicle = new Vehicle(vehicleType, baseSpeed + speedVariation);
// Spread vehicles across the lane with some randomness
var spacing = 2048 / vehicleCount;
vehicle.x = j * spacing + Math.random() * (spacing * 0.3);
vehicle.y = laneY;
vehicles.push(vehicle);
game.addChild(vehicle);
}
}
// Create frog
frog = new Frog();
frog.x = 1024;
frog.y = (NUM_LANES + 1) * LANE_HEIGHT + 60; // Start at bottom safe zone
game.addChild(frog);
gameStarted = true;
}
// Handle input
game.down = function (x, y, obj) {
if (!gameStarted || frog.isMoving) return;
var frogGridX = Math.round(frog.x / GRID_SIZE);
var frogGridY = Math.round(frog.y / LANE_HEIGHT);
var touchGridX = Math.round(x / GRID_SIZE);
var touchGridY = Math.round(y / LANE_HEIGHT);
var deltaX = touchGridX - frogGridX;
var deltaY = touchGridY - frogGridY;
// Determine movement direction
var newX = frog.x;
var newY = frog.y;
if (Math.abs(deltaX) > Math.abs(deltaY)) {
// Horizontal movement
if (deltaX > 0) {
newX = frog.x + GRID_SIZE;
} else {
newX = frog.x - GRID_SIZE;
}
} else {
// Vertical movement
if (deltaY < 0) {
newY = frog.y - LANE_HEIGHT;
} else {
newY = frog.y + LANE_HEIGHT;
}
}
frog.moveTo(newX, newY);
};
// Check collisions and game state
function checkCollisions() {
if (!frog || frog.isMoving) return;
// Check vehicle collisions
for (var i = 0; i < vehicles.length; i++) {
var vehicle = vehicles[i];
if (frog.intersects(vehicle)) {
// Game over
LK.getSound('crash').play();
LK.effects.flashScreen(0xFF0000, 1000);
LK.showGameOver();
return;
}
}
// Check if frog reached top safe zone
if (frog.y <= 180) {
// Success!
crossingsThisLevel++;
var levelBonus = currentLevel * 50;
var scoreIncrease = 100 + levelBonus;
LK.setScore(LK.getScore() + scoreIncrease);
scoreTxt.setText('Score: ' + LK.getScore());
LK.getSound('success').play();
// Check if level is complete
if (crossingsThisLevel >= crossingsNeededPerLevel) {
if (currentLevel >= maxLevel) {
// Player completed all 20 levels!
LK.effects.flashScreen(0xFFD700, 2000);
LK.showYouWin();
return;
} else {
// Advance to next level
currentLevel++;
crossingsThisLevel = 0;
levelTxt.setText('Level: ' + currentLevel + ' (0/' + crossingsNeededPerLevel + ')');
progressTxt.setText('Progress: Level ' + currentLevel + ' of 20');
// Show level up notification
LK.effects.flashScreen(0x00FFFF, 1000);
}
} else {
// Update progress within current level
levelTxt.setText('Level: ' + currentLevel + ' (' + crossingsThisLevel + '/' + crossingsNeededPerLevel + ')');
}
// Reset frog position
frog.x = 1024;
frog.y = (NUM_LANES + 1) * LANE_HEIGHT + 60;
// Flash green for success
LK.effects.flashObject(frog, 0x00FF00, 500);
// Reinitialize with updated difficulty
LK.setTimeout(function () {
// Clear old vehicles
for (var i = 0; i < vehicles.length; i++) {
vehicles[i].destroy();
}
initializeGame();
}, 500);
}
}
// Main game loop
game.update = function () {
if (!gameStarted) return;
// Update vehicles
for (var i = 0; i < vehicles.length; i++) {
vehicles[i].update();
}
checkCollisions();
};
// Initialize the game
initializeGame();