/****
* 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