User prompt
Her 10 saniyede bir power up kutusu gelir
User prompt
Please fix the bug: 'TypeError: player.clone is not a function' in or related to this line: 'var clone = player.clone();' Line Number: 177
User prompt
Please fix the bug: 'TypeError: clearTimeout is not a function' in or related to this line: 'clearTimeout(powerUpTimeout);' Line Number: 104
User prompt
Please fix the bug: 'TypeError: Cannot set properties of undefined (setting 'scoreBoost')' in or related to this line: 'return player.dataset.scoreBoost = 'true';' Line Number: 169
User prompt
Please fix the bug: 'TypeError: setTimeout is not a function' in or related to this line: 'powerUpTimeout = setTimeout(function () {' Line Number: 108
User prompt
Please fix the bug: 'ReferenceError: activePowerUp is not defined' in or related to this line: 'if (activePowerUp) {' Line Number: 102
User prompt
Please fix the bug: 'ReferenceError: powerUpEffects is not defined' in or related to this line: 'self.type = Object.keys(powerUpEffects)[Math.floor(Math.random() * Object.keys(powerUpEffects).length)];' Line Number: 100
User prompt
const character = document.getElementById('character'); const scene = document.getElementById('gameScene'); let activePowerUp = null; let powerUpTimeout = null; const powerUpEffects = { enlarge: { apply: () => character.style.transform = 'scale(4)', reset: () => character.style.transform = 'scale(1)' }, speed: { apply: () => character.dataset.speed = 10, reset: () => character.dataset.speed = 5 }, scoreBoost: { apply: () => character.dataset.scoreBoost = 'true', reset: () => character.dataset.scoreBoost = 'false' }, clone: { apply: () => { const clone = character.cloneNode(true); clone.id = 'clone'; clone.style.opacity = '0.5'; scene.appendChild(clone); }, reset: () => { const clone = document.getElementById('clone'); if (clone) clone.remove(); } } }; // Power-up kutusu oluşturur ve düşürür function spawnFallingPowerUp() { const existing = document.querySelector('.powerUp'); if (existing) existing.remove(); const powerUp = document.createElement('div'); powerUp.className = 'powerUp'; const x = Math.random() * (scene.clientWidth - 50); powerUp.style.left = `${x}px`; powerUp.style.top = `-60px`; scene.appendChild(powerUp); let y = -60; const fall = setInterval(() => { y += 4; powerUp.style.top = `${y}px`; if (y > scene.clientHeight) { clearInterval(fall); powerUp.remove(); Koda ekle
User prompt
Please fix the bug: 'Cannot set properties of undefined (setting 'down')' in or related to this line: 'downButton.down = function (x, y, obj) {' Line Number: 116
User prompt
Please fix the bug: 'Cannot read properties of undefined (reading 'on')' in or related to this line: 'downButton.on('pointerdown', function () {' Line Number: 116
User prompt
Please fix the bug: 'Cannot set properties of undefined (setting 'down')' in or related to this line: 'downButton.down = function () {' Line Number: 116
User prompt
Please fix the bug: 'Cannot set properties of undefined (setting 'down')' in or related to this line: 'downButton.down = function (x, y, obj) {' Line Number: 116
User prompt
Please fix the bug: 'Cannot set properties of undefined (setting 'down')' in or related to this line: 'downButton.down = function (x, y, obj) {' Line Number: 116
User prompt
Please fix the bug: 'Cannot read properties of undefined (reading 'on')' in or related to this line: 'downButton.on('down', function () {' Line Number: 116
User prompt
Please fix the bug: 'Cannot set properties of undefined (setting 'down')' in or related to this line: 'downButton.down = function () {' Line Number: 116
User prompt
const character = document.getElementById('character'); const downButton = document.getElementById('downButton'); const originalImage = 'character.png'; // Normal görsel const downImage = 'character_down.png'; // Aşağı hareket görseli downButton.addEventListener('mousedown', () => { character.src = downImage; moveDown(); }); downButton.addEventListener('mouseup', () => { character.src = originalImage; }); function moveDown() { let top = parseInt(getComputedStyle(character).top); character.style.top = `${top + 50}px`; // İstediğin kadar düşür } Koda ekle
User prompt
Power up kutusu sahnenin yukarısından aşağıya doğru yavaşça insin
User prompt
Please fix the bug: 'Timeout.tick error: Cannot read properties of undefined (reading 'querySelectorAll')' in or related to this line: 'document.querySelectorAll('.powerUp').forEach(function (p) {' Line Number: 120
User prompt
let character = document.getElementById('character'); let scene = document.getElementById('gameScene'); let powerUpActive = false; let powerUpTimer; // Süpriz kutu oluştur function createPowerUp() { // Önceki kutuları sil document.querySelectorAll('.powerUp').forEach(p => p.remove()); let powerUp = document.createElement('div'); powerUp.className = 'powerUp'; let x = Math.random() * (scene.clientWidth - 50); let y = Math.random() * (scene.clientHeight - 50); powerUp.style.left = `${x}px`; powerUp.style.top = `${y}px`; scene.appendChild(powerUp); } // Çarpışma kontrolü function checkCollision() { let powerUp = document.querySelector('.powerUp'); if (!powerUp || powerUpActive) return; let c = character.getBoundingClientRect(); let p = powerUp.getBoundingClientRect(); if (c.left < p.right && c.right > p.left && c.top < p.bottom && c.bottom > p.top) { activateRandomEffect(); powerUp.remove(); } } // Rastgele özellik uygula function activateRandomEffect() { powerUpActive = true; let r = Math.floor(Math.random() * 4); switch (r) { case 0: character.style.transform = 'scale(4)'; break; case 1: character.dataset.speed = 10; break; case 2: character.dataset.scoreBoost = 'true'; break; case 3: let clone = character.cloneNode(true); clone.classList.add('clone'); scene.appendChild(clone); break; } powerUpTimer = setTimeout(() => { character.style.transform = 'scale(1)'; character.dataset.speed = 5; character.dataset.scoreBoost = 'false'; document.querySelectorAll('.clone').forEach(c => c.remove()); powerUpActive = false; }, 30000); } // 40 saniyede bir kutu oluştur setInterval(createPowerUp, 40000); // Oyun döngüsü function gameLoop() { checkCollision(); requestAnimationFrame(gameLoop); } gameLoop(); Koda ekle
User prompt
Please fix the bug: 'Timeout.tick error: setTimeout is not a function' in or related to this line: 'powerUpTimeout = setTimeout(function () {' Line Number: 179
User prompt
Please fix the bug: 'requestAnimationFrame is not a function' in or related to this line: 'requestAnimationFrame(gameLoop); // Continuously run the game loop' Line Number: 252
User prompt
let score = 0; // Başlangıç skoru let powerUpDuration = 30000; // Özelliklerin geçerli olacağı süre (30 saniye) let powerUpActive = false; // Özelliklerin aktif olup olmadığını kontrol et let powerUpTimeout; // Özellik süresi let powerUpSpeed = 3; // Süpriz kutuların düşme hızı // Süpriz kutuları tutacak dizi let powerUps = []; // Süpriz kutu oluşturma fonksiyonu function createPowerUp() { let powerUp = document.createElement('div'); powerUp.classList.add('powerUp'); // Kutunun konumunu üstten başlat let startX = Math.random() * window.innerWidth; let startY = -40; // Kutunun başlangıç Y pozisyonu, yani üstten biraz dışarıda powerUp.style.left = `${startX}px`; powerUp.style.top = `${startY}px`; // Kutuyu sahneye ekle document.getElementById('gameScene').appendChild(powerUp); // Kutuyu array'e ekle powerUps.push(powerUp); } // Süpriz kutuya çarpma kontrolü ve özellik kazandırma function checkPowerUpCollision(character) { powerUps.forEach(powerUp => { let characterRect = character.getBoundingClientRect(); let powerUpRect = powerUp.getBoundingClientRect(); // Eğer karakter kutuya çarparsa if (characterRect.left < powerUpRect.right && characterRect.right > powerUpRect.left && characterRect.top < powerUpRect.bottom && characterRect.bottom > powerUpRect.top) { // Özellikleri aktif et activatePowerUp(character); // Kutuyu sahneden kaldır powerUp.remove(); } }); } // Özellikleri aktif etme fonksiyonu function activatePowerUp(character) { if (powerUpActive) return; // Eğer zaten aktifse, yeni özellik kazandırma powerUpActive = true; // Rastgele bir özellik seç let randomFeature = Math.floor(Math.random() * 5); // 5 farklı özellik switch (randomFeature) { case 0: // Karakterin boyutunun 4 katına çıkması character.style.transform = 'scale(4)'; break; case 1: // Karakterin daha hızlı hareket etmesi character.speed = 10; // Varsayılan hızdan daha hızlı break; case 2: // Skorun daha hızlı artması increaseScoreRate(true); break; case 3: // Karakterin klonunun olması createCharacterClone(character); break; case 4: // Karakterin uçması (yukarı hareket etme) character.canFly = true; break; } // 30 saniye sonra özellikleri devre dışı bırak powerUpTimeout = setTimeout(() => { deactivatePowerUp(character); }, powerUpDuration); } // Özellikleri devre dışı bırakma function deactivatePowerUp(character) { powerUpActive = false; // Özellikleri geri al character.style.transform = 'scale(1)'; // Boyut eski haline dönsün character.speed = 5; // Varsayılan hız increaseScoreRate(false); // Skor hızı normalleşsin character.canFly = false; // Uçma özelliği gitsin // Klonları sil let clones = document.querySelectorAll('.clone'); clones.forEach(clone => clone.remove()); } // Skor hızını artırma/değiştirme fonksiyonu let scoreMultiplier = 1; function increaseScoreRate(isActive) { if (isActive) { scoreMultiplier = 2; // Skor 2 katına çıksın } else { scoreMultiplier = 1; // Skor normal hıza dönsün } } // Karakterin klonunu oluşturma function createCharacterClone(character) { let clone = document.createElement('div'); clone.classList.add('clone'); clone.style.width = `${character.offsetWidth}px`; clone.style.height = `${character.offsetHeight}px`; clone.style.position = 'absolute'; clone.style.left = `${character.offsetLeft + 50}px`; // Karakterin biraz yanında clone.style.top = `${character.offsetTop}px`; document.getElementById('gameScene').appendChild(clone); // Klon karakteri takip etsin let cloneSpeed = 5; // Klonun hareket hızı function cloneMovement() { clone.style.left = `${clone.offsetLeft + cloneSpeed}px`; if (clone.offsetLeft > window.innerWidth) { // Ekranın dışına çıkarsa, klonu sil clone.remove(); } } setInterval(cloneMovement, 16); // Klon hareketini her 16ms'de bir güncelle } // Skor arttıkça süpriz kutularının düşmesini sağla function checkScoreForPowerUp() { if (score % 20 === 0) { // 20 puanda bir kutu ekleyelim createPowerUp(); // Kutuyu oluştur } } // Süpriz kutu hareketi - Yukarıdan aşağıya doğru hareket ettir function movePowerUps() { powerUps.forEach(powerUp => { let currentTop = parseFloat(powerUp.style.top); powerUp.style.top = `${currentTop + powerUpSpeed}px`; // Eğer kutu ekranın altına kadar geldiyse, kutuyu sil if (currentTop > window.innerHeight) { powerUp.remove(); } }); } // Oyun döngüsünde yapılacak işlemler function gameLoop() { let character = document.getElementById('character'); checkPowerUpCollision(character); // Çarpma kontrolü checkScoreForPowerUp(); // Skor durumu kontrolü (20 puanda bir kutu ekle) movePowerUps(); // Süpriz kutularının hareketini sağla requestAnimationFrame(gameLoop); // Sürekli olarak oyun döngüsünü çalıştır } // Oyun döngüsünü başlat gameLoop(); Kodu ekle
User prompt
Please fix the bug: 'requestAnimationFrame is not a function' in or related to this line: 'requestAnimationFrame(gameLoop);' Line Number: 279
User prompt
let powerUpDuration = 30000; // Özelliklerin geçerli olacağı süre (30 saniye) let powerUpActive = false; // Özelliklerin aktif olup olmadığını kontrol et let powerUpTimeout; // Özellik süresi // Süpriz kutuları tutacak dizi let powerUps = []; // Süpriz kutu oluşturma fonksiyonu function createPowerUp() { let powerUp = document.createElement('div'); powerUp.classList.add('powerUp'); // Kutunun konumunu rastgele belirle let startX = Math.random() * window.innerWidth; let startY = Math.random() * window.innerHeight; powerUp.style.left = `${startX}px`; powerUp.style.top = `${startY}px`; // Kutuyu sahneye ekle document.getElementById('gameScene').appendChild(powerUp); // Kutuyu array'e ekle powerUps.push(powerUp); } // Süpriz kutuya çarpma kontrolü ve özellik kazandırma function checkPowerUpCollision(character) { powerUps.forEach(powerUp => { let characterRect = character.getBoundingClientRect(); let powerUpRect = powerUp.getBoundingClientRect(); // Eğer karakter kutuya çarparsa if (characterRect.left < powerUpRect.right && characterRect.right > powerUpRect.left && characterRect.top < powerUpRect.bottom && characterRect.bottom > powerUpRect.top) { // Özellikleri aktif et activatePowerUp(character); // Kutuyu sahneden kaldır powerUp.remove(); } }); } // Özellikleri aktif etme fonksiyonu function activatePowerUp(character) { if (powerUpActive) return; // Eğer zaten aktifse, yeni özellik kazandırma powerUpActive = true; // Rastgele bir özellik seç let randomFeature = Math.floor(Math.random() * 5); // 5 farklı özellik switch (randomFeature) { case 0: // Karakterin boyutunun 4 katına çıkması character.style.transform = 'scale(4)'; break; case 1: // Karakterin daha hızlı hareket etmesi character.speed = 10; // Varsayılan hızdan daha hızlı break; case 2: // Skorun daha hızlı artması increaseScoreRate(true); break; case 3: // Karakterin klonunun olması createCharacterClone(character); break; case 4: // Karakterin uçması (yukarı hareket etme) character.canFly = true; break; } // 30 saniye sonra özellikleri devre dışı bırak powerUpTimeout = setTimeout(() => { deactivatePowerUp(character); }, powerUpDuration); } // Özellikleri devre dışı bırakma function deactivatePowerUp(character) { powerUpActive = false; // Özellikleri geri al character.style.transform = 'scale(1)'; // Boyut eski haline dönsün character.speed = 5; // Varsayılan hız increaseScoreRate(false); // Skor hızı normalleşsin character.canFly = false; // Uçma özelliği gitsin // Klonları sil let clones = document.querySelectorAll('.clone'); clones.forEach(clone => clone.remove()); } // Skor hızını artırma/değiştirme fonksiyonu let scoreMultiplier = 1; function increaseScoreRate(isActive) { if (isActive) { scoreMultiplier = 2; // Skor 2 katına çıksın } else { scoreMultiplier = 1; // Skor normal hıza dönsün } } // Karakterin klonunu oluşturma function createCharacterClone(character) { let clone = document.createElement('div'); clone.classList.add('clone'); clone.style.width = `${character.offsetWidth}px`; clone.style.height = `${character.offsetHeight}px`; clone.style.position = 'absolute'; clone.style.left = `${character.offsetLeft + 50}px`; // Karakterin biraz yanında clone.style.top = `${character.offsetTop}px`; document.getElementById('gameScene').appendChild(clone); // Klon karakteri takip etsin let cloneSpeed = 5; // Klonun hareket hızı function cloneMovement() { clone.style.left = `${clone.offsetLeft + cloneSpeed}px`; if (clone.offsetLeft > window.innerWidth) { // Ekranın dışına çıkarsa, klonu sil clone.remove(); } } setInterval(cloneMovement, 16); // Klon hareketini her 16ms'de bir güncelle } // Süpriz kutuları yaratmak için belirli aralıklarla çalıştır setInterval(createPowerUp, 5000); // Her 5 saniyede bir yeni kutu oluştur // Oyun döngüsünde karakterle çarpma kontrolü function gameLoop() { let character = document.getElementById('character'); checkPowerUpCollision(character); // Çarpma kontrolü requestAnimationFrame(gameLoop); // Sürekli olarak oyun döngüsünü çalıştır } // Oyun döngüsünü başlat gameLoop(); Koda ekle
User prompt
Dikenler tüm sol kenarda olacak
/**** * Classes ****/ // Define a class for the down button var DownButton = Container.expand(function () { var self = Container.call(this); var buttonGraphics = self.attachAsset('downButton', { anchorX: 0.5, anchorY: 0.5 }); self.down = function (x, y, obj) { if (player.y + 100 <= 2732) { player.y += 100; } }; }); // 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 = Math.random() * 2 + 1; // Random speed between 1 and 3 self.update = function () { self.x -= self.speed; self.y += Math.sin(self.x / 100) * 10; // Sine wave pattern if (self.x < -50) { self.destroy(); } }; }); //<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 = 15; self.isJumping = false; self.velocityY = 0; self.update = function () { if (self.isJumping) { self.y -= self.velocityY; self.velocityY -= gravity; if (self.velocityY <= 0 && self.y < 1366) { self.x += 7; // Move right by 7 units at peak } if (self.y >= 1366) { self.y = 1366; self.isJumping = false; self.velocityY = 0; } } self.x += self.speedX; if (self.isJumping) { self.y -= self.velocityY; self.velocityY -= gravity; if (self.y >= 1366) { self.y = 1366; self.isJumping = false; self.velocityY = 0; } } }; self.jump = function () { if (!self.isJumping && self.y > 0) { self.isJumping = true; self.velocityY = 20; // Set initial jump velocity self.speedX = 0; // Reset horizontal speed } }; }); // Define a class for the up button var UpButton = Container.expand(function () { var self = Container.call(this); var buttonGraphics = self.attachAsset('upButton', { anchorX: 0.5, anchorY: 0.5 }); self.down = function (x, y, obj) { player.jump(); }; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x87CEEB // Sky blue background }); /**** * Game Code ****/ var powerUpDuration = 30000; // Duration for which power-ups are active (30 seconds) var powerUpActive = false; // Check if power-ups are active var powerUpTimeout; // Power-up duration var powerUpSpeed = 3; // Falling speed of power-ups // Array to hold power-ups var powerUps = []; // Function to create a power-up function createPowerUp() { var powerUp = LK.getAsset('powerUp', { anchorX: 0.5, anchorY: 0.5 }); // Start position of the box from the top var startX = Math.random() * 2048; var startY = -40; // Starting Y position of the box, slightly outside from the top powerUp.x = startX; powerUp.y = startY; // Add power-up to the game scene game.addChild(powerUp); // Add power-up to the array powerUps.push(powerUp); } // Check collision with power-up and activate features function checkPowerUpCollision(character) { powerUps.forEach(function (powerUp) { if (character.intersects(powerUp)) { // Activate features activatePowerUp(character); // Remove power-up from the scene powerUp.destroy(); powerUps.splice(powerUps.indexOf(powerUp), 1); } }); } // Function to activate features function activatePowerUp(character) { if (powerUpActive) { return; } // If already active, do not activate new features powerUpActive = true; // Select a random feature var randomFeature = Math.floor(Math.random() * 5); // 5 different features switch (randomFeature) { case 0: // Increase character size to 4 times character.scale.set(4); break; case 1: // Increase character speed character.speed = 10; // Faster than default speed break; case 2: // Increase score rate increaseScoreRate(true); break; case 3: // Create a clone of the character createCharacterClone(character); break; case 4: // Allow character to fly (move upwards) character.canFly = true; break; } // Deactivate features after 30 seconds powerUpTimeout = setTimeout(function () { deactivatePowerUp(character); }, powerUpDuration); } // Function to deactivate features function deactivatePowerUp(character) { powerUpActive = false; // Revert features character.scale.set(1); // Revert size character.speed = 5; // Default speed increaseScoreRate(false); // Normalize score rate character.canFly = false; // Remove flying ability // Remove clones var clones = game.children.filter(function (child) { return child.isClone; }); clones.forEach(function (clone) { return clone.destroy(); }); } // Function to increase/modify score rate var scoreMultiplier = 1; function increaseScoreRate(isActive) { if (isActive) { scoreMultiplier = 2; // Double the score } else { scoreMultiplier = 1; // Normalize score rate } } // Function to create a clone of the character function createCharacterClone(character) { var clone = LK.getAsset('player', { anchorX: 0.5, anchorY: 0.5 }); clone.isClone = true; clone.x = character.x + 50; // Slightly beside the character clone.y = character.y; game.addChild(clone); // Make the clone follow the character var cloneSpeed = 5; // Movement speed of the clone LK.setInterval(function () { clone.x += cloneSpeed; if (clone.x > 2048) { // If the clone goes off-screen, remove it clone.destroy(); } }, 16); // Update clone movement every 16ms } // Move power-ups downwards function movePowerUps() { powerUps.forEach(function (powerUp) { powerUp.y += powerUpSpeed; // If the power-up reaches the bottom of the screen, remove it if (powerUp.y > 2732) { powerUp.destroy(); powerUps.splice(powerUps.indexOf(powerUp), 1); } }); } // Check score to create power-ups function checkScoreForPowerUp() { if (LK.getScore() % 20 === 0) { // Add a box every 20 points createPowerUp(); // Create the box } } // Add power-up movement and collision check to the game loop function gameLoop() { var character = player; checkPowerUpCollision(character); // Collision check checkScoreForPowerUp(); // Score check (add box every 20 points) movePowerUps(); // Move power-ups requestAnimationFrame(gameLoop); // Continuously run the game loop } // Start the game loop gameLoop(); // Array to hold spikes var spikes = []; // Function to create spikes function createSpikes() { var spikeHeight = 100; // Height of each spike var spikeWidth = 30; // Width of each spike var gap = 50; // Gap between spikes // Create fixed spikes on the left edge of the scene for (var y = 0; y < 2732; y += spikeHeight + gap) { var spike = LK.getAsset('spike', { anchorX: 0.5, anchorY: 0.5 }); // Spike starting position (fixed to the left edge) var startX = -spikeWidth; // Left edge var startY = y; // Arranged with gap between them spike.x = startX; spike.y = startY; // Add spikes to the game scene game.addChild(spike); // Add spike object to the array spikes.push(spike); } } // Create spikes (only run once) createSpikes(); var clouds = []; // Function to create a cloud function createCloud() { // Create a new cloud asset var cloud = LK.getAsset('cloud', { anchorX: 0.5, anchorY: 0.5 }); // Cloud starting position (from the right) var startX = 2048 + 100; // Cloud starts from the right var startY = Math.random() * 200; // Random height (upper part) cloud.x = startX; cloud.y = startY; // Add cloud to the game scene game.addChild(cloud); // Start moving the cloud moveCloud(cloud); // Add cloud object to the array clouds.push(cloud); } // Function to move the cloud to the left function moveCloud(cloud) { var speed = 1; // Cloud movement speed LK.setInterval(function () { // Cloud moves to the left cloud.x -= speed; // If the cloud reaches the left edge of the screen, remove it if (cloud.x < -100) { // When the cloud is completely off-screen cloud.destroy(); // Remove the cloud clouds.splice(clouds.indexOf(cloud), 1); // Remove from array } }, 16); // Update every 16ms for 60 FPS } // Create new clouds at intervals LK.setInterval(createCloud, 3000); // Add a new cloud every 3 seconds // Create and initialize the score text display var scoreTxt = new Text2('0', { size: 200, // Increased size fill: 0x000000 // Black color for the score text }); // Set the initial score text to zero scoreTxt.setText(LK.getScore()); // Center the score text horizontally at the top of the screen scoreTxt.anchor.set(0.5, 0); // Anchor at the center of the top edge // Add the score text to the GUI overlay at the top-center position LK.gui.top.addChild(scoreTxt); var gravity = 0.5; var windSpeed = 2; // Define wind speed for horizontal movement // Initialize player at the center of the screen var player = game.addChild(new Player()); player.x = 1024; player.y = 1366; player.speedX = 0; // Prevent movement on spawn player.speedY = 0; // Prevent movement on spawn player.isJumping = false; player.velocityY = 0; // Initialize up button var upButton = game.addChild(new UpButton()); upButton.x = 2048 / 2 - 500; // Middle point's x coordinate minus button width upButton.y = 2732 / 2 + 600; // Middle point's y coordinate plus button height plus additional 100 pixels // Initialize down button var downButton = game.addChild(new DownButton()); downButton.x = 2048 - 500 - 50; // Right edge minus button width and margin downButton.y = 2732 - 500 - 50; // Bottom edge minus button height and margin // Initialize enemies var enemies = []; var enemySpawnInterval = 200; var enemySpawnCounter = 0; // Variables to track button presses var isPressingUp = false; var isPressingDown = false; // Event listeners for button presses upButton.down = function () { isPressingUp = true; }; upButton.up = function () { isPressingUp = false; }; downButton.down = function () { isPressingDown = true; }; downButton.up = function () { isPressingDown = false; }; // Update player movement based on button presses function updatePlayerMovement() { if (isPressingUp) { player.velocityY = -10; player.x += 2; // Move right slowly by 2 units } // Removed upward movement when the down button is pressed player.y += player.velocityY; if (!isPressingUp && !isPressingDown) { player.velocityY += gravity; } if (player.y > 1366) { player.y = 1366; player.velocityY = 0; } if (player.y < 0) { player.y = 0; player.velocityY = 0; } } // Set interval for updating player movement LK.setInterval(updatePlayerMovement, 16); // Set interval for updating player movement LK.setInterval(function () { player.update(); }, 16); // Handle game updates game.update = function () { player.update(); player.x -= windSpeed; // Apply wind effect to move player left // Spawn enemies enemySpawnCounter++; if (enemySpawnCounter >= enemySpawnInterval) { var enemy = new Enemy(); enemy.x = 2048; // Spawn from the right edge of the screen enemy.y = Math.random() * (2732 / 2) + 100; // Random y position slightly lower from the top half of the screen enemies.push(enemy); game.addChild(enemy); enemySpawnCounter = 0; } // Update enemies for (var j = enemies.length - 1; j >= 0; j--) { enemies[j].update(); if (player.intersects(enemies[j])) { enemies[j].destroy(); // Remove enemy from the scene enemies.splice(j, 1); // Remove enemy from the array LK.setScore(LK.getScore() + 1); // Increase score by 1 scoreTxt.setText(LK.getScore()); // Update the score text display if (LK.getScore() % 20 === 0) { LK.effects.flashScreen(0x00FF00, 500); // Flash green on screen for 0.5 seconds } } } }; // Handle player jump game.down = function (x, y, obj) { player.jump(); };
===================================================================
--- original.js
+++ change.js
@@ -95,176 +95,218 @@
/****
* Game Code
****/
-// Array to hold spikes
-var spikes = [];
-// Function to create spikes
-function createSpikes() {
- var spikeHeight = 100; // Height of each spike
- var spikeWidth = 30; // Width of each spike
- var gap = 50; // Gap between spikes
- // Create fixed spikes on the left edge of the scene
- for (var y = 0; y < 2732; y += spikeHeight + gap) {
- var spike = LK.getAsset('spike', {
- anchorX: 0.5,
- anchorY: 0.5
- });
- // Spike starting position (fixed to the left edge)
- var startX = -spikeWidth; // Left edge
- var startY = y; // Arranged with gap between them
- spike.x = startX;
- spike.y = startY;
- // Add spikes to the game scene
- game.addChild(spike);
- // Add spike object to the array
- spikes.push(spike);
- }
-}
-// Create spikes (only run once)
-createSpikes();
-var clouds = [];
-// Function to create a cloud
-function createCloud() {
- // Create a new cloud asset
- var cloud = LK.getAsset('cloud', {
- anchorX: 0.5,
- anchorY: 0.5
- });
- // Cloud starting position (from the right)
- var startX = 2048 + 100; // Cloud starts from the right
- var startY = Math.random() * 200; // Random height (upper part)
- cloud.x = startX;
- cloud.y = startY;
- // Add cloud to the game scene
- game.addChild(cloud);
- // Start moving the cloud
- moveCloud(cloud);
- // Add cloud object to the array
- clouds.push(cloud);
-}
-// Function to move the cloud to the left
-function moveCloud(cloud) {
- var speed = 1; // Cloud movement speed
- LK.setInterval(function () {
- // Cloud moves to the left
- cloud.x -= speed;
- // If the cloud reaches the left edge of the screen, remove it
- if (cloud.x < -100) {
- // When the cloud is completely off-screen
- cloud.destroy(); // Remove the cloud
- clouds.splice(clouds.indexOf(cloud), 1); // Remove from array
- }
- }, 16); // Update every 16ms for 60 FPS
-}
-// Create new clouds at intervals
-LK.setInterval(createCloud, 3000); // Add a new cloud every 3 seconds
-// Create and initialize the score text display
-var scoreTxt = new Text2('0', {
- size: 200,
- // Increased size
- fill: 0x000000 // Black color for the score text
-});
-// Power-up duration and state
-var powerUpDuration = 30000; // 30 seconds
-var powerUpActive = false;
-var powerUpTimeout;
+var powerUpDuration = 30000; // Duration for which power-ups are active (30 seconds)
+var powerUpActive = false; // Check if power-ups are active
+var powerUpTimeout; // Power-up duration
+var powerUpSpeed = 3; // Falling speed of power-ups
// Array to hold power-ups
var powerUps = [];
// Function to create a power-up
function createPowerUp() {
var powerUp = LK.getAsset('powerUp', {
anchorX: 0.5,
anchorY: 0.5
});
- // Random position for the power-up
- powerUp.x = Math.random() * 2048;
- powerUp.y = Math.random() * 2732;
+ // Start position of the box from the top
+ var startX = Math.random() * 2048;
+ var startY = -40; // Starting Y position of the box, slightly outside from the top
+ powerUp.x = startX;
+ powerUp.y = startY;
// Add power-up to the game scene
game.addChild(powerUp);
- // Add power-up object to the array
+ // Add power-up to the array
powerUps.push(powerUp);
}
-// Check collision with power-ups
+// Check collision with power-up and activate features
function checkPowerUpCollision(character) {
powerUps.forEach(function (powerUp) {
if (character.intersects(powerUp)) {
+ // Activate features
activatePowerUp(character);
+ // Remove power-up from the scene
powerUp.destroy();
powerUps.splice(powerUps.indexOf(powerUp), 1);
}
});
}
-// Activate power-up effects
+// Function to activate features
function activatePowerUp(character) {
if (powerUpActive) {
return;
- }
+ } // If already active, do not activate new features
powerUpActive = true;
- var randomFeature = Math.floor(Math.random() * 5);
+ // Select a random feature
+ var randomFeature = Math.floor(Math.random() * 5); // 5 different features
switch (randomFeature) {
case 0:
+ // Increase character size to 4 times
character.scale.set(4);
break;
case 1:
- character.speed = 10;
+ // Increase character speed
+ character.speed = 10; // Faster than default speed
break;
case 2:
+ // Increase score rate
increaseScoreRate(true);
break;
case 3:
+ // Create a clone of the character
createCharacterClone(character);
break;
case 4:
+ // Allow character to fly (move upwards)
character.canFly = true;
break;
}
+ // Deactivate features after 30 seconds
powerUpTimeout = setTimeout(function () {
deactivatePowerUp(character);
}, powerUpDuration);
}
-// Deactivate power-up effects
+// Function to deactivate features
function deactivatePowerUp(character) {
powerUpActive = false;
- character.scale.set(1);
- character.speed = 5;
- increaseScoreRate(false);
- character.canFly = false;
- var clones = document.querySelectorAll('.clone');
+ // Revert features
+ character.scale.set(1); // Revert size
+ character.speed = 5; // Default speed
+ increaseScoreRate(false); // Normalize score rate
+ character.canFly = false; // Remove flying ability
+ // Remove clones
+ var clones = game.children.filter(function (child) {
+ return child.isClone;
+ });
clones.forEach(function (clone) {
return clone.destroy();
});
}
-// Adjust score rate
+// Function to increase/modify score rate
var scoreMultiplier = 1;
function increaseScoreRate(isActive) {
- scoreMultiplier = isActive ? 2 : 1;
+ if (isActive) {
+ scoreMultiplier = 2; // Double the score
+ } else {
+ scoreMultiplier = 1; // Normalize score rate
+ }
}
-// Create character clone
+// Function to create a clone of the character
function createCharacterClone(character) {
var clone = LK.getAsset('player', {
anchorX: 0.5,
anchorY: 0.5
});
- clone.x = character.x + 50;
+ clone.isClone = true;
+ clone.x = character.x + 50; // Slightly beside the character
clone.y = character.y;
game.addChild(clone);
- var cloneSpeed = 5;
+ // Make the clone follow the character
+ var cloneSpeed = 5; // Movement speed of the clone
LK.setInterval(function () {
clone.x += cloneSpeed;
if (clone.x > 2048) {
+ // If the clone goes off-screen, remove it
clone.destroy();
}
- }, 16);
+ }, 16); // Update clone movement every 16ms
}
-// Create power-ups at intervals
-LK.setInterval(createPowerUp, 5000);
-// Game loop for collision detection
+// Move power-ups downwards
+function movePowerUps() {
+ powerUps.forEach(function (powerUp) {
+ powerUp.y += powerUpSpeed;
+ // If the power-up reaches the bottom of the screen, remove it
+ if (powerUp.y > 2732) {
+ powerUp.destroy();
+ powerUps.splice(powerUps.indexOf(powerUp), 1);
+ }
+ });
+}
+// Check score to create power-ups
+function checkScoreForPowerUp() {
+ if (LK.getScore() % 20 === 0) {
+ // Add a box every 20 points
+ createPowerUp(); // Create the box
+ }
+}
+// Add power-up movement and collision check to the game loop
function gameLoop() {
- checkPowerUpCollision(player);
- LK.setInterval(gameLoop, 16);
+ var character = player;
+ checkPowerUpCollision(character); // Collision check
+ checkScoreForPowerUp(); // Score check (add box every 20 points)
+ movePowerUps(); // Move power-ups
+ requestAnimationFrame(gameLoop); // Continuously run the game loop
}
+// Start the game loop
gameLoop();
+// Array to hold spikes
+var spikes = [];
+// Function to create spikes
+function createSpikes() {
+ var spikeHeight = 100; // Height of each spike
+ var spikeWidth = 30; // Width of each spike
+ var gap = 50; // Gap between spikes
+ // Create fixed spikes on the left edge of the scene
+ for (var y = 0; y < 2732; y += spikeHeight + gap) {
+ var spike = LK.getAsset('spike', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ // Spike starting position (fixed to the left edge)
+ var startX = -spikeWidth; // Left edge
+ var startY = y; // Arranged with gap between them
+ spike.x = startX;
+ spike.y = startY;
+ // Add spikes to the game scene
+ game.addChild(spike);
+ // Add spike object to the array
+ spikes.push(spike);
+ }
+}
+// Create spikes (only run once)
+createSpikes();
+var clouds = [];
+// Function to create a cloud
+function createCloud() {
+ // Create a new cloud asset
+ var cloud = LK.getAsset('cloud', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ // Cloud starting position (from the right)
+ var startX = 2048 + 100; // Cloud starts from the right
+ var startY = Math.random() * 200; // Random height (upper part)
+ cloud.x = startX;
+ cloud.y = startY;
+ // Add cloud to the game scene
+ game.addChild(cloud);
+ // Start moving the cloud
+ moveCloud(cloud);
+ // Add cloud object to the array
+ clouds.push(cloud);
+}
+// Function to move the cloud to the left
+function moveCloud(cloud) {
+ var speed = 1; // Cloud movement speed
+ LK.setInterval(function () {
+ // Cloud moves to the left
+ cloud.x -= speed;
+ // If the cloud reaches the left edge of the screen, remove it
+ if (cloud.x < -100) {
+ // When the cloud is completely off-screen
+ cloud.destroy(); // Remove the cloud
+ clouds.splice(clouds.indexOf(cloud), 1); // Remove from array
+ }
+ }, 16); // Update every 16ms for 60 FPS
+}
+// Create new clouds at intervals
+LK.setInterval(createCloud, 3000); // Add a new cloud every 3 seconds
+// Create and initialize the score text display
+var scoreTxt = new Text2('0', {
+ size: 200,
+ // Increased size
+ fill: 0x000000 // Black color for the score text
+});
// Set the initial score text to zero
scoreTxt.setText(LK.getScore());
// Center the score text horizontally at the top of the screen
scoreTxt.anchor.set(0.5, 0); // Anchor at the center of the top edge