User prompt
Seçilen meme karakternin görseli kahramanımızın görseli olur
User prompt
Yeni kahraman assenti oluştur
User prompt
Start game butonuna tıklandığında ekrandaki tüm her şey oyundan kaldırılır ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Tüm ekranı yeni sayfa kaplar
User prompt
Strat game butonuna tıklandığında yeni sayfa oluştur ve ekrana boş bir sayfa yansıt
User prompt
Start game yazsını 2 katına çıkart
User prompt
Spin again yazsını Start Game Olarak değiştir
User prompt
Yeni özellikler katacağım hazır mısın
User prompt
Pointer 80 birim aşağıya kaydır
User prompt
21 tane yeni meme assenti oluştur
User prompt
Discover yazısını 80 birim aşağıya kaydır ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Spin to meme yazısını 80 birim aşağıya kaydır
User prompt
Discover yazısını siyah yap
User prompt
Spın to meme yazısını siyah yap
User prompt
Tüm yazıları siyah yap
User prompt
Yeni arkaplan assenti oluştur
User prompt
Çark dönerken wheel sounds oynatılsın
User prompt
Meme isimlerini kaldır
User prompt
Çarkın ortasındaki assenti kaldır
User prompt
Çarktan memlerin yazılarını kaldır
User prompt
Çarktaki yazıları kaldır
User prompt
Memelerin üstünde yazan yazıları kaldır
User prompt
Pointer assentini 50 birim aşağıya6indir
User prompt
Pointer assentini 100 birim aşağıya indir
User prompt
Pointer assentini 60 birim aşağıya indir
/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
var storage = LK.import("@upit/storage.v1");
/****
* Classes
****/
var Hero = Container.expand(function () {
var self = Container.call(this);
// Default hero asset (will be replaced with selected meme)
var heroGraphic = self.attachAsset('hero', {
anchorX: 0.5,
anchorY: 0.5
});
// Method to update hero with selected meme
self.updateWithMeme = function (memeIndex) {
// Remove current graphic
self.removeChild(heroGraphic);
// Add new meme image based on index
var memeAssetName = 'meme' + (memeIndex % 41 + 1);
heroGraphic = LK.getAsset(memeAssetName, {
anchorX: 0.5,
anchorY: 0.5
});
// Scale to appropriate size
heroGraphic.scale.set(0.75);
self.addChild(heroGraphic);
};
return self;
});
var MemeResultCard = Container.expand(function () {
var self = Container.call(this);
// Initially hidden
self.visible = false;
var card = self.attachAsset('memeCard', {
anchorX: 0.5,
anchorY: 0.5
});
// Meme image placeholder
var memeImage = null;
// Meme title
var titleText = new Text2("Your Spirit Meme", {
size: 80,
fill: 0x333333
});
titleText.anchor.set(0.5, 0);
titleText.y = -500;
self.addChild(titleText);
// Meme name
var memeNameText = new Text2("", {
size: 60,
fill: 0xFF5722
});
memeNameText.anchor.set(0.5, 0);
memeNameText.y = -400;
self.addChild(memeNameText);
// Description
var descriptionText = new Text2("", {
size: 40,
fill: 0x555555
});
descriptionText.anchor.set(0.5, 0);
descriptionText.y = -280;
descriptionText.wordWrap = true;
descriptionText.wordWrapWidth = 1400;
self.addChild(descriptionText);
// Close button
var closeButton = new Text2("START GAME", {
size: 100,
fill: 0x3498DB
});
closeButton.anchor.set(0.5, 0.5);
closeButton.y = 550;
closeButton.interactive = true;
self.addChild(closeButton);
closeButton.down = function () {
tween(closeButton, {
scaleX: 0.9,
scaleY: 0.9
}, {
duration: 100
});
};
closeButton.up = function () {
tween(closeButton, {
scaleX: 1,
scaleY: 1
}, {
duration: 100,
onFinish: function onFinish() {
self.hide();
if (self.onClose) {
self.onClose();
// Remove all game elements except hero
game.removeChild(wheel);
game.removeChild(pointer);
game.removeChild(spinButton);
game.removeChild(gameTitle);
game.removeChild(subtitle);
game.removeChild(background);
game.removeChild(resultCard);
// Position hero in center after clearing screen
hero.x = 2048 / 2;
hero.y = 2732 / 2;
}
}
});
};
self.showResult = function (memeName, index) {
memeNameText.setText(""); // Remove meme name text
descriptionText.setText(""); // Remove description text
// Remove previous meme image if exists
if (memeImage) {
self.removeChild(memeImage);
memeImage = null;
}
// Add new meme image based on index
var memeAssetName = 'meme' + (index % 41 + 1);
memeImage = LK.getAsset(memeAssetName, {
anchorX: 0.5,
anchorY: 0.5
});
memeImage.y = 100;
self.addChild(memeImage);
self.visible = true;
// Animate card appearance
card.scaleX = 0.1;
card.scaleY = 0.1;
card.alpha = 0;
tween(card, {
scaleX: 1,
scaleY: 1,
alpha: 1
}, {
duration: 500,
easing: tween.elasticOut
});
};
self.hide = function () {
tween(card, {
scaleX: 0.1,
scaleY: 0.1,
alpha: 0
}, {
duration: 300,
onFinish: function onFinish() {
self.visible = false;
}
});
};
function getMemeDescription(memeName, index) {
var descriptions = ["You're observant and always noticing new opportunities, even when you should be focusing on what's right in front of you. You appreciate the complexity of choices and aren't afraid to show interest in something new and exciting.", "You're expressive and dramatic, never afraid to show your emotions. When you're upset, everyone knows it. You're also great at standing your ground even when faced with confusion or chaos.", "You have clear preferences and aren't afraid to express what you like and dislike. You make decisions confidently and know exactly what works for you. You're also not afraid to pass on trends that don't match your vibe.", "Your mind works in fascinating ways, and you love exploring ideas to their fullest extent. You can take simple concepts and develop them into complex philosophies. You appreciate intellectual growth and deep thinking.", "You're contemplative and always considering new perspectives. You challenge conventional wisdom and aren't afraid to question assumptions. Your thoughtful nature makes you excellent at solving problems.", "You're authentic in your reactions and wear your emotions on your sleeve. When something surprises you, everyone knows it. You bring honesty and genuine reactions to every situation.", "Much wow! Such personality! You're quirky, fun-loving, and don't take yourself too seriously. You approach life with curiosity and enthusiasm, finding joy in simple pleasures.", "You remain calm even when everything around you is falling apart. Your ability to accept challenging situations with a sense of humor makes you resilient. You're the steady presence others look to during chaos.", "You celebrate victories, both big and small. Your positive attitude helps you recognize achievements and builds confidence. You inspire others with your enthusiasm for life's successes.", "You embrace your awkwardness and aren't afraid to be yourself, even in uncomfortable situations. Your authenticity makes you relatable, and you find humor in life's awkward moments.", "You're innovative and think outside the box. Your creative approach to problems leads to unique solutions that others might not see.", "You're resilient and adaptive, thriving even in challenging situations. Your ability to find humor in difficulties makes you unstoppable.", "You're bold and unafraid to make a statement. When you enter a room, people notice, and your confidence is contagious to those around you.", "You're witty and quick with comebacks. Your sense of humor brightens people's days and helps diffuse tense situations.", "You're thoughtful and considerate, always putting others before yourself. Your empathy makes you an excellent friend and confidant.", "You're spontaneous and embrace life's unexpected moments. Your ability to go with the flow makes adventures more exciting.", "You're ambitious and persistent, never giving up on your goals even when faced with obstacles. Your determination inspires others.", "You're perceptive and notice details others miss. Your attention to the little things makes you excellent at understanding complex situations.", "You're balanced and maintain perspective even in chaotic times. Your ability to stay centered makes you a reliable presence.", "You're enthusiastic and approach life with infectious energy. Your passion ignites excitement in those around you.", "You have a keen eye for value and opportunities. Always finding ways to maximize gains with minimal effort - a natural entrepreneur!", "You're adaptable and practical, making the best of any situation with a quirky sense of humor. You navigate life with creative resourcefulness.", "You have a mischievous streak and enjoy creating a bit of chaos. Your adventurous spirit makes life exciting for everyone around you.", "You're contemplative and introspective, often lost in thought about life's deeper meanings. Your philosophical nature brings wisdom to conversations.", "You're expressive and communicate volumes without saying a word. Your authenticity resonates with people on a deeper level.", "You attract misfortune with surprising regularity, but face it with remarkable resilience and humor. Your ability to bounce back inspires others.", "You're steadfast in your opinions and enjoy intellectual debates. Your logical thinking and articulate expression make you persuasive in arguments.", "You maintain a slightly pessimistic outlook as a defense mechanism. Your sarcastic humor and straightforward nature are refreshing to those who know you.", "You possess a clever wit and enjoy a bit of harmless teasing. Your ability to find humor in everyday situations makes you delightful company.", "You're worldly and experienced, with fascinating stories to share. Your confidence and charm draw people to you naturally.", "You're intensely passionate about the people and things you care about. Your enthusiasm, while sometimes overwhelming, comes from a place of genuine love.", "You're sensitive to minor inconveniences and aren't afraid to express your frustrations. Your honesty about life's smaller struggles is relatable to everyone.", "You're efficient and value your time highly. You cut through unnecessary complications to get straight to what's important.", "You're optimistic and believe in possibilities. Your enthusiasm for new ventures inspires confidence in others.", "You celebrate life's victories with genuine joy. Your positive attitude and confidence help you overcome obstacles with grace.", "You question everything and aren't afraid to challenge conventional thinking. Your skeptical nature leads to deeper insights and understanding.", "You're perceptive about patterns and connections others miss. Your mind works in fascinating, sometimes paranoid ways that lead to unique insights.", "You're passionate about your interests and willing to invest in what you love. Your enthusiasm is contagious and inspires others to pursue their passions.", "You have a playful sense of humor that catches people off guard. Your ability to bring joy through unexpected means makes you unforgettable.", "You're practical and straightforward. You appreciate clear communication and have little patience for unnecessary complications.", "You're charming with a mischievous streak. Your ability to deliver uncomfortable truths with a smile makes difficult conversations easier."];
return descriptions[index % descriptions.length];
}
return self;
});
var SpinButton = Container.expand(function () {
var self = Container.call(this);
var buttonGraphic = self.attachAsset('spinButton', {
anchorX: 0.5,
anchorY: 0.5
});
var label = new Text2("SPIN", {
size: 60,
fill: 0xFFFFFF
});
label.anchor.set(0.5, 0.5);
self.addChild(label);
self.down = function (x, y, obj) {
tween(buttonGraphic, {
scaleX: 0.9,
scaleY: 0.9
}, {
duration: 100
});
};
self.up = function (x, y, obj) {
tween(buttonGraphic, {
scaleX: 1,
scaleY: 1
}, {
duration: 100,
onFinish: function onFinish() {
if (self.onSpin) {
self.onSpin();
}
}
});
};
return self;
});
var SpinWheel = Container.expand(function () {
var self = Container.call(this);
// Wheel background
var wheelBase = self.attachAsset('wheel', {
anchorX: 0.5,
anchorY: 0.5
});
// Define meme categories
var memeCategories = ["Distracted Boyfriend", "Woman Yelling at Cat", "Drake Hotline Bling", "Expanding Brain", "Think About It", "Surprised Pikachu", "Doge", "This is Fine", "Success Kid", "Awkward Penguin", "Galaxy Brain", "Disaster Girl", "Hide the Pain Harold", "Confused Math Lady", "One Does Not Simply", "Evil Kermit", "SpongeBob Meme", "Crying Jordan", "Confused Nick Young", "Roll Safe", "Stonks", "Bernie Mittens", "Disaster Girl", "Sad Keanu", "Pepe the Frog", "Bad Luck Brian", "Change My Mind", "Grumpy Cat", "Condescending Wonka", "The Most Interesting Man", "Overly Attached Girlfriend", "First World Problems", "Ain't Nobody Got Time", "Doge to the Moon", "Success Baby", "Futurama Fry", "Conspiracy Keanu", "Shut Up and Take My Money", "Rick Roll", "That Would Be Great", "Willy Wonka"];
// Create wheel sections
for (var i = 0; i < memeCategories.length; i++) {
var section = new WheelSection(i, memeCategories.length, memeCategories[i]);
self.addChild(section);
}
// Track wheel state
self.isSpinning = false;
self.currentRotation = 0;
self.targetRotation = 0;
self.spinSpeed = 0;
self.deceleration = 0;
self.memeSections = memeCategories;
self.spin = function () {
if (self.isSpinning) return;
// Play spin sound
LK.getSound('spinSound').play();
self.isSpinning = true;
self.spinSpeed = 0.2 + Math.random() * 0.1; // Random starting speed
// Determine how many rotations (5-10) plus a random section
var rotations = 5 + Math.floor(Math.random() * 5);
var randomSection = Math.floor(Math.random() * 41); // Updated to include all 41 memes
var sectionAngle = 2 * Math.PI / memeCategories.length;
// Calculate target rotation: current + full rotations + position to the random section
self.targetRotation = self.currentRotation + rotations * 2 * Math.PI + randomSection * sectionAngle;
// Calculate deceleration rate to gradually stop at the target
var totalAngleToTravel = self.targetRotation - self.currentRotation;
self.deceleration = self.spinSpeed * self.spinSpeed / (2 * totalAngleToTravel);
};
self.update = function () {
if (self.isSpinning) {
// Apply current speed
self.currentRotation += self.spinSpeed;
self.rotation = self.currentRotation;
// Play wheel sound while spinning
if (!self.wheelSoundPlaying) {
LK.getSound('Wheel').play();
self.wheelSoundPlaying = true;
}
// Decelerate
if (self.currentRotation < self.targetRotation) {
self.spinSpeed -= self.deceleration;
// Don't let speed go negative
if (self.spinSpeed <= 0.001) {
self.spinSpeed = 0.001;
}
} else {
// We've reached or passed the target
self.isSpinning = false;
self.wheelSoundPlaying = false;
self.currentRotation = self.targetRotation;
self.rotation = self.currentRotation;
// Calculate which section is at the top (pointer position)
self.onSpinComplete();
}
} else {
// Stop wheel sound when not spinning
if (self.wheelSoundPlaying) {
LK.getSound('Wheel').stop();
self.wheelSoundPlaying = false;
}
}
};
self.onSpinComplete = function () {
// Calculate which section is at the pointer (top)
var pointingAngle = (-self.rotation % (2 * Math.PI) + 2 * Math.PI) % (2 * Math.PI);
var sectionAngle = 2 * Math.PI / memeCategories.length;
var sectionIndex = Math.floor(pointingAngle / sectionAngle);
sectionIndex = (memeCategories.length - sectionIndex) % memeCategories.length;
// Report the result
if (self.onResult) {
self.onResult(memeCategories[sectionIndex], sectionIndex);
}
// Play result sound
LK.getSound('resultSound').play();
};
return self;
});
var WheelSection = Container.expand(function (sectionIndex, totalSections, text) {
var self = Container.call(this);
var radius = 650;
var angle = sectionIndex / totalSections * Math.PI * 2;
var nextAngle = (sectionIndex + 1) / totalSections * Math.PI * 2;
// Create a custom shape for the section using LK.getAsset
var sectionShape = {
width: radius * 2,
height: radius * 2,
color: getColorForSection(sectionIndex),
shape: 'section_' + sectionIndex
};
var section = LK.getAsset('section_' + sectionIndex, {
anchorX: 0.5,
anchorY: 0.5
});
// Position it correctly
self.addChild(section);
// No text labels on wheel sections
function getColorForSection(index) {
// A few vibrant colors that work well together
var colors = [0xFF5757,
// Red
0x47B8FF,
// Blue
0xFFD557,
// Yellow
0x7DFF57,
// Green
0xFF57F7,
// Pink
0x57FFBD,
// Teal
0xFF8A57,
// Orange
0xA757FF,
// Purple
0x57FFFF,
// Cyan
0xBCFF57,
// Lime
0xFF9966,
// Coral
0x66FF99,
// Light Green
0x9966FF,
// Lavender
0xFF66FF,
// Magenta
0x66FFFF,
// Light Blue
0xFFFF66,
// Light Yellow
0x996633,
// Brown
0x3399FF,
// Sky Blue
0xFF3399,
// Rose
0x33FF99 // Seafoam
];
return colors[index % colors.length];
}
return self;
});
/****
* Initialize Game
****/
// Initialize shapes for all wheel sections
var game = new LK.Game({
backgroundColor: 0x2c3e50
});
/****
* Game Code
****/
// Set up game elements
// Initialize shapes for all wheel sections
for (var i = 0; i < 41; i++) {
var radius = 650;
var angle = i / 41 * Math.PI * 2;
var nextAngle = (i + 1) / 41 * Math.PI * 2;
// Define section shape
}
// Add background image
var background = LK.getAsset('background', {
anchorX: 0.5,
anchorY: 0.5
});
background.x = 2048 / 2;
background.y = 2732 / 2;
game.addChild(background);
var wheel = new SpinWheel();
game.addChild(wheel);
wheel.x = 2048 / 2;
wheel.y = 2732 / 2 - 200;
// Add pointer
var pointer = LK.getAsset('pointer', {
anchorX: 0.5,
anchorY: 0
});
game.addChild(pointer);
pointer.x = wheel.x;
pointer.y = wheel.y - wheel.height / 2 - 20 + 230; // Moved 230 units down (150+80)
pointer.rotation = Math.PI; // Point downward
// Add spin button
var spinButton = new SpinButton();
game.addChild(spinButton);
spinButton.x = wheel.x;
spinButton.y = wheel.y + wheel.height / 2 + 200;
// Add result card (initially hidden)
var resultCard = new MemeResultCard();
game.addChild(resultCard);
resultCard.x = wheel.x;
resultCard.y = wheel.y;
// Title
var gameTitle = new Text2("Spin to Meme", {
size: 120,
fill: 0x000000
});
gameTitle.anchor.set(0.5, 0.5);
gameTitle.x = wheel.x;
gameTitle.y = 280; // Moved 80 units down from original position
game.addChild(gameTitle);
// Subtitle
var subtitle = new Text2("Discover Your Spirit Meme", {
size: 60,
fill: 0x000000
});
subtitle.anchor.set(0.5, 0.5);
subtitle.x = wheel.x;
subtitle.y = 380; // Moved 80 units down from original position
game.addChild(subtitle);
// Create and add hero (initially with default appearance)
var hero = new Hero();
hero.x = wheel.x + 700; // Position to the right side of the wheel
hero.y = wheel.y;
game.addChild(hero);
// Game state
var isGameActive = true;
// Connect components
spinButton.onSpin = function () {
if (isGameActive && !wheel.isSpinning && !resultCard.visible) {
wheel.spin();
}
};
wheel.onResult = function (meme, index) {
LK.setTimeout(function () {
// Update hero with selected meme
hero.updateWithMeme(index);
// Show result card
resultCard.showResult(meme, index);
}, 500);
};
resultCard.onClose = function () {
isGameActive = true;
};
// Game update loop
game.update = function () {
if (wheel) {
wheel.update();
}
};
// Start background music
LK.playMusic('bgMusic'); ===================================================================
--- original.js
+++ change.js
@@ -6,8 +6,31 @@
/****
* Classes
****/
+var Hero = Container.expand(function () {
+ var self = Container.call(this);
+ // Default hero asset (will be replaced with selected meme)
+ var heroGraphic = self.attachAsset('hero', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ // Method to update hero with selected meme
+ self.updateWithMeme = function (memeIndex) {
+ // Remove current graphic
+ self.removeChild(heroGraphic);
+ // Add new meme image based on index
+ var memeAssetName = 'meme' + (memeIndex % 41 + 1);
+ heroGraphic = LK.getAsset(memeAssetName, {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ // Scale to appropriate size
+ heroGraphic.scale.set(0.75);
+ self.addChild(heroGraphic);
+ };
+ return self;
+});
var MemeResultCard = Container.expand(function () {
var self = Container.call(this);
// Initially hidden
self.visible = false;
@@ -69,15 +92,19 @@
onFinish: function onFinish() {
self.hide();
if (self.onClose) {
self.onClose();
- // Remove all game elements
+ // Remove all game elements except hero
game.removeChild(wheel);
game.removeChild(pointer);
game.removeChild(spinButton);
game.removeChild(gameTitle);
game.removeChild(subtitle);
game.removeChild(background);
+ game.removeChild(resultCard);
+ // Position hero in center after clearing screen
+ hero.x = 2048 / 2;
+ hero.y = 2732 / 2;
}
}
});
};
@@ -383,8 +410,13 @@
subtitle.anchor.set(0.5, 0.5);
subtitle.x = wheel.x;
subtitle.y = 380; // Moved 80 units down from original position
game.addChild(subtitle);
+// Create and add hero (initially with default appearance)
+var hero = new Hero();
+hero.x = wheel.x + 700; // Position to the right side of the wheel
+hero.y = wheel.y;
+game.addChild(hero);
// Game state
var isGameActive = true;
// Connect components
spinButton.onSpin = function () {
@@ -393,8 +425,11 @@
}
};
wheel.onResult = function (meme, index) {
LK.setTimeout(function () {
+ // Update hero with selected meme
+ hero.updateWithMeme(index);
+ // Show result card
resultCard.showResult(meme, index);
}, 500);
};
resultCard.onClose = function () {