/****
* Classes
****/
// Prevent cloning
var ChocolateBar = Container.expand(function () {
var self = Container.call(this);
var chocolateGraphics = self.attachAsset('chocolateBar', {
anchorX: 0.5,
anchorY: 0.5
});
self.draggable = false;
self.on('down', function () {
dragNode = self;
self.melt();
});
self.melt = function () {
if (this.x >= fryingPan.x - fryingPan.width / 2 && this.x <= fryingPan.x + fryingPan.width / 2 && this.y >= fryingPan.y - fryingPan.height / 2 && this.y <= fryingPan.y + fryingPan.height / 2 && !meltedChocolateBars.includes(this)) {
meltedChocolateBars.push(this);
LK.setScore(LK.getScore() + 1);
}
};
});
var FinishedHeart = Container.expand(function () {
var self = Container.call(this);
var finishedHeartGraphics = self.attachAsset('finishedHeart', {
anchorX: 0.5,
anchorY: 0.5
});
});
var FryingPan = Container.expand(function () {
var self = Container.call(this);
var fryingPanGraphics = self.attachAsset('fryingPan', {
anchorX: 0.5,
anchorY: 0.5
});
self.chocolateCount = 0;
/*self.update = function () {
// Check if any ChocolateBar is in contact
chocolateBars.forEach(function (bar) {
if (bar.x >= self.x - self.width / 2 && bar.x <= self.x + self.width / 2 && bar.y >= self.y - self.height / 2 && bar.y <= self.y + self.height / 2) {
// Increase score by 1
LK.setScore(LK.getScore() + 1);
// Optionally, make the chocolate bar disappear or move it away
}
});
};*/
});
var FryingPanChoco = Container.expand(function () {
var self = Container.call(this);
var fryingPanChocoGraphics = self.attachAsset('fryingPanChoco', {
anchorX: 0,
anchorY: 0
});
self.draggable = true;
self.on('down', function () {
dragNode = self;
});
});
var HeartMold = Container.expand(function () {
var self = Container.call(this);
var moldGraphics = self.attachAsset('heartMold', {
anchorX: 0.5,
anchorY: 0.5
});
self.fill = function () {
// Filling logic will be implemented here
};
});
var HearthMoldChoco = Container.expand(function () {
var self = Container.call(this);
var hearthMoldChocoGraphics = self.attachAsset('hearthMoldChoco', {
anchorX: 0.5,
anchorY: 0.5
});
self.draggable = true;
self.on('down', function () {
if (dragNode == null) {
dragNode = self;
}
});
self.on('up', function () {
dragNode = null;
});
self.on('move', function (obj) {
if (dragNode == self) {
var pos = obj.event.getLocalPosition(game);
self.x = pos.x - self.width / 2;
self.y = pos.y - self.height / 2;
}
});
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x8B4513 // Chocolate brown background
});
/****
* Game Code
****/
// Prevent cloning
var finishedHeart = null;
var oven = game.addChild(LK.getAsset('oven', {
anchorX: 0.5,
anchorY: 0.5
}));
oven.x = game.width / 2;
oven.y = game.height / 2;
oven.visible = false;
LK.on('tick', function () {
if (fryingPanChoco.intersects(heartMold) && !hearthMoldChoco) {
hearthMoldChoco = game.addChild(new HearthMoldChoco());
hearthMoldChoco.x = heartMold.x;
hearthMoldChoco.y = heartMold.y;
fryingPanChoco.visible = false;
fryingPanChoco.x = -1000; // move it out of the screen
fryingPanChoco.destroy(); // destroy fryingPanChoco
oven.visible = true;
}
if (hearthMoldChoco && hearthMoldChoco.intersects(oven) && dragNode == hearthMoldChoco) {
LK.setTimeout(function () {
game.children.forEach(function (child) {
if (child !== scoreText && child !== finishedHeart) {
child.visible = false;
}
});
finishedHeart = game.addChild(new FinishedHeart());
finishedHeart.x = game.width / 2;
finishedHeart.y = game.height / 2;
finishedHeart.visible = true;
LK.setTimeout(function () {
LK.showGameOver();
}, 2000);
}, 1000); // Delay before hiding everything
}
});
var meltedChocolateBars = [];
var hearthMoldChoco = null;
LK.on('tick', function () {
scoreText.setText('Score: ' + LK.getScore());
});
var dragNode = null;
var chocolateBars = [];
var heartMold = game.addChild(new HeartMold());
heartMold.x = game.width / 2;
heartMold.y = game.height - heartMold.height / 2;
var finishedHearts = [];
// Event listener for moving the chocolate bars
game.on('move', function (obj) {
var pos = obj.event.getLocalPosition(game);
if (dragNode) {
dragNode.x = pos.x - dragNode.width / 2;
dragNode.y = pos.y - dragNode.height / 2;
if (dragNode && typeof dragNode.melt === 'function') {
dragNode.melt();
}
}
});
// Event listener for releasing the chocolate bars
game.on('up', function (obj) {
dragNode = null;
});
// Event listener for baking the chocolate in the oven
// Event listener for filling the heart mold
heartMold.on('down', function () {
heartMold.fill();
});
// Create a Text2 object to display the score
var scoreText = new Text2('Score: 0', {
size: 150,
fill: "#ffffff",
anchorX: 0.5,
anchorY: 0,
visible: true
});
scoreText.visible = false;
// Position the score text at the top center of the screen
//scoreText.x = game.width / 2; // Center the score text horizontally
//scoreText.y = 50; // Position the score text at the top of the screen
LK.gui.top.addChild(scoreText); // Add the score text to the GUI overlay
// Update the score display whenever the score changes
LK.on('tick', function () {
scoreText.setText('Score: ' + LK.getScore());
});
// Game tick logic
LK.on('tick', function () {
// Melting chocolate bars
chocolateBars.forEach(function (bar, index) {
if (bar.isMelted) {
bar.destroy();
chocolateBars.splice(index, 1);
}
});
// Filling the heart mold
if (heartMold.isFilled) {
var finishedHeart = new FinishedHeart();
finishedHeart.x = heartMold.x;
finishedHeart.y = heartMold.y;
finishedHearts.push(finishedHeart);
game.addChild(finishedHeart);
heartMold.isFilled = false;
}
// Update finished hearts
finishedHearts.forEach(function (heart, index) {
// Any logic for finished hearts
});
// Show the frying pan with chocolate and make all chocolate bars disappear when the score reaches 5
if (LK.getScore() == 5) {
fryingPan.visible = false;
fryingPanChoco.visible = true;
// Make all chocolate bars disappear
chocolateBars.forEach(function (bar) {
bar.destroy();
});
chocolateBars = [];
}
});
var fryingPan = game.addChild(new FryingPan());
fryingPan.x = game.width / 2;
fryingPan.y = game.height / 2 - 200; // Position above the fryingPanChoco
var fryingPanChoco = game.addChild(new FryingPanChoco());
fryingPanChoco.x = game.width / 3;
fryingPanChoco.y = game.height / 3;
fryingPanChoco.visible = false;
fryingPan.chocolateCount = 0;
/*
fryingPan.update = function () {
if (this.chocolateCount == 5) {
this.visible = false;
fryingPanChoco.visible = true;
}
};
*/
// Initialize chocolate bars
for (var i = 0; i < 5; i++) {
var chocolateBar = new ChocolateBar();
chocolateBar.x = 500 + i * (chocolateBar.width + 10);
chocolateBar.y = 100;
chocolateBars.push(chocolateBar);
game.addChild(chocolateBar);
}
a chocolate bar. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
a simple fraying pan. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
make the water more brown
rempli en gris
rempli le de chocolat
a simple fridge. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
a chocolate hearth. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.