User prompt
keep on ↪💡 Consider importing and using the following plugins: @upit/tween.v1, @upit/storage.v1
User prompt
Emoji Evolution Clicker
Initial prompt
cookie clicker but after you click fo a bit you get different emojis so lets say to begin, 30, then different emoji, then bit more, add happy, shocked, sad, scared, sick ect, add more like, vomit, poo emoji, different food and fruit, various animals, animal faces, flags, coulors, utensils to clicker face
/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
var storage = LK.import("@upit/storage.v1");
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x000000
});
/****
* Game Code
****/
// Set background
game.setBackgroundColor(0x87CEEB);
// Emoji categories and progression
var emojiCategories = {
basic: ['😊', '😀', '🙂'],
emotions: ['😄', '😮', '😢', '😱', '🤢', '😷', '😵', '🤯'],
bodily: ['🤮', '💩', '🤧', '😪'],
food: ['🍎', '🍌', '🍕', '🍔', '🍰', '🥕', '🍇', '🍊'],
animals: ['🐶', '🐱', '🐭', '🐻', '🦁', '🐸', '🐷', '🦊'],
flags: ['🇺🇸', '🇬🇧', '🇫🇷', '🇯🇵', '🇩🇪', '🇮🇹', '🇨🇦', '🇧🇷'],
colors: ['🔴', '🔵', '🟢', '🟡', '🟣', '🟠', '⚫', '⚪'],
utensils: ['🍴', '🥄', '🔪', '🍽️', '🥢', '🧂', '🍷', '☕']
};
var categoryOrder = ['basic', 'emotions', 'bodily', 'food', 'animals', 'flags', 'colors', 'utensils'];
// Game state
var clickCount = storage.clickCount || 0;
var totalScore = storage.totalScore || 0;
var currentCategory = storage.currentCategory || 'basic';
var currentEmojiIndex = storage.currentEmojiIndex || 0;
// Create main emoji display
var emojiContainer = game.addChild(new Container());
emojiContainer.x = 2048 / 2;
emojiContainer.y = 2732 / 2;
var emojiBase = emojiContainer.attachAsset('emojiBase', {
anchorX: 0.5,
anchorY: 0.5
});
var emojiText = new Text2(emojiCategories[currentCategory][currentEmojiIndex], {
size: 120,
fill: 0x000000
});
emojiText.anchor.set(0.5, 0.5);
emojiContainer.addChild(emojiText);
// Score display
var scoreText = new Text2('Clicks: ' + clickCount, {
size: 60,
fill: 0xFFFFFF
});
scoreText.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreText);
// Progress display
var progressText = new Text2('Next evolution in: ' + (30 - clickCount % 30) + ' clicks', {
size: 40,
fill: 0xFFFFFF
});
progressText.anchor.set(0.5, 0);
progressText.y = 80;
LK.gui.top.addChild(progressText);
// Category display
var categoryText = new Text2('Category: ' + currentCategory.toUpperCase(), {
size: 35,
fill: 0xFFD700
});
categoryText.anchor.set(0.5, 1);
LK.gui.bottom.addChild(categoryText);
function updateEmoji() {
var categoryIndex = categoryOrder.indexOf(currentCategory);
var currentEmojis = emojiCategories[currentCategory];
// Get next emoji in current category
currentEmojiIndex = (currentEmojiIndex + 1) % currentEmojis.length;
// If we've cycled through all emojis in category and have more categories
if (currentEmojiIndex === 0 && categoryIndex < categoryOrder.length - 1) {
currentCategory = categoryOrder[categoryIndex + 1];
currentEmojis = emojiCategories[currentCategory];
categoryText.setText('Category: ' + currentCategory.toUpperCase());
}
emojiText.setText(currentEmojis[currentEmojiIndex]);
// Save progress
storage.currentCategory = currentCategory;
storage.currentEmojiIndex = currentEmojiIndex;
}
function handleClick() {
clickCount++;
totalScore++;
// Update displays
scoreText.setText('Clicks: ' + clickCount);
progressText.setText('Next evolution in: ' + (30 - clickCount % 30) + ' clicks');
// Click animation
tween.stop(emojiContainer, {
scaleX: true,
scaleY: true
});
tween(emojiContainer, {
scaleX: 1.2,
scaleY: 1.2
}, {
duration: 100,
easing: tween.easeOut,
onFinish: function onFinish() {
tween(emojiContainer, {
scaleX: 1,
scaleY: 1
}, {
duration: 100,
easing: tween.easeIn
});
}
});
// Check for evolution
if (clickCount % 30 === 0) {
updateEmoji();
// Evolution animation
tween(emojiContainer, {
scaleX: 1.5,
scaleY: 1.5,
rotation: Math.PI * 2
}, {
duration: 500,
easing: tween.bounceOut,
onFinish: function onFinish() {
emojiContainer.rotation = 0;
tween(emojiContainer, {
scaleX: 1,
scaleY: 1
}, {
duration: 200,
easing: tween.easeOut
});
}
});
// Flash effect
LK.effects.flashScreen(0xFFD700, 300);
}
// Play sound
LK.getSound('clickSound').play();
// Save progress
storage.clickCount = clickCount;
storage.totalScore = totalScore;
}
// Click handler
emojiContainer.down = function (x, y, obj) {
handleClick();
};
// Make sure the emoji is interactive
emojiContainer.interactive = true; /****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
var storage = LK.import("@upit/storage.v1");
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x000000
});
/****
* Game Code
****/
// Set background
game.setBackgroundColor(0x87CEEB);
// Emoji categories and progression
var emojiCategories = {
basic: ['😊', '😀', '🙂'],
emotions: ['😄', '😮', '😢', '😱', '🤢', '😷', '😵', '🤯'],
bodily: ['🤮', '💩', '🤧', '😪'],
food: ['🍎', '🍌', '🍕', '🍔', '🍰', '🥕', '🍇', '🍊'],
animals: ['🐶', '🐱', '🐭', '🐻', '🦁', '🐸', '🐷', '🦊'],
flags: ['🇺🇸', '🇬🇧', '🇫🇷', '🇯🇵', '🇩🇪', '🇮🇹', '🇨🇦', '🇧🇷'],
colors: ['🔴', '🔵', '🟢', '🟡', '🟣', '🟠', '⚫', '⚪'],
utensils: ['🍴', '🥄', '🔪', '🍽️', '🥢', '🧂', '🍷', '☕']
};
var categoryOrder = ['basic', 'emotions', 'bodily', 'food', 'animals', 'flags', 'colors', 'utensils'];
// Game state
var clickCount = storage.clickCount || 0;
var totalScore = storage.totalScore || 0;
var currentCategory = storage.currentCategory || 'basic';
var currentEmojiIndex = storage.currentEmojiIndex || 0;
// Create main emoji display
var emojiContainer = game.addChild(new Container());
emojiContainer.x = 2048 / 2;
emojiContainer.y = 2732 / 2;
var emojiBase = emojiContainer.attachAsset('emojiBase', {
anchorX: 0.5,
anchorY: 0.5
});
var emojiText = new Text2(emojiCategories[currentCategory][currentEmojiIndex], {
size: 120,
fill: 0x000000
});
emojiText.anchor.set(0.5, 0.5);
emojiContainer.addChild(emojiText);
// Score display
var scoreText = new Text2('Clicks: ' + clickCount, {
size: 60,
fill: 0xFFFFFF
});
scoreText.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreText);
// Progress display
var progressText = new Text2('Next evolution in: ' + (30 - clickCount % 30) + ' clicks', {
size: 40,
fill: 0xFFFFFF
});
progressText.anchor.set(0.5, 0);
progressText.y = 80;
LK.gui.top.addChild(progressText);
// Category display
var categoryText = new Text2('Category: ' + currentCategory.toUpperCase(), {
size: 35,
fill: 0xFFD700
});
categoryText.anchor.set(0.5, 1);
LK.gui.bottom.addChild(categoryText);
function updateEmoji() {
var categoryIndex = categoryOrder.indexOf(currentCategory);
var currentEmojis = emojiCategories[currentCategory];
// Get next emoji in current category
currentEmojiIndex = (currentEmojiIndex + 1) % currentEmojis.length;
// If we've cycled through all emojis in category and have more categories
if (currentEmojiIndex === 0 && categoryIndex < categoryOrder.length - 1) {
currentCategory = categoryOrder[categoryIndex + 1];
currentEmojis = emojiCategories[currentCategory];
categoryText.setText('Category: ' + currentCategory.toUpperCase());
}
emojiText.setText(currentEmojis[currentEmojiIndex]);
// Save progress
storage.currentCategory = currentCategory;
storage.currentEmojiIndex = currentEmojiIndex;
}
function handleClick() {
clickCount++;
totalScore++;
// Update displays
scoreText.setText('Clicks: ' + clickCount);
progressText.setText('Next evolution in: ' + (30 - clickCount % 30) + ' clicks');
// Click animation
tween.stop(emojiContainer, {
scaleX: true,
scaleY: true
});
tween(emojiContainer, {
scaleX: 1.2,
scaleY: 1.2
}, {
duration: 100,
easing: tween.easeOut,
onFinish: function onFinish() {
tween(emojiContainer, {
scaleX: 1,
scaleY: 1
}, {
duration: 100,
easing: tween.easeIn
});
}
});
// Check for evolution
if (clickCount % 30 === 0) {
updateEmoji();
// Evolution animation
tween(emojiContainer, {
scaleX: 1.5,
scaleY: 1.5,
rotation: Math.PI * 2
}, {
duration: 500,
easing: tween.bounceOut,
onFinish: function onFinish() {
emojiContainer.rotation = 0;
tween(emojiContainer, {
scaleX: 1,
scaleY: 1
}, {
duration: 200,
easing: tween.easeOut
});
}
});
// Flash effect
LK.effects.flashScreen(0xFFD700, 300);
}
// Play sound
LK.getSound('clickSound').play();
// Save progress
storage.clickCount = clickCount;
storage.totalScore = totalScore;
}
// Click handler
emojiContainer.down = function (x, y, obj) {
handleClick();
};
// Make sure the emoji is interactive
emojiContainer.interactive = true;