User prompt
Make player movement able to be controlled by clicking on either side of the screen
User prompt
Delete arrows
User prompt
Make block_obstacles move at random speeds
User prompt
Make arrows completely see-through
User prompt
Make arrows always transparent
User prompt
Do not let arrows be in the same line as the player
User prompt
Make arrows transparent to the player when they are held too
User prompt
Make arrows transparent to the player
User prompt
Display player through arrows
User prompt
Make arrows longer, starting directly above the player
User prompt
Arrows are displayed everywhere above the player
User prompt
Arrows extend up
User prompt
Make arrows cover everywhere above the player
User prompt
Steadily increase speed as the game goes on
User prompt
Make block_obstacle more frequent
User prompt
Increase block_obstacle speed
User prompt
Change Game Over display to green
User prompt
Undo
User prompt
Add a section counting the number of games
User prompt
Add block obstacles
User prompt
Add left and right arrows to hold and move
User prompt
Delete large and small obstacles
User prompt
Make some obstacles larger and some obstacles smaller
User prompt
Make obstacles more frequent
User prompt
When game starts, add a stopwatch
/**** * Classes ****/ // Player class var Player = Container.expand(function () { var self = Container.call(this); var playerGraphics = self.createAsset('player', 'Player character', 0.5, 0.5); self.speed = 5; self.moveLeft = function () { self.x = Math.max(self.width / 2, self.x - self.speed); }; self.moveRight = function () { self.x = Math.min(2048 - self.width / 2, self.x + self.speed); }; self.update = function () { // Player update logic }; }); // Arrow class var Arrow = Container.expand(function (direction) { var self = Container.call(this); var arrowGraphics = self.createAsset('arrow_' + direction, 'Arrow for ' + direction + ' movement', 0.5, 0.5); self.direction = direction; self.on('down', function () { self.isHeld = true; }); self.on('up', function () { self.isHeld = false; }); self.on('out', function () { self.isHeld = false; }); self.update = function (player) { if (self.isHeld) { if (self.direction === 'left') { player.moveLeft(); } else if (self.direction === 'right') { player.moveRight(); } } }; }); // Stopwatch class var Stopwatch = Container.expand(function () { var self = Container.call(this); var timeText = new Text2('00:00', { size: 100, fill: '#ffffff' }); timeText.anchor.set(0.5, 0); LK.gui.top.addChild(timeText); var startTime = Date.now(); self.updateTime = function () { var elapsed = Date.now() - startTime; var minutes = Math.floor(elapsed / 60000).toString().padStart(2, '0'); var seconds = (Math.floor(elapsed / 1000) % 60).toString().padStart(2, '0'); timeText.setText(minutes + ':' + seconds); }; }); // BlockObstacle class var BlockObstacle = Container.expand(function () { var self = Container.call(this); var obstacleGraphics = self.createAsset('block_obstacle', 'Block obstacle', 0.5, 1); self.speed = 5; self.move = function () { self.y += self.speed; }; }); // GameStats class to keep track of game statistics var GameStats = Container.expand(function () { var self = Container.call(this); self.gamesPlayed = 0; self.incrementGamesPlayed = function () { self.gamesPlayed++; }; self.getGamesPlayed = function () { return self.gamesPlayed; }; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x000000 // Init game with black background }); /**** * Game Code ****/ // Game variables var player = game.addChild(new Player()); player.x = 1024; // Center of the screen player.y = 2732 - 100; // Near the bottom of the screen var obstacles = []; var isGameOver = false; var gameStats = game.addChild(new GameStats()); var stopwatch = game.addChild(new Stopwatch()); // Create left and right arrow objects var leftArrow = game.addChild(new Arrow('left')); leftArrow.x = leftArrow.width / 2; leftArrow.y = 2732 - leftArrow.height; var rightArrow = game.addChild(new Arrow('right')); rightArrow.x = 2048 - rightArrow.width / 2; rightArrow.y = 2732 - rightArrow.height; // Touch event handlers // Add touch event listener to the game // Game tick event LK.on('tick', function () { if (isGameOver) { LK.effects.flashScreen(0x00ff00, 1000); LK.showGameOver(); return; } // Update player and arrows player.update(); leftArrow.update(player); rightArrow.update(player); stopwatch.updateTime(); // Generate obstacles if (LK.ticks % 60 == 0) { // Every 1 second var newObstacle = new BlockObstacle(); newObstacle.x = Math.random() * (2048 - newObstacle.width) + newObstacle.width / 2; newObstacle.y = -newObstacle.height; obstacles.push(newObstacle); game.addChild(newObstacle); } // Move obstacles and check for collisions for (var i = obstacles.length - 1; i >= 0; i--) { obstacles[i].move(); if (obstacles[i].y > 2732) { obstacles[i].destroy(); obstacles.splice(i, 1); } else if (player.intersects(obstacles[i])) { isGameOver = true; gameStats.incrementGamesPlayed(); } } });
===================================================================
--- original.js
+++ change.js
@@ -121,10 +121,10 @@
rightArrow.update(player);
stopwatch.updateTime();
// Generate obstacles
- if (LK.ticks % 120 == 0) {
- // Every 2 seconds
+ if (LK.ticks % 60 == 0) {
+ // Every 1 second
var newObstacle = new BlockObstacle();
newObstacle.x = Math.random() * (2048 - newObstacle.width) + newObstacle.width / 2;
newObstacle.y = -newObstacle.height;
obstacles.push(newObstacle);