/****
* Classes
****/
//<Assets used in the game will automatically appear here>
//<Write imports for supported plugins here>
// Class for the clickable object
var ClickableObject = Container.expand(function () {
var self = Container.call(this);
var clickableGraphics = self.attachAsset('clickable', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 4,
scaleY: 4
});
// Event handler for when the object is clicked
self.down = function (x, y, obj) {
// Increase score
LK.setScore(LK.getScore() + 1);
scoreTxt.setText(LK.getScore());
// Flash the object to give feedback
LK.effects.flashObject(self, 0xffffff, 100);
// Create a new coin and add it to the game
var coin = game.addChild(new Coin());
coin.x = self.x;
coin.y = self.y;
// Animate the coin dropping into the vase
coin.drop();
};
});
// Class for the coin
var Coin = Container.expand(function () {
var self = Container.call(this);
var coinGraphics = self.attachAsset('Coin', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 0.5,
scaleY: 0.5
});
// Method for the coin dropping animation
self.drop = function () {
var dropInterval = LK.setInterval(function () {
// Calculate the direction vector from the coin to the vase
var dx = vase.x - self.x;
var dy = vase.y - self.y;
var distance = Math.sqrt(dx * dx + dy * dy);
// Normalize the direction vector
dx /= distance;
dy /= distance;
// Move the coin towards the vase
self.x += dx * 40; // Increase the speed of the coin
self.y += dy * 40; // Increase the speed of the coin
// If the coin reaches the vase, clear the interval, destroy the coin and update the score
if (self.intersects(vase)) {
LK.clearInterval(dropInterval);
self.destroy();
LK.setScore(LK.getScore() + 1);
scoreTxt.setText(LK.getScore());
}
}, 50);
};
});
// Class for Person1
var Person1 = Container.expand(function () {
var self = Container.call(this);
var sprites = ['Person1sprite1', 'Person1sprite2', 'Person1sprite3'];
var spriteIndex = 0;
var person1Graphics = self.attachAsset(sprites[spriteIndex], {
anchorX: 0.5,
anchorY: 0.5,
scaleX: clickableObject.width / 100,
scaleY: clickableObject.height / 185.51
});
// Add walk function
self.walk = function () {
// Cycle through the sprites for the walking animation
spriteIndex = (spriteIndex + 1) % sprites.length;
self.attachAsset(sprites[spriteIndex], {
anchorX: 0.5,
anchorY: 0.5,
scaleX: clickableObject.width / 100,
scaleY: clickableObject.height / 185.51
});
};
});
// Class for the Store
var Store = Container.expand(function () {
var self = Container.call(this);
var storeGraphics = self.attachAsset('Store', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 1,
scaleY: 1
});
// Event handler for when the store is clicked
self.down = function (x, y, obj) {
// Increase coin gain
// LK.setCoinGain(LK.getCoinGain() + 1); // Commented out as LK.getCoinGain is not a function
};
});
// Define person1 in the global scope
// Define spriteIndex in the global scope
// Class for UnknownGuy
var UnknownGuy = Container.expand(function () {
var self = Container.call(this);
var sprites = ['unknownguy', 'unknownguysprite2'];
var spriteIndex = 0;
var unknownGuyGraphics = self.attachAsset(sprites[spriteIndex], {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 1,
scaleY: 1
});
// Event handler for when the object is clicked
self.down = function (x, y, obj) {
// Cycle through the sprites for the walking animation
spriteIndex = (spriteIndex + 1) % sprites.length;
unknownGuyGraphics = self.attachAsset(sprites[spriteIndex], {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 1,
scaleY: 1
});
// If the unknown guy opens his jacket, open the store
if (spriteIndex == 1) {
var store = game.addChild(new Store());
store.x = self.x;
store.y = self.y - store.height;
} else {
// Create a new coin and add it to the game
var coin = game.addChild(new Coin());
coin.x = self.x;
coin.y = self.y;
// Animate the coin dropping into the vase
coin.drop();
}
};
// Add walk function
self.walk = function () {
// Cycle through the sprites for the walking animation
spriteIndex = (spriteIndex + 1) % sprites.length;
unknownGuyGraphics = self.attachAsset(sprites[spriteIndex], {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 1,
scaleY: 1
});
};
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x000000 //Init game with black background
});
/****
* Game Code
****/
// Event handler for when the game is clicked
// LK.setCoinGain(1); // Commented out as LK.setCoinGain is not a function
// Initialize coin gain
game.down = function (x, y, obj) {
// Create a new coin and add it to the game
var coin = game.addChild(new Coin());
coin.x = x;
coin.y = y;
// Animate the coin dropping into the vase
coin.drop();
};
game.down = function (x, y, obj) {
// Create a new coin and add it to the game
var coin = game.addChild(new Coin());
coin.x = x;
coin.y = y;
// Animate the coin dropping into the vase
coin.drop();
};
// Define spriteIndex in the global scope
var spriteIndex = 0;
var scoreTxt = new Text2('0', {
size: 150,
fill: 0xFFFFFF
});
scoreTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreTxt);
// Add the Background asset to the game scene
var background = game.addChild(LK.getAsset('Background', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 2048 / 100,
// Scale to fit the screen width
scaleY: 2732 / 100,
// Scale to fit the screen height
x: 2048 / 2,
y: 2732 / 2
}));
// Create the clickable object and position it at the bottom of the screen
var clickableObject = game.addChild(new ClickableObject());
clickableObject.x = 2048 / 2;
clickableObject.y = 2732 - clickableObject.height / 2;
// Add the Vase asset to the game scene
var vase = game.addChild(LK.getAsset('Vase', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 2,
scaleY: 2,
x: clickableObject.x + clickableObject.width + 100,
y: clickableObject.y
}));
// Create UnknownGuy and add it to the game scene
var unknownGuy = game.addChild(new UnknownGuy());
unknownGuy.scaleX = clickableObject.width / unknownGuy.width;
unknownGuy.scaleY = clickableObject.height / unknownGuy.height;
unknownGuy.x = unknownGuy.width / 2;
unknownGuy.y = 2732 - unknownGuy.height / 2;
// Define person1 in the global scope
var person1 = game.addChild(new Person1());
person1.x = 100 / 2;
person1.y = 2732 - person1.height / 2;
// Game update loop
game.update = function () {
// Make Person1 walk every 3 seconds
if (LK.ticks % (3 * 60) == 0) {
person1.walk();
}
// Move Person1 to the right
person1.x += 5;
// Create a new coin and add it to the game only if Person1 is walking and it's the first sprite
if (person1.isWalking && spriteIndex == 0 && LK.ticks % (3 * 60) == 0) {
var coin = game.addChild(new Coin());
coin.x = person1.x;
coin.y = person1.y;
// Animate the coin dropping into the vase
coin.drop();
}
};
// Removed the game.down event handler