User prompt
make a rampage mode happen every 4 seconds, making the food shoot very fast and spikes come out of the wall, make it last 3 seconds
User prompt
make the rampage event happen every 4 seconds
User prompt
make the rampage mode have a chance of happening every 4 seconds
User prompt
make a rampage that can happen, making the food shoot many more projectiles and spikes come out of the wall, and make it last for 5 seconds
User prompt
can you add something random but funny? i want a suprise
User prompt
make it so the snake follows the cursor
User prompt
fix bugs
User prompt
make the projectiles disappear after 3.5 seconds
User prompt
Fix Bug: 'ReferenceError: food is not defined' in this line: 'food.shoot(snake[0].x, snake[0].y);' Line Number: 208
User prompt
Fix Bug: 'ReferenceError: food is not defined' in this line: 'for (var i = 0; i < food.projectiles.length; i++) {' Line Number: 215
User prompt
Fix Bug: 'ReferenceError: food is not defined' in this line: 'food.moveProjectiles();' Line Number: 211
User prompt
make it 2 apples instead of one
User prompt
Fix Bug: 'TypeError: food.moveProjectiles is not a function' in this line: 'food.moveProjectiles();' Line Number: 236
User prompt
Fix Bug: 'TypeError: food.moveProjectiles is not a function' in this line: 'food.moveProjectiles();' Line Number: 227
User prompt
Fix Bug: 'TypeError: Cannot read properties of undefined (reading 'length')' in this line: 'if (food && !food.isDestroyed && food.projectiles.length > 0) {' Line Number: 234
User prompt
Fix Bug: 'TypeError: food.shoot is not a function' in this line: 'food.shoot(snake[0].x, snake[0].y);' Line Number: 231
User prompt
Fix Bug: 'TypeError: Cannot read properties of undefined (reading 'length')' in this line: 'for (var i = 0; i < food.projectiles.length; i++) {' Line Number: 235
User prompt
Fix Bug: 'TypeError: Cannot read properties of undefined (reading 'length')' in this line: 'for (var i = 0; i < food.projectiles.length; i++) {' Line Number: 234
User prompt
Fix Bug: 'TypeError: Cannot read properties of undefined (reading 'length')' in this line: 'for (var i = 0; i < food.projectiles.length; i++) {' Line Number: 234
User prompt
make it so there is a 5% chance to spawn a deceptivefood instead of the regular food
User prompt
fix bug
User prompt
Fix Bug: 'TypeError: food.moveProjectiles is not a function' in this line: 'food.moveProjectiles();' Line Number: 227
User prompt
Fix Bug: 'TypeError: food.moveProjectiles is not a function' in this line: 'food.moveProjectiles();' Line Number: 227
User prompt
make it so there is a chance to spawn another apple that just disappears right before colliding with it
User prompt
make the cursor a magnet for the snake
/****
* Classes
****/
var HomingProjectile = Container.expand(function (target) {
var self = Container.call(this);
var projectileGraphic = self.createAsset('projectile', 'Homing Projectile', 0.5, 0.5);
projectileGraphic.scale.set(0.5);
self.speed = 5;
self.target = target;
self.move = function () {
var directionX = self.target.x - self.x;
var directionY = self.target.y - self.y;
var magnitude = Math.sqrt(directionX * directionX + directionY * directionY);
var homingFactor = 0.5;
self.x += directionX / magnitude * self.speed * homingFactor;
self.y += directionY / magnitude * self.speed * homingFactor;
};
});
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.isRampage = false;
self.rampageTimer = null;
self.shoot = function (targetX, targetY, isRampageShot) {
var projectile = new HomingProjectile(snake[0]);
projectile.x = self.x;
projectile.y = self.y;
self.projectiles.push(projectile);
game.addChild(projectile);
if (!isRampageShot) {
LK.setTimeout(function () {
projectile.destroy();
var index = self.projectiles.indexOf(projectile);
if (index > -1) {
self.projectiles.splice(index, 1);
}
}, 3500);
}
};
self.startRampage = function () {
self.isRampage = true;
self.rampageTimer = LK.setTimeout(function () {
self.isRampage = false;
}, 5000);
};
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 = 4;
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;
};
});
var WallSpike = Container.expand(function () {
var self = Container.call(this);
var spikeGraphic = self.createAsset('wallSpike', 'Wall Spike', 0.5, 0.5);
self.place = function (x, y) {
self.x = x;
self.y = y;
};
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x1F7A1F //Change background color to green for pool table
});
/****
* 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 * 2) / gridSize)) * gridSize + gridSize * 1.5;
var foodY = Math.floor(Math.random() * ((2732 - gridSize * 2) / gridSize)) * gridSize + gridSize * 1.5;
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];
var deltaX = touchPos.x - head.x;
var deltaY = touchPos.y - head.y;
var magnitude = Math.sqrt(deltaX * deltaX + deltaY * deltaY);
nextDirection = {
x: deltaX / magnitude * gridSize,
y: deltaY / magnitude * 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 or in rampage mode
if (food.isRampage) {
for (var i = 0; i < 5; i++) {
food.shoot(snake[0].x, snake[0].y, true);
}
} else if (Math.random() < 0.005) {
// 0.5% chance each tick
food.shoot(snake[0].x, snake[0].y);
}
// Create wall spikes during rampage
if (food.isRampage && LK.ticks % 12 === 0) {
var spike = new WallSpike();
var side = Math.floor(Math.random() * 4);
var position = Math.random() * (side % 2 === 0 ? 2048 : 2732);
switch (side) {
case 0:
// top
spike.place(position, 0);
break;
case 1:
// right
spike.place(2048, position);
break;
case 2:
// bottom
spike.place(position, 2732);
break;
case 3:
// left
spike.place(0, position);
break;
}
game.addChild(spike);
LK.setTimeout(function () {
spike.destroy();
}, 5000);
}
// 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
@@ -27,22 +27,32 @@
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) {
+ self.isRampage = false;
+ self.rampageTimer = null;
+ self.shoot = function (targetX, targetY, isRampageShot) {
var projectile = new HomingProjectile(snake[0]);
projectile.x = self.x;
projectile.y = self.y;
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);
- }
- }, 3500);
+ if (!isRampageShot) {
+ LK.setTimeout(function () {
+ projectile.destroy();
+ var index = self.projectiles.indexOf(projectile);
+ if (index > -1) {
+ self.projectiles.splice(index, 1);
+ }
+ }, 3500);
+ }
};
+ self.startRampage = function () {
+ self.isRampage = true;
+ self.rampageTimer = LK.setTimeout(function () {
+ self.isRampage = false;
+ }, 5000);
+ };
self.place = function (x, y) {
self.x = x;
self.y = y;
};
@@ -73,8 +83,16 @@
self.direction.x = x;
self.direction.y = y;
};
});
+var WallSpike = Container.expand(function () {
+ var self = Container.call(this);
+ var spikeGraphic = self.createAsset('wallSpike', 'Wall Spike', 0.5, 0.5);
+ self.place = function (x, y) {
+ self.x = x;
+ self.y = y;
+ };
+});
/****
* Initialize Game
****/
@@ -196,13 +214,45 @@
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.005) {
+ // Food shoots projectiles randomly or in rampage mode
+ if (food.isRampage) {
+ for (var i = 0; i < 5; i++) {
+ food.shoot(snake[0].x, snake[0].y, true);
+ }
+ } else if (Math.random() < 0.005) {
// 0.5% chance each tick
food.shoot(snake[0].x, snake[0].y);
}
+ // Create wall spikes during rampage
+ if (food.isRampage && LK.ticks % 12 === 0) {
+ var spike = new WallSpike();
+ var side = Math.floor(Math.random() * 4);
+ var position = Math.random() * (side % 2 === 0 ? 2048 : 2732);
+ switch (side) {
+ case 0:
+ // top
+ spike.place(position, 0);
+ break;
+ case 1:
+ // right
+ spike.place(2048, position);
+ break;
+ case 2:
+ // bottom
+ spike.place(position, 2732);
+ break;
+ case 3:
+ // left
+ spike.place(0, position);
+ break;
+ }
+ game.addChild(spike);
+ LK.setTimeout(function () {
+ spike.destroy();
+ }, 5000);
+ }
// Move projectiles
food.moveProjectiles();
// Check for collisions with projectiles
for (var i = 0; i < food.projectiles.length; i++) {
@@ -211,24 +261,6 @@
return;
}
}
});
-var discoModeInterval;
-function startDiscoMode() {
- var flashyColors = [0xFF00FF, 0x00FFFF, 0xFFFF00, 0xFF69B4, 0x8A2BE2];
- discoModeInterval = LK.setInterval(function () {
- var randomColorIndex = Math.floor(Math.random() * flashyColors.length);
- game.setBackgroundColor(flashyColors[randomColorIndex]);
- }, 2000);
-}
-function stopDiscoMode() {
- LK.clearInterval(discoModeInterval);
- game.setBackgroundColor(0x1F7A1F); // Reset to original green background
-}
// Start the game
-initGame();
-// Start Disco Mode randomly with a 10% chance when the game starts
-if (Math.random() < 0.1) {
- startDiscoMode();
- // Stop Disco Mode after 10 seconds
- LK.setTimeout(stopDiscoMode, 10000);
-}
\ No newline at end of file
+initGame();
\ No newline at end of file
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.