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);
var text = new Text2('+1', {
size: 60,
fill: 0xFFFF00 // Yellow color
});
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
****/
var background = game.addChild(LK.getAsset('background', {
anchorX: 0,
anchorY: 0
}));
background.x = 0;
background.y = 0;
// 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
// 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 = it = 2732 / 2;
} else if (enemyType === 1) {
enemy = new FlyingEnemy();
enemy.x = 2048;
enemy.y = 2732 / 3; // Flying enemy starts higher
enemy.initialY = enemy.y;
} else {
enemy = new PlantEnemy();
enemy.x = 2048;
enemy.y = 2732 / 2;
}
// 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());
// 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
@@ -15,8 +15,32 @@
self.destroy();
}
};
});
+// Define a class for floating text that appears and fades away
+var FloatingText = Container.expand(function () {
+ var self = Container.call(this);
+ var text = new Text2('+1', {
+ size: 60,
+ fill: 0xFFFF00 // Yellow color
+ });
+ 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', {
@@ -202,37 +226,36 @@
// 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
- var _loop = function _loop() {
- 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;
- }
- // Array of game over messages
- gameOverMessages = ["Game Over! Better luck next time!", "Oops! You crashed!", "Try again! You can do better!", "Game Over! Watch out for enemies!", "You lost! Don't give up!"]; // Function to get a random message from array
- function getRandomMessage(messages) {
- var randomIndex = Math.floor(Math.random() * messages.length);
- return messages[randomIndex];
- }
- if (player.intersects(enemies[j])) {
- LK.effects.flashScreen(0xff0000, 1000);
- randomMessage = getRandomMessage(gameOverMessages);
- LK.showGameOver(randomMessage);
- } else if (player.x > enemies[j].x && !enemies[j].passed) {
- enemies[j].passed = true;
- LK.setScore(LK.getScore() + 1);
- scoreText.setText(LK.getScore());
- }
- },
- gameOverMessages,
- randomMessage;
for (var j = enemies.length - 1; j >= 0; j--) {
- _loop();
+ 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());
+ // 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) {