User prompt
header kısmını aşağıya kaydır
User prompt
sayıları ekranın ortasına ortala
User prompt
aşağıya doğru uzat
User prompt
kare şeklinde olsun
User prompt
oraya header koy
User prompt
yazıyı kaldır
User prompt
Bir hedef sayı seçin kısmını kaldır
User prompt
Hedef bir sayı seçin Kısmına title dikdörgeni koy
User prompt
1 sayısınıda ekle
User prompt
artarak azalarak kısmını sayılardan alt kısma koy
User prompt
sol tarafa tıklayınca sayı kendisi kadar azalsın
User prompt
sağ taraf ve sol taraf tıklanabilir olsun
User prompt
sayı seçildikten sonra ilk başta sayının kendisi gözüksün ekranda
User prompt
çizgiyi görünmez yap
User prompt
null yazmasın
User prompt
sayı seçildikten sonra ekranı sağ ve sol olarak tam ortadan 2 eş parçaya böl
User prompt
artarak ve azalarak yerine sayılar seçildikten sonra ekranı 2 eş parçaya böl sağa tıklayınca sayı artsın sola tıklayınca sayı azalsın
User prompt
5x5 şeklinde gözüksün ekranda
User prompt
2 den 25 e kadar yap baştaki sayıları
User prompt
game over kısmını kaldır onun yerine baştan başlat
User prompt
10x olunca gameover popupunin üstünde gerçeklesen confetiler çıksın
User prompt
10x olunca you win yazmasın tekrar başa dönsün
User prompt
game over popupini sil
User prompt
game over yazısı çıkmasın
User prompt
renklendir confetileri
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0xffffff // White background for clarity }); /**** * Game Code ****/ // --- GLOBALS --- var countingDirection = 1; // 1: up, -1: down var startNumber = 0; var targetNumber = 10; var currentNumber = 0; var gameStarted = false; // UI elements var numberText = null; var infoText = null; var optionButtons = []; var directionButtons = []; var selectedTarget = null; var selectedDirection = null; // --- UI HELPERS --- // Create a button as a colored box with text, returns a Container function createButton(label, x, y, width, height, color, onTap) { var btn = new Container(); var box = btn.attachAsset('buttonBox', { width: width, height: height, color: color, anchorX: 0.5, anchorY: 0.5 }); var txt = new Text2(label, { size: 80, fill: 0xFFFFFF }); txt.anchor.set(0.5, 0.5); txt.x = 0; txt.y = 0; btn.addChild(txt); btn.x = x; btn.y = y; btn.interactive = true; btn.down = function (x, y, obj) { if (onTap) onTap(); }; return btn; } // --- GAME SETUP --- // Show the pre-game menu: select target number and direction function showMenu() { gameStarted = false; // Remove previous UI if any if (numberText) { numberText.destroy(); numberText = null; } if (infoText) { infoText.destroy(); infoText = null; } for (var i = 0; i < optionButtons.length; i++) { optionButtons[i].destroy(); } optionButtons = []; for (var i = 0; i < directionButtons.length; i++) { directionButtons[i].destroy(); } directionButtons = []; // Info text infoText = new Text2("Bir hedef sayı seçin", { size: 90, fill: 0x222222 }); infoText.anchor.set(0.5, 0); infoText.x = 2048 / 2; infoText.y = 250; game.addChild(infoText); // Target number options (2-9) var targets = [2, 3, 4, 5, 6, 7, 8, 9]; var btnW = 200, btnH = 180; var gap = 40; var totalW = targets.length * btnW + (targets.length - 1) * gap; var startX = (2048 - totalW) / 2 + btnW / 2; for (var i = 0; i < targets.length; i++) { (function (idx) { var t = targets[idx]; var btn = createButton("" + t, startX + idx * (btnW + gap), 600, btnW, btnH, 0x4a90e2, function () { selectTarget(t, idx); }); optionButtons.push(btn); game.addChild(btn); })(i); } // Direction selection: "Artarak" (up), "Azalarak" (down) var dirLabels = ["Artarak", "Azalarak"]; var dirVals = [1, -1]; var dirBtnW = 400, dirBtnH = 150; var dirGap = 100; var dirStartX = (2048 - (2 * dirBtnW + dirGap)) / 2 + dirBtnW / 2; for (var i = 0; i < 2; i++) { (function (idx) { var btn = createButton(dirLabels[idx], dirStartX + idx * (dirBtnW + dirGap), 950, dirBtnW, dirBtnH, 0x7ed957, function () { selectDirection(dirVals[idx], idx); }); directionButtons.push(btn); game.addChild(btn); })(i); } } // When a target number is selected function selectTarget(t, idx) { targetNumber = t; selectedTarget = idx; // Highlight selected for (var i = 0; i < optionButtons.length; i++) { optionButtons[i].children[0].tint = i === idx ? 0xffc107 : 0xffffff; } // If direction already selected, start game if (selectedDirection !== null) { startGame(); } } // When a direction is selected function selectDirection(dir, idx) { countingDirection = dir; selectedDirection = idx; // Highlight selected for (var i = 0; i < directionButtons.length; i++) { directionButtons[i].children[0].tint = i === idx ? 0xffc107 : 0xffffff; } // If target already selected, start game if (selectedTarget !== null) { startGame(); } } // --- GAMEPLAY --- function startGame() { // Remove menu UI if (infoText) { infoText.destroy(); infoText = null; } for (var i = 0; i < optionButtons.length; i++) { optionButtons[i].destroy(); } optionButtons = []; for (var i = 0; i < directionButtons.length; i++) { directionButtons[i].destroy(); } directionButtons = []; // Set start number if (countingDirection === 1) { startNumber = targetNumber; // artarak: start at 1x target } else { startNumber = targetNumber * 10; // azalarak: start at 10x target } currentNumber = startNumber; // Show current number numberText = new Text2("" + currentNumber, { size: 350, fill: 0x222222 }); numberText.anchor.set(0.5, 0.5); numberText.x = 2048 / 2; numberText.y = 2732 / 2; game.addChild(numberText); gameStarted = true; } // --- GAME INTERACTION --- // On tap/click anywhere, increment or decrement number game.down = function (x, y, obj) { if (!gameStarted) return; // Animate numberText (scale up and back) tween(numberText, { scaleX: 1.2, scaleY: 1.2 }, { duration: 80, easing: tween.easeOut, onFinish: function onFinish() { tween(numberText, { scaleX: 1, scaleY: 1 }, { duration: 80, easing: tween.easeIn }); } }); // Update number if (countingDirection === 1) { currentNumber += targetNumber; } else { currentNumber -= targetNumber; } numberText.setText("" + currentNumber); // Check for win if (countingDirection === 1 && currentNumber >= targetNumber * 10) { // Artarak: 10x reached gameStarted = false; // Show confetti, no game over // Spectacular radial confetti burst from numberText position (function spectacularRadialConfetti() { var confettiColors = [0xffc107, 0x4a90e2, 0x7ed957, 0xe94e77, 0xffffff, 0xf44336, 0x00e6e6, 0xff69b4, 0x8d4fff, 0x00c853, 0xff9800, 0x00bcd4, 0x8bc34a, 0x9c27b0, 0xffeb3b, 0x795548, 0x607d8b, 0x3f51b5, 0xcddc39, 0xe91e63]; var confettiCount = 160; var cx = numberText ? numberText.x : 2048 / 2; var cy = numberText ? numberText.y : 2732 / 2; for (var i = 0; i < confettiCount; i++) { (function () { var confetti = new Container(); var color = confettiColors[Math.floor(Math.random() * confettiColors.length)]; var size = 28 + Math.random() * 44; var circ = confetti.attachAsset('centerCircle', { width: size, height: size, color: color, anchorX: 0.5, anchorY: 0.5 }); // Start at numberText position confetti.x = cx; confetti.y = cy; game.addChild(confetti); // Radial velocity, random angle and speed var angle = Math.random() * Math.PI * 2; var speed = 18 + Math.random() * 12; var vx = Math.cos(angle) * speed; var vy = Math.sin(angle) * speed; var gravity = 0.5 + Math.random() * 0.7; var rotSpeed = (Math.random() - 0.5) * 0.3; var life = 90 + Math.floor(Math.random() * 60); var trailStep = 0; confetti.update = function () { confetti.x += vx; confetti.y += vy; vy += gravity * 0.25; // less gravity for more radial effect circ.rotation += rotSpeed; life--; // Trail: every 3 frames, spawn a tiny faded dot if (life > 10 && trailStep++ % 3 === 0) { var trail = new Container(); var tsize = size * 0.25 * Math.random(); var trailCirc = trail.attachAsset('centerCircle', { width: tsize, height: tsize, // Pick a new random color for each trail dot for extra colorfulness color: confettiColors[Math.floor(Math.random() * confettiColors.length)], anchorX: 0.5, anchorY: 0.5 }); trail.x = confetti.x; trail.y = confetti.y; trail.alpha = 0.5; game.addChild(trail); var trailLife = 14 + Math.floor(Math.random() * 8); trail.update = function () { trail.alpha -= 0.03; trailLife--; if (trailLife <= 0) trail.destroy(); }; } // Remove if out of bounds or life over if (life <= 0 || confetti.x < -100 || confetti.x > 2048 + 100 || confetti.y < -100 || confetti.y > 2732 + 100) { confetti.destroy(); } }; })(); } })(); // 1.3 seconds later, reset to start LK.setTimeout(function () { showMenu(); }, 1300); } else if (countingDirection === -1 && currentNumber <= 0) { // Azalarak: 0 reached gameStarted = false; // Show confetti, no game over // Spectacular radial confetti burst from numberText position (function spectacularRadialConfetti() { var confettiColors = [0xffc107, 0x4a90e2, 0x7ed957, 0xe94e77, 0xffffff, 0xf44336, 0x00e6e6, 0xff69b4, 0x8d4fff, 0x00c853, 0xff9800, 0x00bcd4, 0x8bc34a, 0x9c27b0, 0xffeb3b, 0x795548, 0x607d8b, 0x3f51b5, 0xcddc39, 0xe91e63]; var confettiCount = 160; var cx = numberText ? numberText.x : 2048 / 2; var cy = numberText ? numberText.y : 2732 / 2; for (var i = 0; i < confettiCount; i++) { (function () { var confetti = new Container(); var color = confettiColors[Math.floor(Math.random() * confettiColors.length)]; var size = 28 + Math.random() * 44; var circ = confetti.attachAsset('centerCircle', { width: size, height: size, color: color, anchorX: 0.5, anchorY: 0.5 }); // Start at numberText position confetti.x = cx; confetti.y = cy; game.addChild(confetti); // Radial velocity, random angle and speed var angle = Math.random() * Math.PI * 2; var speed = 18 + Math.random() * 12; var vx = Math.cos(angle) * speed; var vy = Math.sin(angle) * speed; var gravity = 0.5 + Math.random() * 0.7; var rotSpeed = (Math.random() - 0.5) * 0.3; var life = 90 + Math.floor(Math.random() * 60); var trailStep = 0; confetti.update = function () { confetti.x += vx; confetti.y += vy; vy += gravity * 0.25; // less gravity for more radial effect circ.rotation += rotSpeed; life--; // Trail: every 3 frames, spawn a tiny faded dot if (life > 10 && trailStep++ % 3 === 0) { var trail = new Container(); var tsize = size * 0.25 * Math.random(); var trailCirc = trail.attachAsset('centerCircle', { width: tsize, height: tsize, // Pick a new random color for each trail dot for extra colorfulness color: confettiColors[Math.floor(Math.random() * confettiColors.length)], anchorX: 0.5, anchorY: 0.5 }); trail.x = confetti.x; trail.y = confetti.y; trail.alpha = 0.5; game.addChild(trail); var trailLife = 14 + Math.floor(Math.random() * 8); trail.update = function () { trail.alpha -= 0.03; trailLife--; if (trailLife <= 0) trail.destroy(); }; } // Remove if out of bounds or life over if (life <= 0 || confetti.x < -100 || confetti.x > 2048 + 100 || confetti.y < -100 || confetti.y > 2732 + 100) { confetti.destroy(); } }; })(); } })(); // 1.3 seconds later, reset to start LK.setTimeout(function () { showMenu(); }, 1300); } }; // --- GAME RESET --- // When game is reset, show menu again game.on('reset', function () { showMenu(); }); // --- INITIALIZE --- showMenu();
/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0xffffff // White background for clarity
});
/****
* Game Code
****/
// --- GLOBALS ---
var countingDirection = 1; // 1: up, -1: down
var startNumber = 0;
var targetNumber = 10;
var currentNumber = 0;
var gameStarted = false;
// UI elements
var numberText = null;
var infoText = null;
var optionButtons = [];
var directionButtons = [];
var selectedTarget = null;
var selectedDirection = null;
// --- UI HELPERS ---
// Create a button as a colored box with text, returns a Container
function createButton(label, x, y, width, height, color, onTap) {
var btn = new Container();
var box = btn.attachAsset('buttonBox', {
width: width,
height: height,
color: color,
anchorX: 0.5,
anchorY: 0.5
});
var txt = new Text2(label, {
size: 80,
fill: 0xFFFFFF
});
txt.anchor.set(0.5, 0.5);
txt.x = 0;
txt.y = 0;
btn.addChild(txt);
btn.x = x;
btn.y = y;
btn.interactive = true;
btn.down = function (x, y, obj) {
if (onTap) onTap();
};
return btn;
}
// --- GAME SETUP ---
// Show the pre-game menu: select target number and direction
function showMenu() {
gameStarted = false;
// Remove previous UI if any
if (numberText) {
numberText.destroy();
numberText = null;
}
if (infoText) {
infoText.destroy();
infoText = null;
}
for (var i = 0; i < optionButtons.length; i++) {
optionButtons[i].destroy();
}
optionButtons = [];
for (var i = 0; i < directionButtons.length; i++) {
directionButtons[i].destroy();
}
directionButtons = [];
// Info text
infoText = new Text2("Bir hedef sayı seçin", {
size: 90,
fill: 0x222222
});
infoText.anchor.set(0.5, 0);
infoText.x = 2048 / 2;
infoText.y = 250;
game.addChild(infoText);
// Target number options (2-9)
var targets = [2, 3, 4, 5, 6, 7, 8, 9];
var btnW = 200,
btnH = 180;
var gap = 40;
var totalW = targets.length * btnW + (targets.length - 1) * gap;
var startX = (2048 - totalW) / 2 + btnW / 2;
for (var i = 0; i < targets.length; i++) {
(function (idx) {
var t = targets[idx];
var btn = createButton("" + t, startX + idx * (btnW + gap), 600, btnW, btnH, 0x4a90e2, function () {
selectTarget(t, idx);
});
optionButtons.push(btn);
game.addChild(btn);
})(i);
}
// Direction selection: "Artarak" (up), "Azalarak" (down)
var dirLabels = ["Artarak", "Azalarak"];
var dirVals = [1, -1];
var dirBtnW = 400,
dirBtnH = 150;
var dirGap = 100;
var dirStartX = (2048 - (2 * dirBtnW + dirGap)) / 2 + dirBtnW / 2;
for (var i = 0; i < 2; i++) {
(function (idx) {
var btn = createButton(dirLabels[idx], dirStartX + idx * (dirBtnW + dirGap), 950, dirBtnW, dirBtnH, 0x7ed957, function () {
selectDirection(dirVals[idx], idx);
});
directionButtons.push(btn);
game.addChild(btn);
})(i);
}
}
// When a target number is selected
function selectTarget(t, idx) {
targetNumber = t;
selectedTarget = idx;
// Highlight selected
for (var i = 0; i < optionButtons.length; i++) {
optionButtons[i].children[0].tint = i === idx ? 0xffc107 : 0xffffff;
}
// If direction already selected, start game
if (selectedDirection !== null) {
startGame();
}
}
// When a direction is selected
function selectDirection(dir, idx) {
countingDirection = dir;
selectedDirection = idx;
// Highlight selected
for (var i = 0; i < directionButtons.length; i++) {
directionButtons[i].children[0].tint = i === idx ? 0xffc107 : 0xffffff;
}
// If target already selected, start game
if (selectedTarget !== null) {
startGame();
}
}
// --- GAMEPLAY ---
function startGame() {
// Remove menu UI
if (infoText) {
infoText.destroy();
infoText = null;
}
for (var i = 0; i < optionButtons.length; i++) {
optionButtons[i].destroy();
}
optionButtons = [];
for (var i = 0; i < directionButtons.length; i++) {
directionButtons[i].destroy();
}
directionButtons = [];
// Set start number
if (countingDirection === 1) {
startNumber = targetNumber; // artarak: start at 1x target
} else {
startNumber = targetNumber * 10; // azalarak: start at 10x target
}
currentNumber = startNumber;
// Show current number
numberText = new Text2("" + currentNumber, {
size: 350,
fill: 0x222222
});
numberText.anchor.set(0.5, 0.5);
numberText.x = 2048 / 2;
numberText.y = 2732 / 2;
game.addChild(numberText);
gameStarted = true;
}
// --- GAME INTERACTION ---
// On tap/click anywhere, increment or decrement number
game.down = function (x, y, obj) {
if (!gameStarted) return;
// Animate numberText (scale up and back)
tween(numberText, {
scaleX: 1.2,
scaleY: 1.2
}, {
duration: 80,
easing: tween.easeOut,
onFinish: function onFinish() {
tween(numberText, {
scaleX: 1,
scaleY: 1
}, {
duration: 80,
easing: tween.easeIn
});
}
});
// Update number
if (countingDirection === 1) {
currentNumber += targetNumber;
} else {
currentNumber -= targetNumber;
}
numberText.setText("" + currentNumber);
// Check for win
if (countingDirection === 1 && currentNumber >= targetNumber * 10) {
// Artarak: 10x reached
gameStarted = false;
// Show confetti, no game over
// Spectacular radial confetti burst from numberText position
(function spectacularRadialConfetti() {
var confettiColors = [0xffc107, 0x4a90e2, 0x7ed957, 0xe94e77, 0xffffff, 0xf44336, 0x00e6e6, 0xff69b4, 0x8d4fff, 0x00c853, 0xff9800, 0x00bcd4, 0x8bc34a, 0x9c27b0, 0xffeb3b, 0x795548, 0x607d8b, 0x3f51b5, 0xcddc39, 0xe91e63];
var confettiCount = 160;
var cx = numberText ? numberText.x : 2048 / 2;
var cy = numberText ? numberText.y : 2732 / 2;
for (var i = 0; i < confettiCount; i++) {
(function () {
var confetti = new Container();
var color = confettiColors[Math.floor(Math.random() * confettiColors.length)];
var size = 28 + Math.random() * 44;
var circ = confetti.attachAsset('centerCircle', {
width: size,
height: size,
color: color,
anchorX: 0.5,
anchorY: 0.5
});
// Start at numberText position
confetti.x = cx;
confetti.y = cy;
game.addChild(confetti);
// Radial velocity, random angle and speed
var angle = Math.random() * Math.PI * 2;
var speed = 18 + Math.random() * 12;
var vx = Math.cos(angle) * speed;
var vy = Math.sin(angle) * speed;
var gravity = 0.5 + Math.random() * 0.7;
var rotSpeed = (Math.random() - 0.5) * 0.3;
var life = 90 + Math.floor(Math.random() * 60);
var trailStep = 0;
confetti.update = function () {
confetti.x += vx;
confetti.y += vy;
vy += gravity * 0.25; // less gravity for more radial effect
circ.rotation += rotSpeed;
life--;
// Trail: every 3 frames, spawn a tiny faded dot
if (life > 10 && trailStep++ % 3 === 0) {
var trail = new Container();
var tsize = size * 0.25 * Math.random();
var trailCirc = trail.attachAsset('centerCircle', {
width: tsize,
height: tsize,
// Pick a new random color for each trail dot for extra colorfulness
color: confettiColors[Math.floor(Math.random() * confettiColors.length)],
anchorX: 0.5,
anchorY: 0.5
});
trail.x = confetti.x;
trail.y = confetti.y;
trail.alpha = 0.5;
game.addChild(trail);
var trailLife = 14 + Math.floor(Math.random() * 8);
trail.update = function () {
trail.alpha -= 0.03;
trailLife--;
if (trailLife <= 0) trail.destroy();
};
}
// Remove if out of bounds or life over
if (life <= 0 || confetti.x < -100 || confetti.x > 2048 + 100 || confetti.y < -100 || confetti.y > 2732 + 100) {
confetti.destroy();
}
};
})();
}
})();
// 1.3 seconds later, reset to start
LK.setTimeout(function () {
showMenu();
}, 1300);
} else if (countingDirection === -1 && currentNumber <= 0) {
// Azalarak: 0 reached
gameStarted = false;
// Show confetti, no game over
// Spectacular radial confetti burst from numberText position
(function spectacularRadialConfetti() {
var confettiColors = [0xffc107, 0x4a90e2, 0x7ed957, 0xe94e77, 0xffffff, 0xf44336, 0x00e6e6, 0xff69b4, 0x8d4fff, 0x00c853, 0xff9800, 0x00bcd4, 0x8bc34a, 0x9c27b0, 0xffeb3b, 0x795548, 0x607d8b, 0x3f51b5, 0xcddc39, 0xe91e63];
var confettiCount = 160;
var cx = numberText ? numberText.x : 2048 / 2;
var cy = numberText ? numberText.y : 2732 / 2;
for (var i = 0; i < confettiCount; i++) {
(function () {
var confetti = new Container();
var color = confettiColors[Math.floor(Math.random() * confettiColors.length)];
var size = 28 + Math.random() * 44;
var circ = confetti.attachAsset('centerCircle', {
width: size,
height: size,
color: color,
anchorX: 0.5,
anchorY: 0.5
});
// Start at numberText position
confetti.x = cx;
confetti.y = cy;
game.addChild(confetti);
// Radial velocity, random angle and speed
var angle = Math.random() * Math.PI * 2;
var speed = 18 + Math.random() * 12;
var vx = Math.cos(angle) * speed;
var vy = Math.sin(angle) * speed;
var gravity = 0.5 + Math.random() * 0.7;
var rotSpeed = (Math.random() - 0.5) * 0.3;
var life = 90 + Math.floor(Math.random() * 60);
var trailStep = 0;
confetti.update = function () {
confetti.x += vx;
confetti.y += vy;
vy += gravity * 0.25; // less gravity for more radial effect
circ.rotation += rotSpeed;
life--;
// Trail: every 3 frames, spawn a tiny faded dot
if (life > 10 && trailStep++ % 3 === 0) {
var trail = new Container();
var tsize = size * 0.25 * Math.random();
var trailCirc = trail.attachAsset('centerCircle', {
width: tsize,
height: tsize,
// Pick a new random color for each trail dot for extra colorfulness
color: confettiColors[Math.floor(Math.random() * confettiColors.length)],
anchorX: 0.5,
anchorY: 0.5
});
trail.x = confetti.x;
trail.y = confetti.y;
trail.alpha = 0.5;
game.addChild(trail);
var trailLife = 14 + Math.floor(Math.random() * 8);
trail.update = function () {
trail.alpha -= 0.03;
trailLife--;
if (trailLife <= 0) trail.destroy();
};
}
// Remove if out of bounds or life over
if (life <= 0 || confetti.x < -100 || confetti.x > 2048 + 100 || confetti.y < -100 || confetti.y > 2732 + 100) {
confetti.destroy();
}
};
})();
}
})();
// 1.3 seconds later, reset to start
LK.setTimeout(function () {
showMenu();
}, 1300);
}
};
// --- GAME RESET ---
// When game is reset, show menu again
game.on('reset', function () {
showMenu();
});
// --- INITIALIZE ---
showMenu();