User prompt
apples sometimes interact with players at a great distance, clarify collisions
User prompt
one hit to the head of green apple players removes one health segment. three hits - game over.
User prompt
one hit to the players' heads removes one health segment. three hits, game over.
User prompt
in the upper left corner make a health meter from 3 to 1, when three green apples hit the players - game over
User prompt
show explosion 0.3 seconds
User prompt
increase the lifespan of all apples
User prompt
higher fall rate for all the apples
User prompt
faster player movement speed
User prompt
green apples should bounce slightly on players and fall to the ground
User prompt
show explosion 0.5 seconds
User prompt
Fix Bug: 'TypeError: apples[i].isCaught is not a function' in this line: 'if (apples[i] instanceof BouncingGreenApple && apples[i].isCaught(player, player2)) {' Line Number: 198
User prompt
Fix Bug: 'Uncaught TypeError: Cannot read properties of undefined (reading 'expand')' in this line: 'var BouncingGreenApple = GreenApple.expand(function () {' Line Number: 4
User prompt
green apples should bounce slightly off the players and fall parabolically to the ground
User prompt
green apples should bounce off the players and fall parabolically to the ground
User prompt
green apples should bounce off the players
User prompt
not to show the explosion for green apples.
User prompt
make the area of interaction with players more precise
User prompt
make the player interaction area smaller
User prompt
Fix Bug: 'TypeError: Cannot read properties of undefined (reading 'x')' in this line: 'explosion.show(self.x, self.y);' Line Number: 161
User prompt
after hitting a red apple, show an "explosion" object at this point for 1 second
User prompt
add apple3
User prompt
all apples should be born in the second-highest half of the screen.
User prompt
apples should be born after the second-highest half of the screen.
User prompt
apples should be born in the second-highest half of the screen.
User prompt
apples should be born in the second-highest half of the screen.
/****
* Classes
****/
// Player class
var Player = Container.expand(function () {
var self = Container.call(this);
var playerGraphics = self.createAsset('player', 'Player character', 0.5, 1);
self.speed = 5;
self.targetX = self.x;
self.moveLeft = function () {
if (self.x > self.targetX && self.x > playerGraphics.width / 2) {
self.x -= self.speed;
}
};
self.moveRight = function () {
if (self.x < self.targetX && self.x < 2048 - playerGraphics.width / 2) {
self.x += self.speed;
}
};
});
// Player2 class
var Player2 = Container.expand(function () {
var self = Container.call(this);
var playerGraphics = self.createAsset('player2', 'Alternate player character', 0.5, 1);
self.speed = 5;
self.targetX = self.x;
self.visible = false;
self.moveLeft = function () {
if (self.x > self.targetX && self.x > playerGraphics.width / 2) {
self.x -= self.speed;
}
};
self.moveRight = function () {
if (self.x < self.targetX && self.x < 2048 - playerGraphics.width / 2) {
self.x += self.speed;
}
};
});
// Apple class
var Apple = Container.expand(function () {
var self = Container.call(this);
var appleGraphics = self.createAsset('apple', 'Falling apple', 0.5, 0.5);
self.speed = 3;
self.move = function () {
self.y += self.speed;
};
self.isCaught = function (player, player2) {
var playerHeadY = player.y - player.height / 2;
var player2HeadY = player2.y - player2.height / 2;
var appleBottomY = self.y + self.height / 2;
return self.intersects(player) && appleBottomY < playerHeadY || self.intersects(player2) && appleBottomY < player2HeadY;
};
});
// GreenApple class
var GreenApple = Container.expand(function () {
var self = Container.call(this);
var appleGraphics = self.createAsset('greenApple', 'Falling green apple', 0.5, 0.5);
self.speed = 5;
self.move = function () {
self.y += self.speed;
};
self.isCaught = function (player, player2) {
var playerHeadY = player.y - player.height / 2;
var player2HeadY = player2.y - player2.height / 2;
var appleBottomY = self.y + self.height / 2;
return self.intersects(player) && appleBottomY < playerHeadY || self.intersects(player2) && appleBottomY < player2HeadY;
};
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x000000 // Init game with black background
});
/****
* Game Code
****/
// Initialize second background
var background2 = game.addChild(LK.getAsset('background2', 'Second background', 0, 0));
background2.width = 2048;
background2.height = 2732;
background2.x = 0;
background2.y = 0;
background2.anchor.set(0, 0);
// Initialize backgrounds
var background = game.addChild(LK.getAsset('background', 'Game background', 0, 0));
background.width = 2048;
background.height = 2732;
background.x = 0;
background.y = 0;
background.anchor.set(0, 0);
// Initialize player
var player = game.addChild(new Player());
player.x = 2048 / 2;
player.y = 2732 - 50; // Positioned at the bottom of the screen
// Initialize player2
var player2 = game.addChild(new Player2());
player2.x = 2048 / 2;
player2.y = 2732 - 50; // Positioned at the bottom of the screen, same as player
// Initialize apples array
var apples = [];
// Handle touch movement
function handleTouchMove(obj) {
var touchPos = obj.event.getLocalPosition(game);
player.targetX = touchPos.x;
player2.targetX = touchPos.x;
}
// Attach touch move event to the game
game.on('move', handleTouchMove);
// Game tick event
LK.on('tick', function () {
// Move player towards targetX and control visibility of player and player2
// Only move if the targetX is not directly on the player
if (Math.abs(player.x - player.targetX) > player.width / 2) {
if (player.x < player.targetX) {
player.moveRight();
player2.moveRight();
player.visible = false;
player2.visible = true;
} else if (player.x > player.targetX) {
player.moveLeft();
player2.moveLeft();
player.visible = true;
player2.visible = false;
}
}
// Move apples
for (var i = apples.length - 1; i >= 0; i--) {
apples[i].move();
// Check if apple is caught by the player
if (apples[i].isCaught(player, player2)) {
// Increase score
LK.setScore(LK.getScore() + 1);
// Remove caught apple
apples[i].destroy();
apples.splice(i, 1);
} else if (apples[i].y > 2732) {
// Remove apple if it falls off the screen
apples[i].destroy();
apples.splice(i, 1);
}
}
// Spawn apples less frequently
if (LK.ticks % 120 == 0) {
// Every two seconds
var newApple = Math.random() < 0.5 ? new Apple() : new GreenApple();
newApple.x = Math.random() * 2048;
newApple.y = Math.random() * (2732 / 2 - 50) + 50; // Start in the second-highest half of the screen
apples.push(newApple);
game.addChild(newApple);
}
});
grass
the fields of Britain, cartoon style. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
green apple. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
red apple. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
eureka moment, cartoon style, light, no people. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
heart. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
stars flying on an ellipse, cartoon style, side view , no people. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
white "=" on a green apple.. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
a white "F" on a red apple.. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
the "G" sign on the red apple. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
white " (M" on a red apple. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
a white sign with a small "m" on a red apple.. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
white " /" on a green apple. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
a white "R" on a red apple.. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
green
a white " 2" on a red apple.. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.