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şı
/****
* 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 floating text that appears and fades away
var FloatingText = Container.expand(function () {
var self = Container.call(this);
// Generate random color for the text
var randomColor = Math.floor(Math.random() * 0xFFFFFF);
var text = new Text2('+1', {
size: 120,
// Increased text size from 60 to 120
fill: randomColor // Random color instead of fixed yellow
});
text.anchor.set(0.5, 0.5);
self.addChild(text);
self.lifetime = 0;
self.maxLifetime = 60; // 1 second at 60fps
self.velocityY = -3; // Move upward
self.update = function () {
self.lifetime++;
self.y += self.velocityY;
// Fade out as lifetime increases
self.alpha = 1 - self.lifetime / self.maxLifetime;
// Remove when lifetime is over
if (self.lifetime >= self.maxLifetime) {
self.destroy();
}
};
return self;
});
// 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) {
self.y = 2732 / 2;
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) {
// Ground level
self.y = 2732 / 2;
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
****/
// Play background music
LK.playMusic('school');
var background = game.addChild(LK.getAsset('background', {
anchorX: 0,
anchorY: 0
}));
background.x = 0;
background.y = 0;
var background2 = game.addChild(LK.getAsset('background2', {
anchorX: 0,
anchorY: 0
}));
background2.x = 0;
background2.y = 2732 - background2.height; // Position at the bottom of the screen
// Initialize player
var player = game.addChild(new Player());
player.x = 2048 / 2;
player.y = 2732 / 2;
// 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
var lastScoreCheckpoint = 0; // Track the last score milestone for speed increases
var speedMultiplier = 1.0; // Base speed multiplier
// 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();
// 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;
enemy.speed *= speedMultiplier;
} else if (enemyType === 1) {
enemy = new FlyingEnemy();
enemy.x = 2048;
enemy.y = 2732 / 3; // Flying enemy starts higher
enemy.initialY = enemy.y;
enemy.speed *= speedMultiplier;
} else {
enemy = new PlantEnemy();
enemy.x = 2048;
enemy.y = 2732 / 2;
enemy.speed *= speedMultiplier;
}
// 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 floating text elements
for (var k = game.children.length - 1; k >= 0; k--) {
if (game.children[k] instanceof FloatingText) {
game.children[k].update();
}
}
// 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());
// Check if score is a multiple of 5 and increase speed
var currentScore = LK.getScore();
if (currentScore % 5 === 0 && currentScore > lastScoreCheckpoint) {
lastScoreCheckpoint = currentScore;
speedMultiplier *= 1.1; // Increase speed by 10%
console.log("Speed increased! New multiplier: " + speedMultiplier);
}
// Create floating +1 text
var floatingText = new FloatingText();
floatingText.x = player.x;
floatingText.y = player.y - 100;
game.addChild(floatingText);
}
}
};
// Handle player jump
game.down = function (x, y, obj) {
player.jump();
}; ===================================================================
--- original.js
+++ change.js
@@ -145,8 +145,10 @@
/****
* Game Code
****/
+// Play background music
+LK.playMusic('school');
var background = game.addChild(LK.getAsset('background', {
anchorX: 0,
anchorY: 0
}));