/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ // CookieButton: A clickable button that, when pressed, starts a 3s timer and produces a cookie after the timer. var CookieButton = Container.expand(function () { var self = Container.call(this); // Attach the button asset (color is set by config) var btnAsset = null; self.setButtonType = function (type) { if (btnAsset) { btnAsset.destroy(); } btnAsset = self.attachAsset(type, { anchorX: 0.5, anchorY: 0.5 }); }; // Default type self.setButtonType('cookieBtn1'); // Cookie icon (hidden by default, shown on production) var cookieIcon = self.attachAsset('cookieIcon', { anchorX: 0.5, anchorY: 0.5, x: 0, y: 0, scaleX: 0.7, scaleY: 0.7, alpha: 0 }); // Button label var label = new Text2('ÜRET', { size: 90, fill: "#fff" }); label.anchor.set(0.5, 0.5); label.y = 0; self.addChild(label); // State self.isWaiting = false; self.timer = null; // Show a progress arc (simulate with alpha fade) var progressOverlay = self.attachAsset('cookieBtn1', { anchorX: 0.5, anchorY: 0.5, alpha: 0.4, tint: 0x000000 }); progressOverlay.visible = false; // Start the 3s timer self.startTimer = function () { if (self.isWaiting) { return; } self.isWaiting = true; label.setText('...'); // Show overlay and animate alpha from 0.4 to 0.8 over 3s progressOverlay.visible = true; progressOverlay.alpha = 0.4; tween(progressOverlay, { alpha: 0.8 }, { duration: 3000, easing: tween.linear }); self.timer = LK.setTimeout(function () { self.isWaiting = false; label.setText('ÜRET'); progressOverlay.visible = false; progressOverlay.alpha = 0.4; self.produceCookie(); }, 3000); }; // Cancel timer if needed self.cancelTimer = function () { if (self.timer) { LK.clearTimeout(self.timer); self.timer = null; } self.isWaiting = false; label.setText('ÜRET'); progressOverlay.visible = false; progressOverlay.alpha = 0.4; }; // Show cookie icon and call callback self.produceCookie = function () { // Animate cookie icon: fade in, scale up, then fade out cookieIcon.alpha = 0; cookieIcon.scaleX = 0.7; cookieIcon.scaleY = 0.7; cookieIcon.visible = true; tween(cookieIcon, { alpha: 1, scaleX: 1, scaleY: 1 }, { duration: 250, easing: tween.easeOut, onFinish: function onFinish() { tween(cookieIcon, { alpha: 0, scaleX: 1.2, scaleY: 1.2 }, { duration: 350, easing: tween.easeIn, onFinish: function onFinish() { cookieIcon.visible = false; } }); } }); // Notify game if (typeof self.onProduced === 'function') { self.onProduced(); } }; // Touch/click event self.down = function (x, y, obj) { if (!self.isWaiting) { self.startTimer(); } }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0xf7e9d2 }); /**** * Game Code ****/ // Cookie icon // 3 different big buttons (different colors) // Global cookie count var cookieCount = 0; // Cookie counter text (top right) var cookieCounter = new Text2('0', { size: 110, fill: 0x7C4A03 }); cookieCounter.anchor.set(1, 0); // right-top // Add a cookie icon next to the counter var counterIcon = LK.getAsset('cookieIcon', { anchorX: 1, anchorY: 0, x: 0, y: 0, scaleX: 0.7, scaleY: 0.7 }); counterIcon.tint = 0x7c4a03; counterIcon.alpha = 0.85; // Container for counter and icon var counterBox = new Container(); counterBox.addChild(cookieCounter); counterIcon.x = -cookieCounter.width - 30; counterIcon.y = 0; counterBox.addChild(counterIcon); // Position at top right, with margin counterBox.x = LK.gui.topRight.width - 40; counterBox.y = 40; LK.gui.topRight.addChild(counterBox); // Update counter function updateCounter() { cookieCounter.setText(cookieCount); counterIcon.x = -cookieCounter.width - 30; // Show 'Kral' at top center if cookieCount >= 100, 'Usta' if >= 30, 'Oyuncu' if >= 10 if (cookieCount >= 100) { if (!window.oyuncuText) { window.oyuncuText = new Text2('Kral', { size: 120, fill: 0x1A237E }); window.oyuncuText.anchor.set(0.5, 0); window.oyuncuText.x = LK.gui.top.width / 2; window.oyuncuText.y = 40; LK.gui.top.addChild(window.oyuncuText); } else if (window.oyuncuText.text !== 'Kral') { window.oyuncuText.setText('Kral'); } } else if (cookieCount >= 30) { if (!window.oyuncuText) { window.oyuncuText = new Text2('Usta', { size: 120, fill: 0x1A237E }); window.oyuncuText.anchor.set(0.5, 0); window.oyuncuText.x = LK.gui.top.width / 2; window.oyuncuText.y = 40; LK.gui.top.addChild(window.oyuncuText); } else if (window.oyuncuText.text !== 'Usta') { window.oyuncuText.setText('Usta'); } } else if (cookieCount >= 10) { if (!window.oyuncuText) { window.oyuncuText = new Text2('Oyuncu', { size: 120, fill: 0x1A237E }); window.oyuncuText.anchor.set(0.5, 0); window.oyuncuText.x = LK.gui.top.width / 2; window.oyuncuText.y = 40; LK.gui.top.addChild(window.oyuncuText); } else if (window.oyuncuText.text !== 'Oyuncu') { window.oyuncuText.setText('Oyuncu'); } } else { if (window.oyuncuText && window.oyuncuText.parent) { window.oyuncuText.parent.removeChild(window.oyuncuText); window.oyuncuText = null; } } } // Create 3 big buttons, spaced vertically var buttons = []; var buttonTypes = ['cookieBtn1', 'cookieBtn2', 'cookieBtn3']; var btnCount = 3; var spacing = 520; var startY = 700; var centerX = 2048 / 2; for (var i = 0; i < btnCount; i++) { var btn = new CookieButton(); btn.setButtonType(buttonTypes[i]); btn.x = centerX; btn.y = startY + i * spacing; btn.onProduced = function () { cookieCount += 1; updateCounter(); }; game.addChild(btn); buttons.push(btn); } // Make sure buttons are not in the top left 100x100 area (they are centered and far below) // --- HELP BUTTON & MENU --- // Create a help button (question mark) for the bottom right var helpBtn = new Container(); var helpCircle = LK.getAsset('cookieBtn2', { anchorX: 0.5, anchorY: 0.5, scaleX: 0.5, scaleY: 0.5, x: 0, y: 0 }); helpCircle.alpha = 0.85; helpBtn.addChild(helpCircle); var helpText = new Text2('?', { size: 160, fill: "#fff" }); helpText.anchor.set(0.5, 0.5); helpBtn.addChild(helpText); // Add exclamation mark icon overlay (now as a separate button in the bottom left) var warnBtn = new Container(); var warnCircle = LK.getAsset('cookieBtn3', { anchorX: 0.5, anchorY: 0.5, scaleX: 0.32, scaleY: 0.32, x: 0, y: 0 }); warnCircle.alpha = 0.95; warnBtn.addChild(warnCircle); var warnText = new Text2('!', { size: 110, fill: "#fff" }); warnText.anchor.set(0.5, 0.5); warnText.x = 0; warnText.y = 0; warnBtn.addChild(warnText); // Position warn button at bottom left, with margin, and keep it inside visible area warnBtn.x = 100 + 60; // 100px margin from left, 60px for button size warnBtn.y = LK.gui.bottomLeft.height - 100 - 60; // 100px margin from bottom, 60px for button size LK.gui.bottomLeft.addChild(warnBtn); // Position help button at bottom right, with margin, and keep it inside visible area helpBtn.x = LK.gui.bottomRight.width - 160; helpBtn.y = LK.gui.bottomRight.height - 160; LK.gui.bottomRight.addChild(helpBtn); // Help menu overlay (hidden by default) var helpMenu = new Container(); helpMenu.visible = false; // Semi-transparent background var helpBg = LK.getAsset('cookieBtn2', { anchorX: 0.5, anchorY: 0.5, scaleX: 3.2, scaleY: 3.2, x: 0, y: 0 }); helpBg.alpha = 0.85; helpMenu.addChild(helpBg); // Help message var helpMsg = new Text2("Oyunda bu üç şekle tıklayarak her üç saniyede bir kurabiye üretebilirsiniz ve böyle oyun devam eder. Ayrıca oyunda belirli sayıda kurabiye kazanırsan bazı ünvanlar açılır.", { size: 80, fill: "#222", align: "center", wordWrap: true, wordWrapWidth: 1200 }); helpMsg.anchor.set(0.5, 0.5); helpMsg.x = 0; helpMsg.y = -40; helpMenu.addChild(helpMsg); // Close button var closeBtn = new Container(); var closeCircle = LK.getAsset('cookieBtn1', { anchorX: 0.5, anchorY: 0.5, scaleX: 0.35, scaleY: 0.35, x: 0, y: 0 }); closeCircle.alpha = 0.8; closeBtn.addChild(closeCircle); var closeX = new Text2('X', { size: 90, fill: "#fff" }); closeX.anchor.set(0.5, 0.5); closeBtn.addChild(closeX); closeBtn.x = 480; closeBtn.y = -320; helpMenu.addChild(closeBtn); // Center help menu in the game area helpMenu.x = 2048 / 2; helpMenu.y = 2732 / 2; game.addChild(helpMenu); // Show help menu on helpBtn down helpBtn.down = function (x, y, obj) { helpMenu.visible = true; }; // Show warning menu on warnBtn down warnBtn.down = function (x, y, obj) { warningMenu.visible = true; }; // --- WARNING MENU --- var warningMenu = new Container(); warningMenu.visible = false; // Semi-transparent circular blue background for warning menu var warnBg = LK.getAsset('cookieBtn2', { anchorX: 0.5, anchorY: 0.5, scaleX: 3.2, scaleY: 3.2, x: 0, y: 0 }); warnBg.alpha = 0.85; warningMenu.addChild(warnBg); // Warning message var warnMsg = new Text2("Eyer aynı anda bir çok kez tıklarsanız oyun algılayamaz, sadece ilk tıkladığınızı anlar.", { size: 80, fill: "#222", align: "center", wordWrap: true, wordWrapWidth: 1200 }); warnMsg.anchor.set(0.5, 0.5); warnMsg.x = 0; warnMsg.y = -40; warningMenu.addChild(warnMsg); // Close button for warning var warnCloseBtn = new Container(); var warnCloseCircle = LK.getAsset('cookieBtn1', { anchorX: 0.5, anchorY: 0.5, scaleX: 0.35, scaleY: 0.35, x: 0, y: 0 }); warnCloseCircle.alpha = 0.8; warnCloseBtn.addChild(warnCloseCircle); var warnCloseX = new Text2('X', { size: 90, fill: "#fff" }); warnCloseX.anchor.set(0.5, 0.5); warnCloseBtn.addChild(warnCloseX); warnCloseBtn.x = 480; warnCloseBtn.y = -320; warningMenu.addChild(warnCloseBtn); // Center warning menu in the game area warningMenu.x = 2048 / 2; warningMenu.y = 2732 / 2; game.addChild(warningMenu); // Hide warning menu on close warnCloseBtn.down = function (x, y, obj) { warningMenu.visible = false; }; // Hide help menu on closeBtn down closeBtn.down = function (x, y, obj) { helpMenu.visible = false; }; // (Optional) Reset all timers on game over (handled by LK automatically, but for safety) game.destroy = function () { for (var i = 0; i < buttons.length; i++) { buttons[i].cancelTimer(); } };
/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
/****
* Classes
****/
// CookieButton: A clickable button that, when pressed, starts a 3s timer and produces a cookie after the timer.
var CookieButton = Container.expand(function () {
var self = Container.call(this);
// Attach the button asset (color is set by config)
var btnAsset = null;
self.setButtonType = function (type) {
if (btnAsset) {
btnAsset.destroy();
}
btnAsset = self.attachAsset(type, {
anchorX: 0.5,
anchorY: 0.5
});
};
// Default type
self.setButtonType('cookieBtn1');
// Cookie icon (hidden by default, shown on production)
var cookieIcon = self.attachAsset('cookieIcon', {
anchorX: 0.5,
anchorY: 0.5,
x: 0,
y: 0,
scaleX: 0.7,
scaleY: 0.7,
alpha: 0
});
// Button label
var label = new Text2('ÜRET', {
size: 90,
fill: "#fff"
});
label.anchor.set(0.5, 0.5);
label.y = 0;
self.addChild(label);
// State
self.isWaiting = false;
self.timer = null;
// Show a progress arc (simulate with alpha fade)
var progressOverlay = self.attachAsset('cookieBtn1', {
anchorX: 0.5,
anchorY: 0.5,
alpha: 0.4,
tint: 0x000000
});
progressOverlay.visible = false;
// Start the 3s timer
self.startTimer = function () {
if (self.isWaiting) {
return;
}
self.isWaiting = true;
label.setText('...');
// Show overlay and animate alpha from 0.4 to 0.8 over 3s
progressOverlay.visible = true;
progressOverlay.alpha = 0.4;
tween(progressOverlay, {
alpha: 0.8
}, {
duration: 3000,
easing: tween.linear
});
self.timer = LK.setTimeout(function () {
self.isWaiting = false;
label.setText('ÜRET');
progressOverlay.visible = false;
progressOverlay.alpha = 0.4;
self.produceCookie();
}, 3000);
};
// Cancel timer if needed
self.cancelTimer = function () {
if (self.timer) {
LK.clearTimeout(self.timer);
self.timer = null;
}
self.isWaiting = false;
label.setText('ÜRET');
progressOverlay.visible = false;
progressOverlay.alpha = 0.4;
};
// Show cookie icon and call callback
self.produceCookie = function () {
// Animate cookie icon: fade in, scale up, then fade out
cookieIcon.alpha = 0;
cookieIcon.scaleX = 0.7;
cookieIcon.scaleY = 0.7;
cookieIcon.visible = true;
tween(cookieIcon, {
alpha: 1,
scaleX: 1,
scaleY: 1
}, {
duration: 250,
easing: tween.easeOut,
onFinish: function onFinish() {
tween(cookieIcon, {
alpha: 0,
scaleX: 1.2,
scaleY: 1.2
}, {
duration: 350,
easing: tween.easeIn,
onFinish: function onFinish() {
cookieIcon.visible = false;
}
});
}
});
// Notify game
if (typeof self.onProduced === 'function') {
self.onProduced();
}
};
// Touch/click event
self.down = function (x, y, obj) {
if (!self.isWaiting) {
self.startTimer();
}
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0xf7e9d2
});
/****
* Game Code
****/
// Cookie icon
// 3 different big buttons (different colors)
// Global cookie count
var cookieCount = 0;
// Cookie counter text (top right)
var cookieCounter = new Text2('0', {
size: 110,
fill: 0x7C4A03
});
cookieCounter.anchor.set(1, 0); // right-top
// Add a cookie icon next to the counter
var counterIcon = LK.getAsset('cookieIcon', {
anchorX: 1,
anchorY: 0,
x: 0,
y: 0,
scaleX: 0.7,
scaleY: 0.7
});
counterIcon.tint = 0x7c4a03;
counterIcon.alpha = 0.85;
// Container for counter and icon
var counterBox = new Container();
counterBox.addChild(cookieCounter);
counterIcon.x = -cookieCounter.width - 30;
counterIcon.y = 0;
counterBox.addChild(counterIcon);
// Position at top right, with margin
counterBox.x = LK.gui.topRight.width - 40;
counterBox.y = 40;
LK.gui.topRight.addChild(counterBox);
// Update counter
function updateCounter() {
cookieCounter.setText(cookieCount);
counterIcon.x = -cookieCounter.width - 30;
// Show 'Kral' at top center if cookieCount >= 100, 'Usta' if >= 30, 'Oyuncu' if >= 10
if (cookieCount >= 100) {
if (!window.oyuncuText) {
window.oyuncuText = new Text2('Kral', {
size: 120,
fill: 0x1A237E
});
window.oyuncuText.anchor.set(0.5, 0);
window.oyuncuText.x = LK.gui.top.width / 2;
window.oyuncuText.y = 40;
LK.gui.top.addChild(window.oyuncuText);
} else if (window.oyuncuText.text !== 'Kral') {
window.oyuncuText.setText('Kral');
}
} else if (cookieCount >= 30) {
if (!window.oyuncuText) {
window.oyuncuText = new Text2('Usta', {
size: 120,
fill: 0x1A237E
});
window.oyuncuText.anchor.set(0.5, 0);
window.oyuncuText.x = LK.gui.top.width / 2;
window.oyuncuText.y = 40;
LK.gui.top.addChild(window.oyuncuText);
} else if (window.oyuncuText.text !== 'Usta') {
window.oyuncuText.setText('Usta');
}
} else if (cookieCount >= 10) {
if (!window.oyuncuText) {
window.oyuncuText = new Text2('Oyuncu', {
size: 120,
fill: 0x1A237E
});
window.oyuncuText.anchor.set(0.5, 0);
window.oyuncuText.x = LK.gui.top.width / 2;
window.oyuncuText.y = 40;
LK.gui.top.addChild(window.oyuncuText);
} else if (window.oyuncuText.text !== 'Oyuncu') {
window.oyuncuText.setText('Oyuncu');
}
} else {
if (window.oyuncuText && window.oyuncuText.parent) {
window.oyuncuText.parent.removeChild(window.oyuncuText);
window.oyuncuText = null;
}
}
}
// Create 3 big buttons, spaced vertically
var buttons = [];
var buttonTypes = ['cookieBtn1', 'cookieBtn2', 'cookieBtn3'];
var btnCount = 3;
var spacing = 520;
var startY = 700;
var centerX = 2048 / 2;
for (var i = 0; i < btnCount; i++) {
var btn = new CookieButton();
btn.setButtonType(buttonTypes[i]);
btn.x = centerX;
btn.y = startY + i * spacing;
btn.onProduced = function () {
cookieCount += 1;
updateCounter();
};
game.addChild(btn);
buttons.push(btn);
}
// Make sure buttons are not in the top left 100x100 area (they are centered and far below)
// --- HELP BUTTON & MENU ---
// Create a help button (question mark) for the bottom right
var helpBtn = new Container();
var helpCircle = LK.getAsset('cookieBtn2', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 0.5,
scaleY: 0.5,
x: 0,
y: 0
});
helpCircle.alpha = 0.85;
helpBtn.addChild(helpCircle);
var helpText = new Text2('?', {
size: 160,
fill: "#fff"
});
helpText.anchor.set(0.5, 0.5);
helpBtn.addChild(helpText);
// Add exclamation mark icon overlay (now as a separate button in the bottom left)
var warnBtn = new Container();
var warnCircle = LK.getAsset('cookieBtn3', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 0.32,
scaleY: 0.32,
x: 0,
y: 0
});
warnCircle.alpha = 0.95;
warnBtn.addChild(warnCircle);
var warnText = new Text2('!', {
size: 110,
fill: "#fff"
});
warnText.anchor.set(0.5, 0.5);
warnText.x = 0;
warnText.y = 0;
warnBtn.addChild(warnText);
// Position warn button at bottom left, with margin, and keep it inside visible area
warnBtn.x = 100 + 60; // 100px margin from left, 60px for button size
warnBtn.y = LK.gui.bottomLeft.height - 100 - 60; // 100px margin from bottom, 60px for button size
LK.gui.bottomLeft.addChild(warnBtn);
// Position help button at bottom right, with margin, and keep it inside visible area
helpBtn.x = LK.gui.bottomRight.width - 160;
helpBtn.y = LK.gui.bottomRight.height - 160;
LK.gui.bottomRight.addChild(helpBtn);
// Help menu overlay (hidden by default)
var helpMenu = new Container();
helpMenu.visible = false;
// Semi-transparent background
var helpBg = LK.getAsset('cookieBtn2', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 3.2,
scaleY: 3.2,
x: 0,
y: 0
});
helpBg.alpha = 0.85;
helpMenu.addChild(helpBg);
// Help message
var helpMsg = new Text2("Oyunda bu üç şekle tıklayarak her üç saniyede bir kurabiye üretebilirsiniz ve böyle oyun devam eder. Ayrıca oyunda belirli sayıda kurabiye kazanırsan bazı ünvanlar açılır.", {
size: 80,
fill: "#222",
align: "center",
wordWrap: true,
wordWrapWidth: 1200
});
helpMsg.anchor.set(0.5, 0.5);
helpMsg.x = 0;
helpMsg.y = -40;
helpMenu.addChild(helpMsg);
// Close button
var closeBtn = new Container();
var closeCircle = LK.getAsset('cookieBtn1', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 0.35,
scaleY: 0.35,
x: 0,
y: 0
});
closeCircle.alpha = 0.8;
closeBtn.addChild(closeCircle);
var closeX = new Text2('X', {
size: 90,
fill: "#fff"
});
closeX.anchor.set(0.5, 0.5);
closeBtn.addChild(closeX);
closeBtn.x = 480;
closeBtn.y = -320;
helpMenu.addChild(closeBtn);
// Center help menu in the game area
helpMenu.x = 2048 / 2;
helpMenu.y = 2732 / 2;
game.addChild(helpMenu);
// Show help menu on helpBtn down
helpBtn.down = function (x, y, obj) {
helpMenu.visible = true;
};
// Show warning menu on warnBtn down
warnBtn.down = function (x, y, obj) {
warningMenu.visible = true;
};
// --- WARNING MENU ---
var warningMenu = new Container();
warningMenu.visible = false;
// Semi-transparent circular blue background for warning menu
var warnBg = LK.getAsset('cookieBtn2', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 3.2,
scaleY: 3.2,
x: 0,
y: 0
});
warnBg.alpha = 0.85;
warningMenu.addChild(warnBg);
// Warning message
var warnMsg = new Text2("Eyer aynı anda bir çok kez tıklarsanız oyun algılayamaz, sadece ilk tıkladığınızı anlar.", {
size: 80,
fill: "#222",
align: "center",
wordWrap: true,
wordWrapWidth: 1200
});
warnMsg.anchor.set(0.5, 0.5);
warnMsg.x = 0;
warnMsg.y = -40;
warningMenu.addChild(warnMsg);
// Close button for warning
var warnCloseBtn = new Container();
var warnCloseCircle = LK.getAsset('cookieBtn1', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 0.35,
scaleY: 0.35,
x: 0,
y: 0
});
warnCloseCircle.alpha = 0.8;
warnCloseBtn.addChild(warnCloseCircle);
var warnCloseX = new Text2('X', {
size: 90,
fill: "#fff"
});
warnCloseX.anchor.set(0.5, 0.5);
warnCloseBtn.addChild(warnCloseX);
warnCloseBtn.x = 480;
warnCloseBtn.y = -320;
warningMenu.addChild(warnCloseBtn);
// Center warning menu in the game area
warningMenu.x = 2048 / 2;
warningMenu.y = 2732 / 2;
game.addChild(warningMenu);
// Hide warning menu on close
warnCloseBtn.down = function (x, y, obj) {
warningMenu.visible = false;
};
// Hide help menu on closeBtn down
closeBtn.down = function (x, y, obj) {
helpMenu.visible = false;
};
// (Optional) Reset all timers on game over (handled by LK automatically, but for safety)
game.destroy = function () {
for (var i = 0; i < buttons.length; i++) {
buttons[i].cancelTimer();
}
};