/****
* Classes
****/
// Class for the fire balls
var FireBall = Container.expand(function () {
var self = Container.call(this);
var fireBallGraphics = self.attachAsset('fireBall', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = -5;
self.update = function () {
self.y += self.speed;
};
});
// Class for the fire power ups
var FirePowerUp = Container.expand(function () {
var self = Container.call(this);
var firePowerUpGraphics = self.attachAsset('firePowerUp', {
anchorX: 0.5,
anchorY: 0.5
});
self.update = function () {
// Add any update logic for the fire power up here
};
});
// Class for the hoops
var Hoop = Container.expand(function () {
var self = Container.call(this);
var hoopGraphics = self.attachAsset('hoop', {
anchorX: 0.5,
anchorY: 0.5
});
self.update = function () {
// Add any update logic for the hoop here
};
});
// Class for the mushroom power ups
var Mushroom = Container.expand(function () {
var self = Container.call(this);
var mushroomGraphics = self.attachAsset('mushroom', {
anchorX: 0.5,
anchorY: 0.5
});
self.update = function () {
// Add any update logic for the mushroom here
};
});
// Class for obstacles
var Obstacle = Container.expand(function () {
var self = Container.call(this);
var obstacleGraphics = self.attachAsset('obstacle', {
anchorX: 0.5,
anchorY: 0.5
});
self.update = function () {
// Add any update logic for the obstacle here
};
});
//<Assets used in the game will automatically appear here>
// Class for the slimy ball controlled by the player
var SlimyBall = Container.expand(function () {
var self = Container.call(this);
var ballGraphics = self.attachAsset('slimyBall', {
anchorX: 0.5,
anchorY: 0.5
});
self.update = function () {
// Add any update logic for the slimy ball here
};
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x000000 //Init game with a black background
});
/****
* Game Code
****/
// Initialize arrays and variables
var hoops = [];
var obstacles = [];
var mushrooms = [];
var firePowerUps = [];
var fireBalls = [];
var fireBallPowerUp = false;
var extraLife = false;
var score = 0;
var scoreTxt = new Text2('0', {
size: 150,
fill: "#ffffff"
});
scoreTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreTxt);
// Initialize joystick position
var joystickX = 2048 / 2;
var joystickY = 2732 - 200;
// Create the slimy ball and position it
var slimyBall = game.addChild(new SlimyBall());
slimyBall.x = 2048 / 2;
slimyBall.y = 2732 - 200;
// Function to handle move events
function handleMove(x, y, obj) {
joystickX = x;
joystickY = y;
}
// Function to handle scoring
function handleScoring() {
for (var i = hoops.length - 1; i >= 0; i--) {
if (slimyBall.intersects(hoops[i])) {
score += 1;
scoreTxt.setText(score);
hoops[i].destroy();
hoops.splice(i, 1);
}
}
}
// Function to handle obstacles
function handleObstacles() {
for (var i = obstacles.length - 1; i >= 0; i--) {
if (slimyBall.intersects(obstacles[i])) {
if (extraLife) {
extraLife = false;
obstacles[i].destroy();
obstacles.splice(i, 1);
} else {
LK.effects.flashScreen(0xff0000, 1000);
LK.showGameOver();
}
}
}
}
// Create hoops, obstacles and mushrooms at intervals
var hoopInterval = LK.setInterval(function () {
var newHoop = new Hoop();
newHoop.x = Math.random() * 2048;
newHoop.y = -100;
hoops.push(newHoop);
game.addChild(newHoop);
}, 2000);
var obstacleInterval = LK.setInterval(function () {
var newObstacle = new Obstacle();
newObstacle.x = Math.random() * 2048;
newObstacle.y = -100;
obstacles.push(newObstacle);
game.addChild(newObstacle);
}, 3000);
var mushroomInterval = LK.setInterval(function () {
var newMushroom = new Mushroom();
newMushroom.x = Math.random() * 2048;
newMushroom.y = -100;
mushrooms.push(newMushroom);
game.addChild(newMushroom);
}, 5000);
var firePowerUpInterval = LK.setInterval(function () {
var newFirePowerUp = new FirePowerUp();
newFirePowerUp.x = Math.random() * 2048;
newFirePowerUp.y = -100;
firePowerUps.push(newFirePowerUp);
game.addChild(newFirePowerUp);
}, 7000);
// Update function called every game tick
game.update = function () {
// Move the slimy ball based on the joystick position
slimyBall.x += (joystickX - slimyBall.x) * 0.1;
slimyBall.y += (joystickY - slimyBall.y) * 0.1;
handleScoring();
handleObstacles();
for (var i = hoops.length - 1; i >= 0; i--) {
hoops[i].y += 5;
if (hoops[i].y > 2732) {
hoops[i].destroy();
hoops.splice(i, 1);
}
}
for (var i = obstacles.length - 1; i >= 0; i--) {
obstacles[i].y += 5;
if (obstacles[i].y > 2732) {
obstacles[i].destroy();
obstacles.splice(i, 1);
}
}
for (var i = firePowerUps.length - 1; i >= 0; i--) {
firePowerUps[i].y += 5;
if (firePowerUps[i].y > 2732) {
firePowerUps[i].destroy();
firePowerUps.splice(i, 1);
}
if (slimyBall.intersects(firePowerUps[i])) {
firePowerUps[i].destroy();
firePowerUps.splice(i, 1);
fireBallPowerUp = true;
}
}
for (var i = mushrooms.length - 1; i >= 0; i--) {
mushrooms[i].y += 5;
if (mushrooms[i].y > 2732) {
mushrooms[i].destroy();
mushrooms.splice(i, 1);
}
if (slimyBall.intersects(mushrooms[i])) {
mushrooms[i].destroy();
mushrooms.splice(i, 1);
extraLife = true;
}
}
for (var i = fireBalls.length - 1; i >= 0; i--) {
fireBalls[i].y -= 5;
if (fireBalls[i].y < 0) {
fireBalls[i].destroy();
fireBalls.splice(i, 1);
}
for (var j = obstacles.length - 1; j >= 0; j--) {
if (fireBalls[i] && fireBalls[i].intersects(obstacles[j])) {
fireBalls[i].destroy();
fireBalls.splice(i, 1);
obstacles[j].destroy();
obstacles.splice(j, 1);
break;
}
}
}
};
// Event listeners for touch/mouse events
game.move = handleMove;
var tapCount = 0;
game.down = function (x, y, obj) {
handleMove(x, y, obj);
if (fireBallPowerUp) {
tapCount++;
if (tapCount == 2) {
var newFireBall = new FireBall();
newFireBall.x = slimyBall.x;
newFireBall.y = slimyBall.y;
fireBalls.push(newFireBall);
game.addChild(newFireBall);
tapCount = 0;
}
}
};
game.up = function (x, y, obj) {
// No action needed on up event for now
};
3-D slime Person. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Skull. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Basketball. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Fireball. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Mario mushroom. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.