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 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 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();
}
};
// Handle player jump
game.down = function (x, y, obj) {
player.jump();
}; ===================================================================
--- original.js
+++ change.js
@@ -1,10 +1,5 @@
/****
-* Plugins
-****/
-var tween = LK.import("@upit/tween.v1");
-
-/****
* Classes
****/
// Define a class for enemies
var Enemy = Container.expand(function () {
@@ -69,10 +64,10 @@
}
if (self.isJumping) {
self.y += self.velocityY;
self.velocityY += 0.6;
- if (self.y >= 2732 / 2 * 1.494) {
- self.y = 2732 / 2 * 1.494;
+ if (self.y >= 2732 / 2) {
+ self.y = 2732 / 2;
self.isJumping = false;
self.velocityY = 0;
}
}
@@ -97,11 +92,11 @@
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.494) {
+ if (self.y >= 2732 / 2) {
// Ground level
- self.y = 2732 / 2 * 1.494;
+ self.y = 2732 / 2;
self.isJumping = false;
self.velocityY = 0;
}
}
@@ -123,35 +118,18 @@
/****
* 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);
-}
+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 * 1.494; // Move down by 49.4% (44.4% + 2% + 3%)
-// Add ground platform below the player
-var groundPlatforms = [];
-for (var i = 0; i < 2; i++) {
- var ground = game.addChild(LK.getAsset('ground', {
- anchorX: 0,
- anchorY: 0
- }));
- ground.x = i * 2048; // Position grounds side by side
- ground.y = player.y + player.height / 2 - 20; // Position with top edge slightly above player's feet
- groundPlatforms.push(ground);
-}
+player.y = 2732 / 2;
// Initialize enemies
var enemies = [];
var enemySpawnInterval = 100;
var enemySpawnCounter = 0;
@@ -169,26 +147,8 @@
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;
- }
- }
- // Update ground platform positions for scrolling effect
- for (var i = 0; i < groundPlatforms.length; i++) {
- // Move ground platforms to the left
- groundPlatforms[i].x -= 3; // Same speed as background
- // When a ground platform moves completely off screen to the left, move it to the right
- if (groundPlatforms[i].x <= -2048) {
- groundPlatforms[i].x = 2048;
- }
- }
// Spawn enemies
enemySpawnCounter++;
if (enemySpawnCounter >= enemySpawnInterval && canSpawn) {
// Check if any enemies are at the screen edge (about to enter)
@@ -219,18 +179,18 @@
var enemy;
if (enemyType === 0) {
enemy = new Enemy();
enemy.x = 2048;
- enemy.y = 2732 / 2 * 1.494; // Move down by 49.4% (44.4% + 2% + 3%)
+ enemy.y = it = 2732 / 2;
} else if (enemyType === 1) {
enemy = new FlyingEnemy();
enemy.x = 2048;
- enemy.y = 2732 / 3 * 1.494; // Flying enemy starts higher, moved down by 49.4% (44.4% + 2% + 3%)
+ enemy.y = 2732 / 3; // Flying enemy starts higher
enemy.initialY = enemy.y;
} else {
enemy = new PlantEnemy();
enemy.x = 2048;
- enemy.y = 2732 / 2 * 1.494; // Move down by 49.4% (44.4% + 2% + 3%)
+ enemy.y = 2732 / 2;
}
// Save the current enemy type as the last one
lastEnemyType = enemyType;
enemy.passedMiddle = false; // Initialize the middle crossing property
@@ -243,27 +203,38 @@
canSpawn = false;
}
}
// 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--) {
- 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());
- }
+ _loop();
}
};
// Handle player jump
game.down = function (x, y, obj) {
player.jump();
-};
-// Import tween plugin for animations
\ No newline at end of file
+};
\ No newline at end of file