/****
* Classes
****/
// Define the CloseRangeMonster class
var CloseRangeMonster = Container.expand(function () {
var self = Container.call(this);
var monsterGraphics = self.attachAsset('monster', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 2,
scaleY: 2
});
self.speed = 3;
self.update = function () {
// Close range monster update logic
};
});
var Ghost = Container.expand(function () {
var self = Container.call(this);
var ghostGraphics = self.attachAsset('ghost', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 2,
scaleY: 2
});
self.speed = 3;
self.update = function () {
// Ghost update logic
};
});
var LongRangeMonster = Container.expand(function () {
var self = Container.call(this);
var monsterGraphics = self.attachAsset('monster', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 2,
scaleY: 2
});
self.speed = 2;
self.update = function () {
// Long range monster update logic
};
});
var Player = Container.expand(function () {
var self = Container.call(this);
var playerGraphics = self.attachAsset('player', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 2,
scaleY: 2
});
self.speed = 5;
self.weapon = new Weapon(); // Add a weapon property for the player
self.life = 100; // Add a life property for the player
self.superPower = false; // Add a super power property for the player
self.healthBar = LK.getAsset('healthBar', {
// Add a health bar for the player
anchorX: 0.5,
anchorY: 0.5,
scaleX: 2,
scaleY: 2
});
self.addChild(self.healthBar);
self.update = function () {
// Player update logic
if (self.weapon) {
self.weapon.update();
// Check if the weapon intersects with any monster
closeRangeMonsters.forEach(function (monster) {
if (self.weapon.intersects(monster)) {
// Decrease monster's life
monster.life -= self.weapon.damage;
// If monster's life is less than or equal to 0, remove the monster
if (monster.life <= 0) {
game.removeChild(monster);
var index = closeRangeMonsters.indexOf(monster);
if (index > -1) {
closeRangeMonsters.splice(index, 1);
}
}
}
});
longRangeMonsters.forEach(function (monster) {
if (self.weapon.intersects(monster)) {
// Decrease monster's life
monster.life -= self.weapon.damage;
// If monster's life is less than or equal to 0, remove the monster
if (monster.life <= 0) {
game.removeChild(monster);
var index = longRangeMonsters.indexOf(monster);
if (index > -1) {
longRangeMonsters.splice(index, 1);
}
}
}
});
}
self.healthBar.scaleX = self.life / 100; // Update the health bar according to the player's life
if (self.superPower) {
// Super power logic
}
};
});
// Define the Puzzle class
var Puzzle = Container.expand(function () {
var self = Container.call(this);
var puzzleGraphics = self.attachAsset('puzzle', {
anchorX: 0.5,
anchorY: 0.5
});
self.solved = false;
self.solve = function () {
self.solved = true;
// Puzzle solve logic
};
});
// Define the Weapon class
var Weapon = Container.expand(function () {
var self = Container.call(this);
self.damage = 10; // Damage that the weapon can cause
self.update = function () {
// Weapon update logic
};
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x000000 //Init game with black background
});
/****
* Game Code
****/
var background = game.addChild(LK.getAsset('background', {
anchorX: 0.0,
anchorY: 0.0,
x: 0,
y: 0
}));
// Play the terrible song
LK.playMusic('terribleSong', {
loop: true
});
// Initialize maze
var maze = LK.getAsset('maze', {
anchorX: 0.0,
anchorY: 0.0,
x: 0,
y: 0
});
game.addChild(maze);
// Define maze boundaries
var mazeBoundaries = {
left: 100,
right: 1948,
top: 100,
bottom: 2632
};
// Check if player exits the maze
function checkPlayerExit() {
if (player.x > mazeBoundaries.right || player.x < mazeBoundaries.left || player.y > mazeBoundaries.bottom || player.y < mazeBoundaries.top) {
LK.showGameOver(); // Using showGameOver as a placeholder for win screen
}
}
var emptyItems = [];
var player = game.addChild(new Player());
player.x = 1024; // Center horizontally
player.y = 1366; // Center vertically
for (var i = 0; i < 5; i++) {
var emptyItem = LK.getAsset('emptyItem', {
anchorX: 0.5,
anchorY: 0.5,
x: Math.random() * 2048,
y: Math.random() * 2732
});
emptyItems.push(emptyItem);
game.addChild(emptyItem);
}
// Check if player exits the maze
checkPlayerExit();
var closeRangeMonsters = [];
for (var i = 0; i < 1; i++) {
var closeRangeMonster = new CloseRangeMonster();
closeRangeMonster.x = Math.random() * 2048;
closeRangeMonster.y = Math.random() * 2732;
closeRangeMonsters.push(closeRangeMonster);
game.addChild(closeRangeMonster);
}
var longRangeMonsters = [];
for (var i = 0; i < 2; i++) {
var longRangeMonster = new LongRangeMonster();
longRangeMonster.x = Math.random() * 2048;
longRangeMonster.y = Math.random() * 2732;
longRangeMonsters.push(longRangeMonster);
game.addChild(longRangeMonster);
}
var puzzles = [];
for (var i = 0; i < 3; i++) {
var puzzle = new Puzzle();
puzzle.x = Math.random() * 2048;
puzzle.y = Math.random() * 2732;
puzzles.push(puzzle);
game.addChild(puzzle);
}
// Handle player movement
game.down = function (x, y, obj) {
var targetX = x;
var targetY = y;
var angle = Math.atan2(targetY - player.y, targetX - player.x);
player.vx = player.speed * Math.cos(angle);
player.vy = player.speed * Math.sin(angle);
};
game.up = function (x, y, obj) {
player.vx = 0;
player.vy = 0;
};
// Update game logic
game.update = function () {
// Update player position
player.x += player.vx;
player.y += player.vy;
// Increase player speed every 10 seconds
if (LK.ticks % 600 == 0) {
player.speed += 1;
}
// Check if player exits the maze
checkPlayerExit();
// Update ghosts
closeRangeMonsters.forEach(function (monster) {
var angle = Math.atan2(player.y - monster.y, player.x - monster.x);
monster.x += monster.speed * Math.cos(angle);
monster.y += monster.speed * Math.sin(angle);
// Check collision with player
if (player.intersects(monster)) {
LK.effects.flashScreen(0xff0000, 1000);
LK.showGameOver();
}
});
longRangeMonsters.forEach(function (monster) {
var angle = Math.atan2(player.y - monster.y, player.x - monster.x);
monster.x += monster.speed * Math.cos(angle);
monster.y += monster.speed * Math.sin(angle);
// Check collision with player
if (player.intersects(monster)) {
LK.effects.flashScreen(0xff0000, 1000);
LK.showGameOver();
}
});
// Check puzzles
puzzles.forEach(function (puzzle) {
if (!puzzle.solved && player.intersects(puzzle)) {
puzzle.solve();
// Update score or game state
}
});
}; /****
* Classes
****/
// Define the CloseRangeMonster class
var CloseRangeMonster = Container.expand(function () {
var self = Container.call(this);
var monsterGraphics = self.attachAsset('monster', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 2,
scaleY: 2
});
self.speed = 3;
self.update = function () {
// Close range monster update logic
};
});
var Ghost = Container.expand(function () {
var self = Container.call(this);
var ghostGraphics = self.attachAsset('ghost', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 2,
scaleY: 2
});
self.speed = 3;
self.update = function () {
// Ghost update logic
};
});
var LongRangeMonster = Container.expand(function () {
var self = Container.call(this);
var monsterGraphics = self.attachAsset('monster', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 2,
scaleY: 2
});
self.speed = 2;
self.update = function () {
// Long range monster update logic
};
});
var Player = Container.expand(function () {
var self = Container.call(this);
var playerGraphics = self.attachAsset('player', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 2,
scaleY: 2
});
self.speed = 5;
self.weapon = new Weapon(); // Add a weapon property for the player
self.life = 100; // Add a life property for the player
self.superPower = false; // Add a super power property for the player
self.healthBar = LK.getAsset('healthBar', {
// Add a health bar for the player
anchorX: 0.5,
anchorY: 0.5,
scaleX: 2,
scaleY: 2
});
self.addChild(self.healthBar);
self.update = function () {
// Player update logic
if (self.weapon) {
self.weapon.update();
// Check if the weapon intersects with any monster
closeRangeMonsters.forEach(function (monster) {
if (self.weapon.intersects(monster)) {
// Decrease monster's life
monster.life -= self.weapon.damage;
// If monster's life is less than or equal to 0, remove the monster
if (monster.life <= 0) {
game.removeChild(monster);
var index = closeRangeMonsters.indexOf(monster);
if (index > -1) {
closeRangeMonsters.splice(index, 1);
}
}
}
});
longRangeMonsters.forEach(function (monster) {
if (self.weapon.intersects(monster)) {
// Decrease monster's life
monster.life -= self.weapon.damage;
// If monster's life is less than or equal to 0, remove the monster
if (monster.life <= 0) {
game.removeChild(monster);
var index = longRangeMonsters.indexOf(monster);
if (index > -1) {
longRangeMonsters.splice(index, 1);
}
}
}
});
}
self.healthBar.scaleX = self.life / 100; // Update the health bar according to the player's life
if (self.superPower) {
// Super power logic
}
};
});
// Define the Puzzle class
var Puzzle = Container.expand(function () {
var self = Container.call(this);
var puzzleGraphics = self.attachAsset('puzzle', {
anchorX: 0.5,
anchorY: 0.5
});
self.solved = false;
self.solve = function () {
self.solved = true;
// Puzzle solve logic
};
});
// Define the Weapon class
var Weapon = Container.expand(function () {
var self = Container.call(this);
self.damage = 10; // Damage that the weapon can cause
self.update = function () {
// Weapon update logic
};
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x000000 //Init game with black background
});
/****
* Game Code
****/
var background = game.addChild(LK.getAsset('background', {
anchorX: 0.0,
anchorY: 0.0,
x: 0,
y: 0
}));
// Play the terrible song
LK.playMusic('terribleSong', {
loop: true
});
// Initialize maze
var maze = LK.getAsset('maze', {
anchorX: 0.0,
anchorY: 0.0,
x: 0,
y: 0
});
game.addChild(maze);
// Define maze boundaries
var mazeBoundaries = {
left: 100,
right: 1948,
top: 100,
bottom: 2632
};
// Check if player exits the maze
function checkPlayerExit() {
if (player.x > mazeBoundaries.right || player.x < mazeBoundaries.left || player.y > mazeBoundaries.bottom || player.y < mazeBoundaries.top) {
LK.showGameOver(); // Using showGameOver as a placeholder for win screen
}
}
var emptyItems = [];
var player = game.addChild(new Player());
player.x = 1024; // Center horizontally
player.y = 1366; // Center vertically
for (var i = 0; i < 5; i++) {
var emptyItem = LK.getAsset('emptyItem', {
anchorX: 0.5,
anchorY: 0.5,
x: Math.random() * 2048,
y: Math.random() * 2732
});
emptyItems.push(emptyItem);
game.addChild(emptyItem);
}
// Check if player exits the maze
checkPlayerExit();
var closeRangeMonsters = [];
for (var i = 0; i < 1; i++) {
var closeRangeMonster = new CloseRangeMonster();
closeRangeMonster.x = Math.random() * 2048;
closeRangeMonster.y = Math.random() * 2732;
closeRangeMonsters.push(closeRangeMonster);
game.addChild(closeRangeMonster);
}
var longRangeMonsters = [];
for (var i = 0; i < 2; i++) {
var longRangeMonster = new LongRangeMonster();
longRangeMonster.x = Math.random() * 2048;
longRangeMonster.y = Math.random() * 2732;
longRangeMonsters.push(longRangeMonster);
game.addChild(longRangeMonster);
}
var puzzles = [];
for (var i = 0; i < 3; i++) {
var puzzle = new Puzzle();
puzzle.x = Math.random() * 2048;
puzzle.y = Math.random() * 2732;
puzzles.push(puzzle);
game.addChild(puzzle);
}
// Handle player movement
game.down = function (x, y, obj) {
var targetX = x;
var targetY = y;
var angle = Math.atan2(targetY - player.y, targetX - player.x);
player.vx = player.speed * Math.cos(angle);
player.vy = player.speed * Math.sin(angle);
};
game.up = function (x, y, obj) {
player.vx = 0;
player.vy = 0;
};
// Update game logic
game.update = function () {
// Update player position
player.x += player.vx;
player.y += player.vy;
// Increase player speed every 10 seconds
if (LK.ticks % 600 == 0) {
player.speed += 1;
}
// Check if player exits the maze
checkPlayerExit();
// Update ghosts
closeRangeMonsters.forEach(function (monster) {
var angle = Math.atan2(player.y - monster.y, player.x - monster.x);
monster.x += monster.speed * Math.cos(angle);
monster.y += monster.speed * Math.sin(angle);
// Check collision with player
if (player.intersects(monster)) {
LK.effects.flashScreen(0xff0000, 1000);
LK.showGameOver();
}
});
longRangeMonsters.forEach(function (monster) {
var angle = Math.atan2(player.y - monster.y, player.x - monster.x);
monster.x += monster.speed * Math.cos(angle);
monster.y += monster.speed * Math.sin(angle);
// Check collision with player
if (player.intersects(monster)) {
LK.effects.flashScreen(0xff0000, 1000);
LK.showGameOver();
}
});
// Check puzzles
puzzles.forEach(function (puzzle) {
if (!puzzle.solved && player.intersects(puzzle)) {
puzzle.solve();
// Update score or game state
}
});
};