User prompt
Yazıyı küçült
User prompt
Yazı birazcık büyüsün
User prompt
Solda cehehennem yazsın sağda cennet yazsın
User prompt
Sola cehhenme sağa cennet ekle
User prompt
Please fix the bug: 'Uncaught ReferenceError: hellBtn is not defined' in or related to this line: 'hellBtn.flash(correct ? 0x7ed957 : 0xe74c3c);' Line Number: 285
User prompt
Parmağımızla adamı cennete yada ceheneme sürükliyelim
Code edit (1 edits merged)
Please save this source code
User prompt
Cennet mi Cehennem mi?
Initial prompt
Karşımıza adam gelsin yaptığı iyiliği veye kötülüğü anlatsın bizde obda göre cennet yada cehheneme önderelim her seviyede adam deyişsin
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ // Button class for Heaven/Hell var ChoiceButton = Container.expand(function () { var self = Container.call(this); self.bg = null; self.txt = null; self.setType = function (type) { if (self.bg) self.removeChild(self.bg); var assetId = type === 'heaven' ? 'heaven_btn' : 'hell_btn'; self.bg = self.attachAsset(assetId, { anchorX: 0.5, anchorY: 0.5 }); }; self.setText = function (str) { if (self.txt) self.removeChild(self.txt); self.txt = new Text2(str, { size: 80, fill: "#fff" }); self.txt.anchor.set(0.5, 0.5); self.addChild(self.txt); }; // Feedback animation self.flash = function (color) { tween(self.bg, { tint: color }, { duration: 120, easing: tween.linear, onFinish: function onFinish() { tween(self.bg, { tint: 0xffffff }, { duration: 180 }); } }); }; return self; }); // Character display class var StoryCharacter = Container.expand(function () { var self = Container.call(this); // Will be set by .setType self.asset = null; self.setType = function (type) { if (self.asset) { self.removeChild(self.asset); } var assetId = type === 'good' ? 'char_good' : 'char_evil'; self.asset = self.attachAsset(assetId, { anchorX: 0.5, anchorY: 0.5 }); }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x222222 }); /**** * Game Code ****/ // Tween for button feedback // Heaven and hell buttons // Character shapes (good and evil) // --- Story Data --- var stories = [ // Level 1-3: Obvious { type: 'good', text: "Yaşlı bir kadına markette yardım ettim." }, { type: 'evil', text: "Arkadaşımın oyuncağını gizlice kırdım." }, { type: 'good', text: "Bir sokak köpeğine su verdim." }, // Level 4-6: Slightly ambiguous { type: 'evil', text: "Sınavda kopya çektim." }, { type: 'good', text: "Kardeşime ödevinde yardım ettim." }, { type: 'evil', text: "Bir arkadaşımı haksız yere suçladım." }, // Level 7-9: More nuanced { type: 'good', text: "Bir arkadaşımın sırrını kimseye söylemedim." }, { type: 'evil', text: "Birine yalan söyledim ama kimse zarar görmedi." }, { type: 'good', text: "Bir gün boyunca hiç kimseye kötü davranmadım." }, // Level 10+: Harder { type: 'evil', text: "Birine yardım etmem gerekirdi ama etmedim." }, { type: 'good', text: "Bir arkadaşımın moralini düzeltmek için ona hediye aldım." }, { type: 'evil', text: "Birini kıskandım ve onun hakkında kötü konuştum." }]; // Shuffle stories for replayability function shuffleStories(arr) { for (var i = arr.length - 1; i > 0; i--) { var j = Math.floor(Math.random() * (i + 1)); var temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } } shuffleStories(stories); // --- Game State --- var currentLevel = 0; var score = 0; var maxLevel = stories.length; var canChoose = true; // --- UI Elements --- var charNode = new StoryCharacter(); charNode.x = 2048 / 2; charNode.y = 900; game.addChild(charNode); var storyText = new Text2('', { size: 80, fill: "#fff", align: "center", wordWrap: true, wordWrapWidth: 1400 }); storyText.anchor.set(0.5, 0); storyText.x = 2048 / 2; storyText.y = 1300; game.addChild(storyText); // Score display var scoreTxt = new Text2('Puan: 0', { size: 100, fill: "#fff" }); scoreTxt.anchor.set(0.5, 0); LK.gui.top.addChild(scoreTxt); // Level display var levelTxt = new Text2('Seviye: 1', { size: 60, fill: "#fff" }); levelTxt.anchor.set(0.5, 0); LK.gui.top.addChild(levelTxt); levelTxt.y = 120; // Heaven/Hell buttons are not needed for drag-to-choose, so we do not add them to the game scene. // (If you want to keep them as visual hints, you can set their visible=false or skip adding them.) // --- Drag-to-Choose Handling --- var dragChar = false; var dragOffsetX = 0; var dragOffsetY = 0; var charStartX = charNode.x; var charStartY = charNode.y; var heavenZoneX = 350; // px from right for heaven var hellZoneX = 350; // px from left for hell game.down = function (x, y, obj) { if (!canChoose) return; // Check if touch is on character var dx = x - charNode.x; var dy = y - charNode.y; var r = charNode.asset && charNode.asset.width ? charNode.asset.width / 2 : 160; if (dx * dx + dy * dy <= r * r) { dragChar = true; dragOffsetX = charNode.x - x; dragOffsetY = charNode.y - y; } }; game.move = function (x, y, obj) { if (!canChoose) return; if (dragChar) { // Move character with finger charNode.x = x + dragOffsetX; charNode.y = y + dragOffsetY; // Clamp Y to screen if (charNode.y < charNode.asset.height / 2) charNode.y = charNode.asset.height / 2; if (charNode.y > 2732 - charNode.asset.height / 2) charNode.y = 2732 - charNode.asset.height / 2; // Optional: feedback for zones if (charNode.x > 2048 - heavenZoneX) { // right side = heaven LK.effects.flashObject(charNode, 0x7ed6df, 100); } else if (charNode.x < hellZoneX) { // left side = hell LK.effects.flashObject(charNode, 0xe17055, 100); } } }; game.up = function (x, y, obj) { if (!canChoose) return; if (dragChar) { // Heaven zone: right 350px if (charNode.x > 2048 - heavenZoneX) { makeChoice('heaven'); } // Hell zone: left 350px else if (charNode.x < hellZoneX) { makeChoice('hell'); } // Otherwise, snap back to start else { tween(charNode, { x: charStartX, y: charStartY }, { duration: 200, easing: tween.easeOut }); } dragChar = false; } }; // --- Game Logic --- function showLevel(idx) { canChoose = true; var story = stories[idx]; charNode.setType(story.type); storyText.setText(story.text); scoreTxt.setText('Puan: ' + score); levelTxt.setText('Seviye: ' + (idx + 1)); // Reset character position charNode.x = charStartX; charNode.y = charStartY; } function makeChoice(choice) { canChoose = false; var story = stories[currentLevel]; var correct = false; if (choice === 'heaven' && story.type === 'good') correct = true; if (choice === 'hell' && story.type === 'evil') correct = true; // Feedback // (No button feedback, as buttons are not used in drag-to-choose) // Score if (correct) { score += 1; LK.effects.flashObject(charNode, 0x7ed957, 400); } else { score = Math.max(0, score - 1); LK.effects.flashObject(charNode, 0xe74c3c, 400); } scoreTxt.setText('Puan: ' + score); // Next level or end LK.setTimeout(function () { currentLevel += 1; if (currentLevel >= maxLevel) { // Win if score is at least half, else game over if (score >= Math.ceil(maxLevel / 2)) { LK.showYouWin(); } else { LK.showGameOver(); } } else { showLevel(currentLevel); } }, 700); } // --- Start Game --- showLevel(currentLevel); // --- Game update (not used for logic here, but required for completeness) --- game.update = function () { // No per-frame logic needed for MVP }; // --- Heaven/Hell Labels --- // Left: Cehennem var hellLabel = new Text2('Cehennem', { size: 100, fill: 0xE74C3C, fontWeight: "bold" }); hellLabel.anchor.set(0, 0.5); hellLabel.x = 40; hellLabel.y = 2048 / 2 > 1366 ? 1366 : 2048 / 2; // Center vertically, but never off screen game.addChild(hellLabel); // Right: Cennet var heavenLabel = new Text2('Cennet', { size: 100, fill: 0x7ED957, fontWeight: "bold" }); heavenLabel.anchor.set(1, 0.5); heavenLabel.x = 2048 - 40; heavenLabel.y = 2048 / 2 > 1366 ? 1366 : 2048 / 2; // Center vertically, but never off screen game.addChild(heavenLabel); ;
/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
/****
* Classes
****/
// Button class for Heaven/Hell
var ChoiceButton = Container.expand(function () {
var self = Container.call(this);
self.bg = null;
self.txt = null;
self.setType = function (type) {
if (self.bg) self.removeChild(self.bg);
var assetId = type === 'heaven' ? 'heaven_btn' : 'hell_btn';
self.bg = self.attachAsset(assetId, {
anchorX: 0.5,
anchorY: 0.5
});
};
self.setText = function (str) {
if (self.txt) self.removeChild(self.txt);
self.txt = new Text2(str, {
size: 80,
fill: "#fff"
});
self.txt.anchor.set(0.5, 0.5);
self.addChild(self.txt);
};
// Feedback animation
self.flash = function (color) {
tween(self.bg, {
tint: color
}, {
duration: 120,
easing: tween.linear,
onFinish: function onFinish() {
tween(self.bg, {
tint: 0xffffff
}, {
duration: 180
});
}
});
};
return self;
});
// Character display class
var StoryCharacter = Container.expand(function () {
var self = Container.call(this);
// Will be set by .setType
self.asset = null;
self.setType = function (type) {
if (self.asset) {
self.removeChild(self.asset);
}
var assetId = type === 'good' ? 'char_good' : 'char_evil';
self.asset = self.attachAsset(assetId, {
anchorX: 0.5,
anchorY: 0.5
});
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x222222
});
/****
* Game Code
****/
// Tween for button feedback
// Heaven and hell buttons
// Character shapes (good and evil)
// --- Story Data ---
var stories = [
// Level 1-3: Obvious
{
type: 'good',
text: "Yaşlı bir kadına markette yardım ettim."
}, {
type: 'evil',
text: "Arkadaşımın oyuncağını gizlice kırdım."
}, {
type: 'good',
text: "Bir sokak köpeğine su verdim."
},
// Level 4-6: Slightly ambiguous
{
type: 'evil',
text: "Sınavda kopya çektim."
}, {
type: 'good',
text: "Kardeşime ödevinde yardım ettim."
}, {
type: 'evil',
text: "Bir arkadaşımı haksız yere suçladım."
},
// Level 7-9: More nuanced
{
type: 'good',
text: "Bir arkadaşımın sırrını kimseye söylemedim."
}, {
type: 'evil',
text: "Birine yalan söyledim ama kimse zarar görmedi."
}, {
type: 'good',
text: "Bir gün boyunca hiç kimseye kötü davranmadım."
},
// Level 10+: Harder
{
type: 'evil',
text: "Birine yardım etmem gerekirdi ama etmedim."
}, {
type: 'good',
text: "Bir arkadaşımın moralini düzeltmek için ona hediye aldım."
}, {
type: 'evil',
text: "Birini kıskandım ve onun hakkında kötü konuştum."
}];
// Shuffle stories for replayability
function shuffleStories(arr) {
for (var i = arr.length - 1; i > 0; i--) {
var j = Math.floor(Math.random() * (i + 1));
var temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
shuffleStories(stories);
// --- Game State ---
var currentLevel = 0;
var score = 0;
var maxLevel = stories.length;
var canChoose = true;
// --- UI Elements ---
var charNode = new StoryCharacter();
charNode.x = 2048 / 2;
charNode.y = 900;
game.addChild(charNode);
var storyText = new Text2('', {
size: 80,
fill: "#fff",
align: "center",
wordWrap: true,
wordWrapWidth: 1400
});
storyText.anchor.set(0.5, 0);
storyText.x = 2048 / 2;
storyText.y = 1300;
game.addChild(storyText);
// Score display
var scoreTxt = new Text2('Puan: 0', {
size: 100,
fill: "#fff"
});
scoreTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreTxt);
// Level display
var levelTxt = new Text2('Seviye: 1', {
size: 60,
fill: "#fff"
});
levelTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(levelTxt);
levelTxt.y = 120;
// Heaven/Hell buttons are not needed for drag-to-choose, so we do not add them to the game scene.
// (If you want to keep them as visual hints, you can set their visible=false or skip adding them.)
// --- Drag-to-Choose Handling ---
var dragChar = false;
var dragOffsetX = 0;
var dragOffsetY = 0;
var charStartX = charNode.x;
var charStartY = charNode.y;
var heavenZoneX = 350; // px from right for heaven
var hellZoneX = 350; // px from left for hell
game.down = function (x, y, obj) {
if (!canChoose) return;
// Check if touch is on character
var dx = x - charNode.x;
var dy = y - charNode.y;
var r = charNode.asset && charNode.asset.width ? charNode.asset.width / 2 : 160;
if (dx * dx + dy * dy <= r * r) {
dragChar = true;
dragOffsetX = charNode.x - x;
dragOffsetY = charNode.y - y;
}
};
game.move = function (x, y, obj) {
if (!canChoose) return;
if (dragChar) {
// Move character with finger
charNode.x = x + dragOffsetX;
charNode.y = y + dragOffsetY;
// Clamp Y to screen
if (charNode.y < charNode.asset.height / 2) charNode.y = charNode.asset.height / 2;
if (charNode.y > 2732 - charNode.asset.height / 2) charNode.y = 2732 - charNode.asset.height / 2;
// Optional: feedback for zones
if (charNode.x > 2048 - heavenZoneX) {
// right side = heaven
LK.effects.flashObject(charNode, 0x7ed6df, 100);
} else if (charNode.x < hellZoneX) {
// left side = hell
LK.effects.flashObject(charNode, 0xe17055, 100);
}
}
};
game.up = function (x, y, obj) {
if (!canChoose) return;
if (dragChar) {
// Heaven zone: right 350px
if (charNode.x > 2048 - heavenZoneX) {
makeChoice('heaven');
}
// Hell zone: left 350px
else if (charNode.x < hellZoneX) {
makeChoice('hell');
}
// Otherwise, snap back to start
else {
tween(charNode, {
x: charStartX,
y: charStartY
}, {
duration: 200,
easing: tween.easeOut
});
}
dragChar = false;
}
};
// --- Game Logic ---
function showLevel(idx) {
canChoose = true;
var story = stories[idx];
charNode.setType(story.type);
storyText.setText(story.text);
scoreTxt.setText('Puan: ' + score);
levelTxt.setText('Seviye: ' + (idx + 1));
// Reset character position
charNode.x = charStartX;
charNode.y = charStartY;
}
function makeChoice(choice) {
canChoose = false;
var story = stories[currentLevel];
var correct = false;
if (choice === 'heaven' && story.type === 'good') correct = true;
if (choice === 'hell' && story.type === 'evil') correct = true;
// Feedback
// (No button feedback, as buttons are not used in drag-to-choose)
// Score
if (correct) {
score += 1;
LK.effects.flashObject(charNode, 0x7ed957, 400);
} else {
score = Math.max(0, score - 1);
LK.effects.flashObject(charNode, 0xe74c3c, 400);
}
scoreTxt.setText('Puan: ' + score);
// Next level or end
LK.setTimeout(function () {
currentLevel += 1;
if (currentLevel >= maxLevel) {
// Win if score is at least half, else game over
if (score >= Math.ceil(maxLevel / 2)) {
LK.showYouWin();
} else {
LK.showGameOver();
}
} else {
showLevel(currentLevel);
}
}, 700);
}
// --- Start Game ---
showLevel(currentLevel);
// --- Game update (not used for logic here, but required for completeness) ---
game.update = function () {
// No per-frame logic needed for MVP
};
// --- Heaven/Hell Labels ---
// Left: Cehennem
var hellLabel = new Text2('Cehennem', {
size: 100,
fill: 0xE74C3C,
fontWeight: "bold"
});
hellLabel.anchor.set(0, 0.5);
hellLabel.x = 40;
hellLabel.y = 2048 / 2 > 1366 ? 1366 : 2048 / 2; // Center vertically, but never off screen
game.addChild(hellLabel);
// Right: Cennet
var heavenLabel = new Text2('Cennet', {
size: 100,
fill: 0x7ED957,
fontWeight: "bold"
});
heavenLabel.anchor.set(1, 0.5);
heavenLabel.x = 2048 - 40;
heavenLabel.y = 2048 / 2 > 1366 ? 1366 : 2048 / 2; // Center vertically, but never off screen
game.addChild(heavenLabel);
;