User prompt
la condición de victoria sera de 5000
User prompt
no se crearan dos obstaculos uno a lado del otro tendra que haber mas distancia entre eloos
User prompt
la condición de victoria sera un puntaje de 2000
User prompt
expande la sensibilidad a las colisiones a los obstaculos
User prompt
el jugador debe de estar mas cerca de los obstaculos para perder
User prompt
baja el titulo
User prompt
la imagen titulo estara hasta arriba de la pantalla
User prompt
separalos mas entre si
User prompt
separa a los personajes de la seleccion de personaje
User prompt
acomoda la seleccion de personaje en el medio de la pantalla
User prompt
elimina el jugador 4 y jugador 5
User prompt
un poco mas abajo a los enemigos voladores
User prompt
mas abajo a los enemigos voladores
User prompt
un poco mas abajo muy poco
User prompt
acomoda un poco mas arriba a los enemigos voladores
User prompt
las balas salen de la parte de arriba del jugador
User prompt
elimina el aumento de velocidad
User prompt
la velocidad no aumenta
User prompt
acomoda al personaje 7 alineado con los demas personajes
User prompt
agrega otro personaje
User prompt
condicion de victoria en 6000 metros
User prompt
agrega 2 personajes mas
User prompt
agrega otro personaje
User prompt
al llegar a los 1000 metros llegara un enemigo para derrotarlo tienes que dispararle 25 veces con el arma y el jugador se podra mover libremente de izquierda y derecha
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); var storage = LK.import("@upit/storage.v1"); /**** * Classes ****/ var Bullet = Container.expand(function () { var self = Container.call(this); var bulletGraphics = self.attachAsset('bullet', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 15; self.update = function () { self.x += self.speed; }; return self; }); var Enemy = Container.expand(function () { var self = Container.call(this); var enemyGraphics = self.attachAsset('enemy', { anchorX: 0.5, anchorY: 1.0 }); self.speed = -8; self.update = function () { self.x += self.speed; }; return self; }); var FlyingEnemy = Container.expand(function () { var self = Container.call(this); var flyingEnemyGraphics = self.attachAsset('flyingEnemy', { anchorX: 0.5, anchorY: 0.5 }); self.speed = -10; self.update = function () { self.x += self.speed; }; return self; }); var GroundSegment = Container.expand(function () { var self = Container.call(this); var groundGraphics = self.attachAsset('ground', { anchorX: 0, anchorY: 0 }); self.speed = -8; self.update = function () { self.x += self.speed; }; return self; }); var Hole = Container.expand(function () { var self = Container.call(this); var holeGraphics = self.attachAsset('hole', { anchorX: 0, anchorY: 0 }); self.speed = -8; self.update = function () { self.x += self.speed; }; return self; }); var Obstacle = Container.expand(function () { var self = Container.call(this); var obstacleGraphics = self.attachAsset('obstacle', { anchorX: 0.5, anchorY: 1.0 }); self.speed = -8; self.update = function () { self.x += self.speed; }; return self; }); var Player = Container.expand(function () { var self = Container.call(this); var playerGraphics = self.attachAsset('player', { anchorX: 0.5, anchorY: 1.0 }); self.isJumping = false; self.jumpSpeed = 0; self.gravity = 0.8; self.jumpPower = -25; self.groundY = 0; self.customColor = 0x4CAF50; self.jumpCount = 0; self.maxJumps = 2; self.characterType = 'player'; self.isInvincible = false; self.invincibilityTimer = 0; self.hasWeapon = false; self.weaponGraphics = null; self.jump = function () { if (self.jumpCount < self.maxJumps) { if (!self.isJumping) { self.isJumping = true; } self.jumpSpeed = self.jumpPower; self.jumpCount++; LK.getSound('jump').play(); } }; self.setColor = function (color) { self.customColor = color; playerGraphics.tint = color; }; self.setCharacter = function (characterType) { self.characterType = characterType; playerGraphics.destroy(); playerGraphics = self.attachAsset(characterType, { anchorX: 0.5, anchorY: 1.0 }); }; self.activateInvincibility = function () { self.isInvincible = true; self.invincibilityTimer = 300; // 5 seconds at 60fps // Flash effect tween(playerGraphics, { alpha: 0.3 }, { duration: 200, easing: tween.easeInOut, onFinish: function onFinish() { if (self.isInvincible) { tween(playerGraphics, { alpha: 1 }, { duration: 200, easing: tween.easeInOut, onFinish: function onFinish() { if (self.isInvincible) { self.activateInvincibility(); } } }); } } }); }; self.pickupWeapon = function () { self.hasWeapon = true; // Create weapon graphics attached to player if (self.weaponGraphics) { self.weaponGraphics.destroy(); } self.weaponGraphics = self.attachAsset('weapon', { anchorX: 0.5, anchorY: 0.5 }); // Position weapon higher and straight in player's hand pointing forward self.weaponGraphics.x = 40; self.weaponGraphics.y = -200; self.weaponGraphics.scaleX = 3; self.weaponGraphics.scaleY = 3; self.weaponGraphics.rotation = 0; // Straight forward }; self.update = function () { if (self.isJumping) { self.jumpSpeed += self.gravity; self.y += self.jumpSpeed; var landingY = self.groundY; if (self.y >= landingY) { self.y = landingY; self.isJumping = false; self.jumpSpeed = 0; self.jumpCount = 0; } } // Handle invincibility timer if (self.isInvincible) { self.invincibilityTimer--; if (self.invincibilityTimer <= 0) { self.isInvincible = false; tween.stop(playerGraphics); playerGraphics.alpha = 1; } } }; return self; }); var Weapon = Container.expand(function () { var self = Container.call(this); var weaponGraphics = self.attachAsset('weapon', { anchorX: 0.5, anchorY: 0.5 }); self.speed = -8; self.update = function () { self.x += self.speed; self.y += Math.sin(LK.ticks * 0.1) * 2; // Floating animation }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x87CEEB }); /**** * Game Code ****/ var gameState = 'ready'; // 'customization', 'ready', 'playing', 'gameOver' var selectedCharacter = 'player'; var player; var groundSegments = []; var holes = []; var enemies = []; var obstacles = []; var bullets = []; var flyingEnemies = []; var weapons = []; var gameSpeed = 8; var spawnTimer = 0; var shootTimer = 0; var distance = 0; var groundY = 2400; var invincibilitySpacing = 1; var lastInvincibilityTime = 0; var titleImage; // UI Elements var character1Button = LK.getAsset('player', { anchorX: 0.5, anchorY: 0.5 }); character1Button.x = 424; character1Button.y = 1200; character1Button.scaleX = 0.8; character1Button.scaleY = 0.8; character1Button.visible = true; var character2Button = LK.getAsset('player2', { anchorX: 0.5, anchorY: 0.5 }); character2Button.x = 724; character2Button.y = 1200; character2Button.scaleX = 0.8; character2Button.scaleY = 0.8; character2Button.visible = true; var character3Button = LK.getAsset('player3', { anchorX: 0.5, anchorY: 0.5 }); character3Button.x = 1024; character3Button.y = 1200; character3Button.scaleX = 0.8; character3Button.scaleY = 0.8; character3Button.visible = true; var character6Button = LK.getAsset('player6', { anchorX: 0.5, anchorY: 0.5 }); character6Button.x = 1324; character6Button.y = 1200; character6Button.scaleX = 0.8; character6Button.scaleY = 0.8; character6Button.visible = true; var character7Button = LK.getAsset('player7', { anchorX: 0.5, anchorY: 0.5 }); character7Button.x = 1624; character7Button.y = 1200; character7Button.scaleX = 0.8; character7Button.scaleY = 0.8; character7Button.visible = true; var playButton = LK.getAsset('startButton', { anchorX: 0.5, anchorY: 0.5 }); playButton.x = 1024; playButton.y = 1600; playButton.scaleX = 1.5; playButton.scaleY = 1.5; playButton.visible = true; // Character selection border var selectionBorder = LK.getAsset('jumpButton', { anchorX: 0.5, anchorY: 0.5 }); selectionBorder.x = 724; selectionBorder.y = 1200; selectionBorder.scaleX = 2.5; selectionBorder.scaleY = 2.5; selectionBorder.alpha = 0.3; selectionBorder.visible = true; var distanceText = new Text2('0m', { size: 60, fill: 0xFFFFFF }); distanceText.anchor.set(0.5, 0); LK.gui.top.addChild(distanceText); var fireButton = LK.getAsset('fireButton', { anchorX: 0.5, anchorY: 0.5 }); fireButton.x = 150; fireButton.y = 2200; game.addChild(fireButton); // Initialize player player = new Player(); player.x = 400; player.y = groundY; player.groundY = groundY; game.addChild(player); // Initialize ground segments for (var i = 0; i < 15; i++) { var ground = new GroundSegment(); ground.x = i * 200; ground.y = groundY; groundSegments.push(ground); game.addChild(ground); } function initializeGame() { gameState = 'playing'; distance = 0; gameSpeed = 8; spawnTimer = 0; // Hide character selection and play button character1Button.visible = false; character2Button.visible = false; character3Button.visible = false; character6Button.visible = false; character7Button.visible = false; selectionBorder.visible = false; playButton.visible = false; titleImage.visible = false; // Clear existing obstacles clearAllObstacles(); // Reset player position player.x = 400; player.y = groundY; player.isJumping = false; player.jumpSpeed = 0; player.jumpCount = 0; player.isInvincible = false; player.invincibilityTimer = 0; // Give player weapon at start player.pickupWeapon(); invincibilitySpacing = 1; lastInvincibilityTime = 0; // Reset ground segments for (var i = 0; i < groundSegments.length; i++) { groundSegments[i].x = i * 200; groundSegments[i].speed = -gameSpeed; } } function clearAllObstacles() { for (var i = holes.length - 1; i >= 0; i--) { holes[i].destroy(); holes.splice(i, 1); } for (var i = enemies.length - 1; i >= 0; i--) { enemies[i].destroy(); enemies.splice(i, 1); } for (var i = obstacles.length - 1; i >= 0; i--) { obstacles[i].destroy(); obstacles.splice(i, 1); } for (var i = bullets.length - 1; i >= 0; i--) { bullets[i].destroy(); bullets.splice(i, 1); } for (var i = flyingEnemies.length - 1; i >= 0; i--) { flyingEnemies[i].destroy(); flyingEnemies.splice(i, 1); } } function spawnObstacle() { var rand = Math.random(); var spawnX = 2200; var minDistance = 400; // Minimum distance between obstacles var canSpawn = true; // Check if there's enough distance from existing obstacles var allObstacles = obstacles.concat(enemies).concat(holes).concat(flyingEnemies); for (var i = 0; i < allObstacles.length; i++) { var existingObstacle = allObstacles[i]; if (Math.abs(existingObstacle.x - spawnX) < minDistance) { canSpawn = false; break; } } if (!canSpawn) { return; // Don't spawn if too close to existing obstacles } if (rand < 0.15) { // Spawn hole var hole = new Hole(); hole.x = spawnX; hole.y = groundY; hole.speed = -gameSpeed; holes.push(hole); game.addChild(hole); } else if (rand < 0.25) { // Spawn enemy var enemy = new Enemy(); enemy.x = spawnX; enemy.y = groundY; enemy.speed = -gameSpeed; enemies.push(enemy); game.addChild(enemy); } else if (rand < 0.35) { // Spawn obstacle var obstacle = new Obstacle(); obstacle.x = spawnX; obstacle.y = groundY; obstacle.speed = -gameSpeed; obstacles.push(obstacle); game.addChild(obstacle); } else if (rand < 0.45) { // Spawn flying enemy var flyingEnemy = new FlyingEnemy(); flyingEnemy.x = spawnX; flyingEnemy.y = groundY - 350 - Math.random() * 200; flyingEnemy.speed = -gameSpeed; flyingEnemies.push(flyingEnemy); game.addChild(flyingEnemy); } } function checkCollisions() { // Check bullet vs enemy collisions for (var i = bullets.length - 1; i >= 0; i--) { var bullet = bullets[i]; var bulletHit = false; // Check bullet vs ground enemies for (var j = enemies.length - 1; j >= 0; j--) { var enemy = enemies[j]; if (bullet.intersects(enemy)) { // Remove bullet and enemy bullet.destroy(); bullets.splice(i, 1); enemy.destroy(); enemies.splice(j, 1); bulletHit = true; break; } } // Check bullet vs flying enemies if (!bulletHit) { for (var j = flyingEnemies.length - 1; j >= 0; j--) { var flyingEnemy = flyingEnemies[j]; if (bullet.intersects(flyingEnemy)) { // Remove bullet and flying enemy bullet.destroy(); bullets.splice(i, 1); flyingEnemy.destroy(); flyingEnemies.splice(j, 1); break; } } } } // Skip damage collisions if invincible if (!player.isInvincible) { // Check hole collisions - reduced collision area for closer detection for (var i = 0; i < holes.length; i++) { var hole = holes[i]; // Player needs to be much closer to hole center to fall var holeCenterX = hole.x + 200; // Hole center var playerCenterX = player.x; var collisionDistance = 60; // Much smaller collision area if (Math.abs(playerCenterX - holeCenterX) < collisionDistance && !player.isJumping) { gameOver(); return; } } // Check enemy collisions - reduced hitbox for closer collision for (var i = 0; i < enemies.length; i++) { var enemy = enemies[i]; // Check if player is much closer to enemy center var playerCenterX = player.x; var playerCenterY = player.y - 200; // Adjust for player height var enemyCenterX = enemy.x; var enemyCenterY = enemy.y - 200; // Adjust for enemy height // Reduce collision area - player needs to be much closer var collisionDistanceX = 80; // Much smaller than asset width var collisionDistanceY = 100; // Much smaller than asset height if (Math.abs(playerCenterX - enemyCenterX) < collisionDistanceX && Math.abs(playerCenterY - enemyCenterY) < collisionDistanceY) { gameOver(); return; } } // Check flying enemy collisions - reduced hitbox for closer collision for (var i = 0; i < flyingEnemies.length; i++) { var flyingEnemy = flyingEnemies[i]; // Check if player is much closer to flying enemy center var playerCenterX = player.x; var playerCenterY = player.y - 200; // Adjust for player height var flyingEnemyCenterX = flyingEnemy.x; var flyingEnemyCenterY = flyingEnemy.y; // Reduce collision area - player needs to be much closer var collisionDistanceX = 70; // Much smaller than asset width var collisionDistanceY = 90; // Much smaller than asset height if (Math.abs(playerCenterX - flyingEnemyCenterX) < collisionDistanceX && Math.abs(playerCenterY - flyingEnemyCenterY) < collisionDistanceY) { gameOver(); return; } } // Check obstacle collisions - expanded hitbox for easier collision for (var i = 0; i < obstacles.length; i++) { var obstacle = obstacles[i]; // Check if player is closer to obstacle center var playerCenterX = player.x; var playerCenterY = player.y - 200; // Adjust for player height var obstacleCenterX = obstacle.x; var obstacleCenterY = obstacle.y - 150; // Adjust for obstacle height // Expand collision area - player doesn't need to be as close var collisionDistanceX = 120; // Larger collision area than before var collisionDistanceY = 160; // Larger collision area than before if (Math.abs(playerCenterX - obstacleCenterX) < collisionDistanceX && Math.abs(playerCenterY - obstacleCenterY) < collisionDistanceY) { gameOver(); return; } } } } function gameOver() { gameState = 'gameOver'; LK.getSound('hit').play(); LK.getSound('muerte').play(); LK.showGameOver(); } function updateSpeed() { gameSpeed = 8; // Keep speed constant at 8 for (var i = 0; i < groundSegments.length; i++) { groundSegments[i].speed = -gameSpeed; } for (var i = 0; i < holes.length; i++) { holes[i].speed = -gameSpeed; } for (var i = 0; i < enemies.length; i++) { enemies[i].speed = -gameSpeed; } for (var i = 0; i < obstacles.length; i++) { obstacles[i].speed = -gameSpeed; } for (var i = 0; i < flyingEnemies.length; i++) { flyingEnemies[i].speed = -gameSpeed; } // Update bullet speeds to match current game speed for (var i = 0; i < bullets.length; i++) { bullets[i].speed = 15 + gameSpeed; // Base speed + current game speed } } game.down = function (x, y, obj) { if (gameState === 'ready') { // Check character selection clicks if (x > 344 && x < 504 && y > 1120 && y < 1280) { // Character 1 selected selectedCharacter = 'player'; selectionBorder.x = 424; player.setCharacter('player'); return; } else if (x > 644 && x < 804 && y > 1120 && y < 1280) { // Character 2 selected selectedCharacter = 'player2'; selectionBorder.x = 724; player.setCharacter('player2'); return; } else if (x > 944 && x < 1104 && y > 1120 && y < 1280) { // Character 3 selected selectedCharacter = 'player3'; selectionBorder.x = 1024; player.setCharacter('player3'); return; } else if (x > 1244 && x < 1404 && y > 1120 && y < 1280) { // Character 6 selected selectedCharacter = 'player6'; selectionBorder.x = 1324; player.setCharacter('player6'); return; } else if (x > 1544 && x < 1704 && y > 1120 && y < 1280) { // Character 7 selected selectedCharacter = 'player7'; selectionBorder.x = 1624; selectionBorder.y = 1200; player.setCharacter('player7'); return; } // Check play button click if (x > 774 && x < 1274 && y > 1350 && y < 1850) { LK.playMusic('musica'); initializeGame(); return; } } else if (gameState === 'playing') { // Check fire button click (bottom left corner) if (x > 90 && x < 210 && y > 2140 && y < 2260) { // Fire button pressed - shoot bullet if (shootTimer <= 0) { var bullet = new Bullet(); bullet.x = player.x; bullet.y = player.y - 300; // Spawn from top of player // Player always has weapon so bullets are always enhanced bullet.speed = 20; bullet.scaleX = 1.2; bullet.scaleY = 1.2; bullets.push(bullet); game.addChild(bullet); LK.getSound('shoot').play(); shootTimer = 5; // Fast shooting since player always has weapon } } else { // Regular screen tap - jump player.jump(); } } }; game.update = function () { if (gameState === 'playing') { distance += gameSpeed / 10; distanceText.setText(Math.floor(distance) + 'm'); // Speed remains constant throughout the game // Spawn obstacles spawnTimer++; var spawnRate = (120 - Math.min(distance / 15, 50)) * invincibilitySpacing; if (spawnTimer >= spawnRate) { spawnObstacle(); spawnTimer = 0; } // Reset invincibility spacing after effect wears off if (distance - lastInvincibilityTime > 300 && invincibilitySpacing > 1) { invincibilitySpacing = 1; } // Update ground segments - make continuous for (var i = 0; i < groundSegments.length; i++) { var ground = groundSegments[i]; if (ground.x < -200) { // Find the rightmost ground segment var maxX = -1000; for (var j = 0; j < groundSegments.length; j++) { if (groundSegments[j].x > maxX) { maxX = groundSegments[j].x; } } ground.x = maxX + 200; } } // Update and clean up holes for (var i = holes.length - 1; i >= 0; i--) { var hole = holes[i]; if (hole.x < -200) { hole.destroy(); holes.splice(i, 1); } } // Update and clean up enemies for (var i = enemies.length - 1; i >= 0; i--) { var enemy = enemies[i]; if (enemy.x < -100) { enemy.destroy(); enemies.splice(i, 1); } } // Update and clean up obstacles for (var i = obstacles.length - 1; i >= 0; i--) { var obstacle = obstacles[i]; if (obstacle.x < -100) { obstacle.destroy(); obstacles.splice(i, 1); } } // Update and clean up bullets for (var i = bullets.length - 1; i >= 0; i--) { var bullet = bullets[i]; if (bullet.x > 2200) { bullet.destroy(); bullets.splice(i, 1); } } // Update and clean up flying enemies for (var i = flyingEnemies.length - 1; i >= 0; i--) { var flyingEnemy = flyingEnemies[i]; if (flyingEnemy.x < -100) { flyingEnemy.destroy(); flyingEnemies.splice(i, 1); } } // Update shoot timer if (shootTimer > 0) { shootTimer--; } // Check collisions checkCollisions(); // Update score LK.setScore(Math.floor(distance)); // Check win condition if (LK.getScore() >= 5000) { gameState = 'won'; LK.getSound('victoria').play(); LK.showYouWin(); return; } } }; // Add title image at the top of the screen var titleImage = LK.getAsset('titulo', { anchorX: 0.5, anchorY: 0.5 }); titleImage.x = 1024; // Center horizontally titleImage.y = 500; // Position lower on screen titleImage.scaleX = 5; // Scale up for visibility titleImage.scaleY = 5; // Scale up for visibility game.addChild(titleImage); // Show character selection and play button initially game.addChild(character1Button); game.addChild(character2Button); game.addChild(character3Button); game.addChild(character6Button); game.addChild(character7Button); game.addChild(selectionBorder); game.addChild(playButton); ;
===================================================================
--- original.js
+++ change.js
@@ -696,9 +696,9 @@
checkCollisions();
// Update score
LK.setScore(Math.floor(distance));
// Check win condition
- if (LK.getScore() >= 2000) {
+ if (LK.getScore() >= 5000) {
gameState = 'won';
LK.getSound('victoria').play();
LK.showYouWin();
return;
un agujero hecho con pixeles. In-Game asset. 2d. High contrast. No shadows
un mounstro grande hecho con pixeles con perspectiva de lado y mas aterrador In-Game asset. 2d. High contrast. No shadows
un suelo de pasto y tierra hecho con pixeles. In-Game asset. 2d. High contrast. No shadows
una pincho grande hecho con pixeles In-Game asset. 2d. High contrast. No shadows
una bala de pistola 9 milimetros hecha con pixeles con perspectiva lateral. In-Game asset. 2d. High contrast. No shadows
un mounstro con alas hecho con pixeles. In-Game asset. 2d. High contrast. No shadows
un puño agarrando un arma hecho con pixeles y de perspectiva lateral. In-Game asset. 2d. High contrast. No shadows
un boton rojo que en medio dice shot hecho con pixeles. In-Game asset. 2d. High contrast. No shadows
un boton cuadrado hecho con pixeles que dice play. In-Game asset. 2d. High contrast. No shadows
un hombre obrero hecho con pixeles de cuerpo completo sosteniendo un arma
un policia de cuerpo completo hecho con pixeles con persepectiva lateral apuntando con un arma I
un hombre de traje hecho con pixeles de cuerpo completo apuntando con un rifle de asalto m4
goku de dragon ball hecho con pixeles de cuepo completo con perspectiva lateral apuntando don un rifle de asalto m4 In-Game asset. 2d. High contrast. No shadows
homero simpson hecho con pixeles de cuerpo completo con perspectiva lateral apuntando con rifle de asalto m4 I
letras hechas con pixeles que dicen shot and jump las letras shot tendran un estilo medieval y tendran un color gris,las letras and color blanco con contorno negro y las letras jump de color amarillo con contorno naranja