User prompt
make an asset for the wallpaper
User prompt
give the background an asset
User prompt
turn the background into a pool table
User prompt
there a shooting too many projectiles, lower the chance of them appearing to 0.5%
User prompt
give the projectiles a bit more speed
User prompt
the projectiles are homing too much
User prompt
make the homing a bit weaker
User prompt
give the projectile a little more speed
User prompt
make the projectiles home towards the snake before disappearing
User prompt
make the food unable to spawn close to the border
User prompt
make the chance of shooting a projectile 1%
User prompt
make the chance of the food shooting a projectile 10%
User prompt
make the chance of the food shooting a projectile 30%
User prompt
make the chance of shooting a projectile smaller
User prompt
make the projectile disappear after 2.5 seconds
User prompt
make the projectile disappear after 4 seconds
User prompt
make the chance of shooting a projectile smaller
User prompt
make the projectile home towards the snake
User prompt
make the projectiles smaller
User prompt
give the food a chance to shoot a lethal projectile towards the snake at a slow speed
User prompt
reduce the speed of the snake to 0.2
User prompt
fix bugs
User prompt
make the snake follow the mouse
User prompt
make the snake grow another segment when colliding with food
User prompt
make the snake grow longer every time it collides with food
/**** * Classes ****/ var SnakeSegment = Container.expand(function () { var self = Container.call(this); var segmentGraphic = self.createAsset('snakeSegment', 'Snake Segment', 0.5, 0.5); self.move = function (x, y) { self.x = x; self.y = y; }; }); var Food = Container.expand(function () { var self = Container.call(this); var foodGraphic = self.createAsset('food', 'Food', 0.5, 0.5); self.projectiles = []; self.shoot = function (targetX, targetY) { var projectile = new Projectile(); projectile.x = self.x; projectile.y = self.y; var directionX = targetX - self.x; var directionY = targetY - self.y; var magnitude = Math.sqrt(directionX * directionX + directionY * directionY); projectile.setDirection(directionX / magnitude, directionY / magnitude); self.projectiles.push(projectile); game.addChild(projectile); LK.setTimeout(function () { projectile.destroy(); var index = self.projectiles.indexOf(projectile); if (index > -1) { self.projectiles.splice(index, 1); } }, 2500); }; self.place = function (x, y) { self.x = x; self.y = y; }; self.moveProjectiles = function () { for (var i = self.projectiles.length - 1; i >= 0; i--) { self.projectiles[i].move(); if (self.projectiles[i].x < 0 || self.projectiles[i].x > 2048 || self.projectiles[i].y < 0 || self.projectiles[i].y > 2732) { self.projectiles[i].destroy(); self.projectiles.splice(i, 1); } } }; }); var Projectile = Container.expand(function () { var self = Container.call(this); var projectileGraphic = self.createAsset('projectile', 'Lethal Projectile', 0.5, 0.5); projectileGraphic.scale.set(0.5); self.speed = 2; self.direction = { x: 0, y: 1 }; self.move = function () { self.x += self.direction.x * self.speed; self.y += self.direction.y * self.speed; }; self.setDirection = function (x, y) { self.direction.x = x; self.direction.y = y; }; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x000000 //Init game with black background }); /**** * Game Code ****/ var snake = []; var food; var direction = { x: 0, y: 0 }; var nextDirection = { x: 0, y: 0 }; var gridSize = 64; var score = 0; var scoreTxt; var isGameOver = false; function initGame() { // Initialize the snake in the center of the screen var initialX = 2048 / 2; var initialY = 2732 / 2; var snakeHead = new SnakeSegment(); snakeHead.move(initialX, initialY); snake.push(snakeHead); game.addChild(snakeHead); // Initialize the food at a random position placeFood(); // Initialize score display scoreTxt = new Text2(score.toString(), { size: 150, fill: "#ffffff" }); scoreTxt.anchor.set(0.5, 0); LK.gui.top.addChild(scoreTxt); // Set initial direction direction = { x: gridSize, y: 0 }; } function placeFood() { var foodX = Math.floor(Math.random() * (2048 / gridSize)) * gridSize + gridSize / 2; var foodY = Math.floor(Math.random() * (2732 / gridSize)) * gridSize + gridSize / 2; if (!food) { food = new Food(); game.addChild(food); } food.place(foodX, foodY); } function updateScore() { score += 1; scoreTxt.setText(score.toString()); } function gameOver() { isGameOver = true; LK.effects.flashScreen(0xff0000, 1000); LK.showGameOver(); } function handleInput(obj) { var touchPos = obj.event.getLocalPosition(game); var head = snake[0]; if (Math.abs(touchPos.x - head.x) > Math.abs(touchPos.y - head.y)) { if (touchPos.x > head.x && direction.x === 0) { nextDirection = { x: gridSize, y: 0 }; } else if (touchPos.x < head.x && direction.x === 0) { nextDirection = { x: -gridSize, y: 0 }; } } else { if (touchPos.y > head.y && direction.y === 0) { nextDirection = { x: 0, y: gridSize }; } else if (touchPos.y < head.y && direction.y === 0) { nextDirection = { x: 0, y: -gridSize }; } } } game.on('down', handleInput); LK.on('tick', function () { if (isGameOver) { return; } // Update direction direction = nextDirection; // Move snake var newX = snake[0].x + direction.x * 0.2; var newY = snake[0].y + direction.y * 0.2; // Check for collisions with walls if (newX < 0 || newX > 2048 || newY < 0 || newY > 2732) { gameOver(); return; } // Check for collisions with self for (var i = 1; i < snake.length; i++) { if (snake[i].x === newX && snake[i].y === newY) { gameOver(); return; } } // Check for food collision if (snake[0].intersects(food)) { var tail = snake[snake.length - 1]; var newSegment1 = new SnakeSegment(); var newSegment2 = new SnakeSegment(); var newSegmentX1 = tail.x - direction.x; var newSegmentY1 = tail.y - direction.y; var newSegmentX2 = newSegmentX1 - direction.x; var newSegmentY2 = newSegmentY1 - direction.y; newSegment1.move(newSegmentX1, newSegmentY1); newSegment2.move(newSegmentX2, newSegmentY2); snake.push(newSegment1); snake.push(newSegment2); game.addChild(newSegment1); game.addChild(newSegment2); updateScore(); placeFood(); } // Move snake segments for (var i = snake.length - 1; i > 0; i--) { snake[i].move(snake[i - 1].x, snake[i - 1].y); } // Move head last snake[0].move(newX, newY); // Food shoots projectiles randomly if (Math.random() < 0.01) { // 1% chance each tick food.shoot(snake[0].x, snake[0].y); } // Move projectiles food.moveProjectiles(); // Check for collisions with projectiles for (var i = 0; i < food.projectiles.length; i++) { if (snake[0].intersects(food.projectiles[i])) { gameOver(); return; } } }); // Start the game initGame();
===================================================================
--- original.js
+++ change.js
@@ -204,10 +204,10 @@
}
// Move head last
snake[0].move(newX, newY);
// Food shoots projectiles randomly
- if (Math.random() < 0.1) {
- // 10% chance each tick
+ if (Math.random() < 0.01) {
+ // 1% chance each tick
food.shoot(snake[0].x, snake[0].y);
}
// Move projectiles
food.moveProjectiles();
a wooden brown chair. In-Game asset. Blank background. High contrast.
a blue apple with a gun. In-Game asset. Blank background. High contrast.
the 8 balls from pool. In-Game asset. Blank background. High contrast.
a table with a gun. In-Game asset. Blank background. High contrast.
a roundsaw. In-Game asset. Blank background. High contrast.