User prompt
oyuna müzik sesi ekle
User prompt
skor 5 ve katları olarak artıkça düşmanların hızı da %10 artsın
User prompt
skor 10 ve katları olarak artıkça düşmanların hızı da %5 artsın
User prompt
backgraund2 sabit kalsın backgraund assetini çoğalt ve hareket etsin
User prompt
backgraund2 sabit kalsın backgraund assetini kopyala ve hareket etsin
User prompt
sadece backgraund asseti hareket etsin ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Please save this source code
User prompt
sadece backgraun asseti kopyala ve yavaşça hareket etsin ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
backgranun du aynala ve hareket etsin
User prompt
backgraund2 yi ekranın altına taşı
Code edit (2 edits merged)
Please save this source code
User prompt
bir başka backgraund asseti ekle ve y ekseninin akt yarısını kaplasın
User prompt
2 bir backgran ekle ve y eksenini alt yarını kaplasın
User prompt
bakcgraun asseti y ekseninin yarısını kaplasın
Code edit (1 edits merged)
Please save this source code
User prompt
backgraundu y eksenin ortasından böl ve asset ekle
User prompt
+1 yazısını büyüt ve renkleri rastgele olsun
User prompt
karakter düşmanları geçtikten sonra +1 olarak üzerinde yazı cıksın
User prompt
if (player.intersects(enemies[j])) { LK.effects.flashScreen(0xff0000, 1000); var randomMessage = getRandomMessage(gameOverMessages); LK.showGameOver(randomMessage); }
User prompt
graund asseti ni y eksenini sonuna kadar uzat
User prompt
karkaterin başlangıç pozisyonunun altıdan başlayan bir asset ekle
User prompt
çoğaltılan arkaplanı kaldır ve hareketi durdur
User prompt
karakterin ve düşmanları y ekseninde %3 aşağı taşı
User prompt
karakterin ve düşmanları y ekseninde %20 aşağı taşı
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ // Define a class for enemies var Enemy = Container.expand(function () { var self = Container.call(this); var enemyGraphics = self.attachAsset('enemy', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 5; self.update = function () { self.x -= self.speed; if (self.x < -50) { self.destroy(); } }; }); // Define a class for flying enemies var FlyingEnemy = Container.expand(function () { var self = Container.call(this); var enemyGraphics = self.attachAsset('flyingEnemy', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 7; self.amplitude = 100; self.frequency = 0.03; self.initialY = 0; self.angle = Math.random() * Math.PI * 2; self.passed = false; self.update = function () { self.x -= self.speed; self.y = self.initialY + Math.sin(self.angle) * self.amplitude; self.angle += self.frequency; if (self.x < -100) { self.destroy(); } }; return self; }); // Define a class for plant enemies var PlantEnemy = Container.expand(function () { var self = Container.call(this); var enemyGraphics = self.attachAsset('plantEnemy', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 4; self.passed = false; self.canJump = true; self.jumpInterval = Math.floor(Math.random() * 100) + 50; self.jumpCounter = 0; self.velocityY = 0; self.isJumping = false; self.update = function () { self.x -= self.speed; // Jump logic self.jumpCounter++; if (self.jumpCounter >= self.jumpInterval && self.canJump && !self.isJumping) { self.isJumping = true; self.velocityY = -15; self.jumpCounter = 0; } if (self.isJumping) { self.y += self.velocityY; self.velocityY += 0.6; if (self.y >= 2732 / 2 * 1.664) { self.y = 2732 / 2 * 1.664; self.isJumping = false; self.velocityY = 0; } } if (self.x < -100) { self.destroy(); } }; return self; }); //<Assets used in the game will automatically appear here> // Define a class for the player character var Player = Container.expand(function () { var self = Container.call(this); var playerGraphics = self.attachAsset('player', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 5; self.jumpHeight = 25; self.isJumping = false; self.velocityY = 0; self.update = function () { if (self.isJumping) { self.y += self.velocityY; self.velocityY += 0.3; // Decreased gravity effect by 30% if (self.y >= 2732 / 2 * 1.664) { // Ground level self.y = 2732 / 2 * 1.664; self.isJumping = false; self.velocityY = 0; } } }; self.jump = function () { if (!self.isJumping) { self.isJumping = true; self.velocityY = -self.jumpHeight; } }; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x87CEEB // Sky blue background }); /**** * Game Code ****/ // Create multiple backgrounds for seamless scrolling var backgrounds = []; // Create two background instances to create infinite scrolling effect for (var i = 0; i < 2; i++) { var background = game.addChild(LK.getAsset('background', { anchorX: 0, anchorY: 0 })); background.x = i * 2048; // Position backgrounds side by side background.y = 0; backgrounds.push(background); } // Initialize player var player = game.addChild(new Player()); player.x = 2048 / 2; player.y = 2732 / 2 * 1.664; // Move down by 66.4% (46.4% + 20%) // Initialize enemies var enemies = []; var enemySpawnInterval = 100; var enemySpawnCounter = 0; var lastEnemyType = -1; // Track the last enemy type that was spawned var sameTypeCount = 0; // Counter for consecutive same-type enemies var canSpawn = true; // Flag to control enemy spawning // Create a new Text2 object to display the score var scoreText = new Text2('0', { size: 100, fill: 0xFFFFFF }); // Add the score text to the game GUI at the top center of the screen LK.gui.top.addChild(scoreText); scoreText.x = 2048 / 2; scoreText.y = 0; // Handle game updates game.update = function () { player.update(); // Update background positions for scrolling effect for (var i = 0; i < backgrounds.length; i++) { // Move backgrounds to the left backgrounds[i].x -= 3; // Slower than enemies for parallax effect // When a background moves completely off screen to the left, move it to the right if (backgrounds[i].x <= -2048) { backgrounds[i].x = 2048; } } // Spawn enemies enemySpawnCounter++; if (enemySpawnCounter >= enemySpawnInterval && canSpawn) { // Check if any enemies are at the screen edge (about to enter) var enemiesEnteringScreen = false; for (var i = 0; i < enemies.length; i++) { if (enemies[i].x >= 2048 - 300) { // Buffer zone at screen edge enemiesEnteringScreen = true; break; } } if (!enemiesEnteringScreen) { // Randomly choose enemy type var enemyType = Math.floor(Math.random() * 3); // Check if we need to avoid the same enemy type if (enemyType === lastEnemyType) { sameTypeCount++; // If we already have 2 of the same type, choose a different type if (sameTypeCount >= 2) { do { enemyType = Math.floor(Math.random() * 3); } while (enemyType === lastEnemyType); sameTypeCount = 0; } } else { sameTypeCount = 0; } var enemy; if (enemyType === 0) { enemy = new Enemy(); enemy.x = 2048; enemy.y = 2732 / 2 * 1.664; // Move down by 66.4% (46.4% + 20%) } else if (enemyType === 1) { enemy = new FlyingEnemy(); enemy.x = 2048; enemy.y = 2732 / 3 * 1.664; // Flying enemy starts higher, moved down by 66.4% (46.4% + 20%) enemy.initialY = enemy.y; } else { enemy = new PlantEnemy(); enemy.x = 2048; enemy.y = 2732 / 2 * 1.664; // Move down by 66.4% (46.4% + 20%) } // Save the current enemy type as the last one lastEnemyType = enemyType; enemy.passedMiddle = false; // Initialize the middle crossing property enemies.push(enemy); game.addChild(enemy); // Randomize the spawn interval for the next enemy enemySpawnInterval = Math.floor(Math.random() * 150) + 50; enemySpawnCounter = 0; // Prevent new enemies from spawning until current one crosses the middle canSpawn = false; } } // Update enemies for (var j = enemies.length - 1; j >= 0; j--) { enemies[j].update(); // Check if enemy has just crossed the middle of the screen if (enemies[j].x < 2048 / 2 && !enemies[j].passedMiddle) { enemies[j].passedMiddle = true; // Allow new enemy to spawn when current enemy passes the middle canSpawn = true; } if (player.intersects(enemies[j])) { LK.effects.flashScreen(0xff0000, 1000); LK.showGameOver(); } else if (player.x > enemies[j].x && !enemies[j].passed) { enemies[j].passed = true; LK.setScore(LK.getScore() + 1); scoreText.setText(LK.getScore()); } } }; // Handle player jump game.down = function (x, y, obj) { player.jump(); }; // Import tween plugin for animations
/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
/****
* Classes
****/
// Define a class for enemies
var Enemy = Container.expand(function () {
var self = Container.call(this);
var enemyGraphics = self.attachAsset('enemy', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 5;
self.update = function () {
self.x -= self.speed;
if (self.x < -50) {
self.destroy();
}
};
});
// Define a class for flying enemies
var FlyingEnemy = Container.expand(function () {
var self = Container.call(this);
var enemyGraphics = self.attachAsset('flyingEnemy', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 7;
self.amplitude = 100;
self.frequency = 0.03;
self.initialY = 0;
self.angle = Math.random() * Math.PI * 2;
self.passed = false;
self.update = function () {
self.x -= self.speed;
self.y = self.initialY + Math.sin(self.angle) * self.amplitude;
self.angle += self.frequency;
if (self.x < -100) {
self.destroy();
}
};
return self;
});
// Define a class for plant enemies
var PlantEnemy = Container.expand(function () {
var self = Container.call(this);
var enemyGraphics = self.attachAsset('plantEnemy', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 4;
self.passed = false;
self.canJump = true;
self.jumpInterval = Math.floor(Math.random() * 100) + 50;
self.jumpCounter = 0;
self.velocityY = 0;
self.isJumping = false;
self.update = function () {
self.x -= self.speed;
// Jump logic
self.jumpCounter++;
if (self.jumpCounter >= self.jumpInterval && self.canJump && !self.isJumping) {
self.isJumping = true;
self.velocityY = -15;
self.jumpCounter = 0;
}
if (self.isJumping) {
self.y += self.velocityY;
self.velocityY += 0.6;
if (self.y >= 2732 / 2 * 1.664) {
self.y = 2732 / 2 * 1.664;
self.isJumping = false;
self.velocityY = 0;
}
}
if (self.x < -100) {
self.destroy();
}
};
return self;
});
//<Assets used in the game will automatically appear here>
// Define a class for the player character
var Player = Container.expand(function () {
var self = Container.call(this);
var playerGraphics = self.attachAsset('player', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 5;
self.jumpHeight = 25;
self.isJumping = false;
self.velocityY = 0;
self.update = function () {
if (self.isJumping) {
self.y += self.velocityY;
self.velocityY += 0.3; // Decreased gravity effect by 30%
if (self.y >= 2732 / 2 * 1.664) {
// Ground level
self.y = 2732 / 2 * 1.664;
self.isJumping = false;
self.velocityY = 0;
}
}
};
self.jump = function () {
if (!self.isJumping) {
self.isJumping = true;
self.velocityY = -self.jumpHeight;
}
};
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x87CEEB // Sky blue background
});
/****
* Game Code
****/
// Create multiple backgrounds for seamless scrolling
var backgrounds = [];
// Create two background instances to create infinite scrolling effect
for (var i = 0; i < 2; i++) {
var background = game.addChild(LK.getAsset('background', {
anchorX: 0,
anchorY: 0
}));
background.x = i * 2048; // Position backgrounds side by side
background.y = 0;
backgrounds.push(background);
}
// Initialize player
var player = game.addChild(new Player());
player.x = 2048 / 2;
player.y = 2732 / 2 * 1.664; // Move down by 66.4% (46.4% + 20%)
// Initialize enemies
var enemies = [];
var enemySpawnInterval = 100;
var enemySpawnCounter = 0;
var lastEnemyType = -1; // Track the last enemy type that was spawned
var sameTypeCount = 0; // Counter for consecutive same-type enemies
var canSpawn = true; // Flag to control enemy spawning
// Create a new Text2 object to display the score
var scoreText = new Text2('0', {
size: 100,
fill: 0xFFFFFF
});
// Add the score text to the game GUI at the top center of the screen
LK.gui.top.addChild(scoreText);
scoreText.x = 2048 / 2;
scoreText.y = 0;
// Handle game updates
game.update = function () {
player.update();
// Update background positions for scrolling effect
for (var i = 0; i < backgrounds.length; i++) {
// Move backgrounds to the left
backgrounds[i].x -= 3; // Slower than enemies for parallax effect
// When a background moves completely off screen to the left, move it to the right
if (backgrounds[i].x <= -2048) {
backgrounds[i].x = 2048;
}
}
// Spawn enemies
enemySpawnCounter++;
if (enemySpawnCounter >= enemySpawnInterval && canSpawn) {
// Check if any enemies are at the screen edge (about to enter)
var enemiesEnteringScreen = false;
for (var i = 0; i < enemies.length; i++) {
if (enemies[i].x >= 2048 - 300) {
// Buffer zone at screen edge
enemiesEnteringScreen = true;
break;
}
}
if (!enemiesEnteringScreen) {
// Randomly choose enemy type
var enemyType = Math.floor(Math.random() * 3);
// Check if we need to avoid the same enemy type
if (enemyType === lastEnemyType) {
sameTypeCount++;
// If we already have 2 of the same type, choose a different type
if (sameTypeCount >= 2) {
do {
enemyType = Math.floor(Math.random() * 3);
} while (enemyType === lastEnemyType);
sameTypeCount = 0;
}
} else {
sameTypeCount = 0;
}
var enemy;
if (enemyType === 0) {
enemy = new Enemy();
enemy.x = 2048;
enemy.y = 2732 / 2 * 1.664; // Move down by 66.4% (46.4% + 20%)
} else if (enemyType === 1) {
enemy = new FlyingEnemy();
enemy.x = 2048;
enemy.y = 2732 / 3 * 1.664; // Flying enemy starts higher, moved down by 66.4% (46.4% + 20%)
enemy.initialY = enemy.y;
} else {
enemy = new PlantEnemy();
enemy.x = 2048;
enemy.y = 2732 / 2 * 1.664; // Move down by 66.4% (46.4% + 20%)
}
// Save the current enemy type as the last one
lastEnemyType = enemyType;
enemy.passedMiddle = false; // Initialize the middle crossing property
enemies.push(enemy);
game.addChild(enemy);
// Randomize the spawn interval for the next enemy
enemySpawnInterval = Math.floor(Math.random() * 150) + 50;
enemySpawnCounter = 0;
// Prevent new enemies from spawning until current one crosses the middle
canSpawn = false;
}
}
// Update enemies
for (var j = enemies.length - 1; j >= 0; j--) {
enemies[j].update();
// Check if enemy has just crossed the middle of the screen
if (enemies[j].x < 2048 / 2 && !enemies[j].passedMiddle) {
enemies[j].passedMiddle = true;
// Allow new enemy to spawn when current enemy passes the middle
canSpawn = true;
}
if (player.intersects(enemies[j])) {
LK.effects.flashScreen(0xff0000, 1000);
LK.showGameOver();
} else if (player.x > enemies[j].x && !enemies[j].passed) {
enemies[j].passed = true;
LK.setScore(LK.getScore() + 1);
scoreText.setText(LK.getScore());
}
}
};
// Handle player jump
game.down = function (x, y, obj) {
player.jump();
};
// Import tween plugin for animations