/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ var AnimalBlock = Container.expand(function (animalType) { var self = Container.call(this); // Store animal type self.animalType = animalType; // Create block graphics based on animal type var blockColors = { 'pango': 0x4A90E2, 'squirrel': 0x8B4513, 'piggy': 0xFFB6C1, 'fox': 0xFF6347, 'rabbit': 0xF5F5DC }; var blockAsset = animalType + 'Block'; var blockGraphics = self.attachAsset(blockAsset, { anchorX: 0.5, anchorY: 0.5 }); // Add 3D effect with shadow var shadowBlock = self.attachAsset(blockAsset, { anchorX: 0.5, anchorY: 0.5, x: 10, y: 10, alpha: 0.3, tint: 0x000000 }); // Animation state self.isAnimating = false; self.originalScale = 1.0; // Tap handler self.down = function (x, y, obj) { if (self.isAnimating) return; self.isAnimating = true; // Play tap sound LK.getSound('blockTap').play(); // Bounce animation tween(self, { scaleX: 1.2, scaleY: 1.2 }, { duration: 100, easing: tween.easeOut, onFinish: function onFinish() { tween(self, { scaleX: self.originalScale, scaleY: self.originalScale }, { duration: 150, easing: tween.bounceOut, onFinish: function onFinish() { self.isAnimating = false; } }); } }); // Color flash effect var originalTint = blockGraphics.tint; blockGraphics.tint = 0xFFFFFF; tween(blockGraphics, { tint: originalTint }, { duration: 200, easing: tween.easeOut }); // Trigger score increase LK.setScore(LK.getScore() + 10); updateScore(); // Play chime sound randomly if (Math.random() < 0.3) { LK.getSound('chime').play(); } }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x87CEEB }); /**** * Game Code ****/ // Game variables var blocks = []; var animalTypes = ['pango', 'squirrel', 'piggy', 'fox', 'rabbit']; var scoreText; // Initialize score display function setupScore() { scoreText = new Text2('Score: 0', { size: 80, fill: 0xFFFFFF }); scoreText.anchor.set(0.5, 0); LK.gui.top.addChild(scoreText); } // Update score display function updateScore() { scoreText.setText('Score: ' + LK.getScore()); } // Create and position blocks function createBlocks() { var gridCols = 3; var gridRows = Math.ceil(animalTypes.length / gridCols); var blockSpacing = 400; var startX = (2048 - (gridCols - 1) * blockSpacing) / 2; var startY = (2732 - (gridRows - 1) * blockSpacing) / 2; for (var i = 0; i < animalTypes.length; i++) { var col = i % gridCols; var row = Math.floor(i / gridCols); var block = new AnimalBlock(animalTypes[i]); block.x = startX + col * blockSpacing; block.y = startY + row * blockSpacing; blocks.push(block); game.addChild(block); // Add entrance animation block.alpha = 0; block.scaleX = 0.1; block.scaleY = 0.1; tween(block, { alpha: 1, scaleX: 1, scaleY: 1 }, { duration: 500 + i * 100, easing: tween.bounceOut }); } } // Add floating animation to blocks function addFloatingAnimation() { for (var i = 0; i < blocks.length; i++) { var block = blocks[i]; var delay = i * 200; var originalY = block.y; // Create subtle floating motion LK.setTimeout(function (b, origY) { return function () { floatBlock(b, origY); }; }(block, originalY), delay); } } function floatBlock(block, originalY) { tween(block, { y: originalY - 20 }, { duration: 2000 + Math.random() * 1000, easing: tween.easeInOut, onFinish: function onFinish() { tween(block, { y: originalY + 10 }, { duration: 2000 + Math.random() * 1000, easing: tween.easeInOut, onFinish: function onFinish() { floatBlock(block, originalY); } }); } }); } // Game initialization setupScore(); createBlocks(); // Start floating animations after blocks are created LK.setTimeout(function () { addFloatingAnimation(); }, 1000); // Play background music LK.playMusic('backgroundMusic'); // Game update loop game.update = function () { // Check for win condition (optional - could be score-based) if (LK.getScore() >= 500) { LK.showYouWin(); } };
===================================================================
--- original.js
+++ change.js
@@ -1,6 +1,188 @@
-/****
+/****
+* Plugins
+****/
+var tween = LK.import("@upit/tween.v1");
+
+/****
+* Classes
+****/
+var AnimalBlock = Container.expand(function (animalType) {
+ var self = Container.call(this);
+ // Store animal type
+ self.animalType = animalType;
+ // Create block graphics based on animal type
+ var blockColors = {
+ 'pango': 0x4A90E2,
+ 'squirrel': 0x8B4513,
+ 'piggy': 0xFFB6C1,
+ 'fox': 0xFF6347,
+ 'rabbit': 0xF5F5DC
+ };
+ var blockAsset = animalType + 'Block';
+ var blockGraphics = self.attachAsset(blockAsset, {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ // Add 3D effect with shadow
+ var shadowBlock = self.attachAsset(blockAsset, {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: 10,
+ y: 10,
+ alpha: 0.3,
+ tint: 0x000000
+ });
+ // Animation state
+ self.isAnimating = false;
+ self.originalScale = 1.0;
+ // Tap handler
+ self.down = function (x, y, obj) {
+ if (self.isAnimating) return;
+ self.isAnimating = true;
+ // Play tap sound
+ LK.getSound('blockTap').play();
+ // Bounce animation
+ tween(self, {
+ scaleX: 1.2,
+ scaleY: 1.2
+ }, {
+ duration: 100,
+ easing: tween.easeOut,
+ onFinish: function onFinish() {
+ tween(self, {
+ scaleX: self.originalScale,
+ scaleY: self.originalScale
+ }, {
+ duration: 150,
+ easing: tween.bounceOut,
+ onFinish: function onFinish() {
+ self.isAnimating = false;
+ }
+ });
+ }
+ });
+ // Color flash effect
+ var originalTint = blockGraphics.tint;
+ blockGraphics.tint = 0xFFFFFF;
+ tween(blockGraphics, {
+ tint: originalTint
+ }, {
+ duration: 200,
+ easing: tween.easeOut
+ });
+ // Trigger score increase
+ LK.setScore(LK.getScore() + 10);
+ updateScore();
+ // Play chime sound randomly
+ if (Math.random() < 0.3) {
+ LK.getSound('chime').play();
+ }
+ };
+ return self;
+});
+
+/****
* Initialize Game
-****/
+****/
var game = new LK.Game({
- backgroundColor: 0x000000
-});
\ No newline at end of file
+ backgroundColor: 0x87CEEB
+});
+
+/****
+* Game Code
+****/
+// Game variables
+var blocks = [];
+var animalTypes = ['pango', 'squirrel', 'piggy', 'fox', 'rabbit'];
+var scoreText;
+// Initialize score display
+function setupScore() {
+ scoreText = new Text2('Score: 0', {
+ size: 80,
+ fill: 0xFFFFFF
+ });
+ scoreText.anchor.set(0.5, 0);
+ LK.gui.top.addChild(scoreText);
+}
+// Update score display
+function updateScore() {
+ scoreText.setText('Score: ' + LK.getScore());
+}
+// Create and position blocks
+function createBlocks() {
+ var gridCols = 3;
+ var gridRows = Math.ceil(animalTypes.length / gridCols);
+ var blockSpacing = 400;
+ var startX = (2048 - (gridCols - 1) * blockSpacing) / 2;
+ var startY = (2732 - (gridRows - 1) * blockSpacing) / 2;
+ for (var i = 0; i < animalTypes.length; i++) {
+ var col = i % gridCols;
+ var row = Math.floor(i / gridCols);
+ var block = new AnimalBlock(animalTypes[i]);
+ block.x = startX + col * blockSpacing;
+ block.y = startY + row * blockSpacing;
+ blocks.push(block);
+ game.addChild(block);
+ // Add entrance animation
+ block.alpha = 0;
+ block.scaleX = 0.1;
+ block.scaleY = 0.1;
+ tween(block, {
+ alpha: 1,
+ scaleX: 1,
+ scaleY: 1
+ }, {
+ duration: 500 + i * 100,
+ easing: tween.bounceOut
+ });
+ }
+}
+// Add floating animation to blocks
+function addFloatingAnimation() {
+ for (var i = 0; i < blocks.length; i++) {
+ var block = blocks[i];
+ var delay = i * 200;
+ var originalY = block.y;
+ // Create subtle floating motion
+ LK.setTimeout(function (b, origY) {
+ return function () {
+ floatBlock(b, origY);
+ };
+ }(block, originalY), delay);
+ }
+}
+function floatBlock(block, originalY) {
+ tween(block, {
+ y: originalY - 20
+ }, {
+ duration: 2000 + Math.random() * 1000,
+ easing: tween.easeInOut,
+ onFinish: function onFinish() {
+ tween(block, {
+ y: originalY + 10
+ }, {
+ duration: 2000 + Math.random() * 1000,
+ easing: tween.easeInOut,
+ onFinish: function onFinish() {
+ floatBlock(block, originalY);
+ }
+ });
+ }
+ });
+}
+// Game initialization
+setupScore();
+createBlocks();
+// Start floating animations after blocks are created
+LK.setTimeout(function () {
+ addFloatingAnimation();
+}, 1000);
+// Play background music
+LK.playMusic('backgroundMusic');
+// Game update loop
+game.update = function () {
+ // Check for win condition (optional - could be score-based)
+ if (LK.getScore() >= 500) {
+ LK.showYouWin();
+ }
+};
\ No newline at end of file