Code edit (1 edits merged)
Please save this source code
User prompt
Halloween Scare with the Powerpuff Girls
Initial prompt
Toca Halloween 2 (2010). The powerpuff girls have spiders on their hair. And they got a video on the tv. Tap on the play button to make the tv turn on, when minion Dave 🍌 says “3..2...1.... BOO!” on the tv the powerpuff girls scream.
/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
/****
* Classes
****/
var MinionDave = Container.expand(function () {
var self = Container.call(this);
var body = self.attachAsset('minion', {
anchorX: 0.5,
anchorY: 0.5
});
// Add eyes
var leftEye = self.attachAsset('minionEye', {
anchorX: 0.5,
anchorY: 0.5,
x: -60,
y: -80
});
var rightEye = self.attachAsset('minionEye', {
anchorX: 0.5,
anchorY: 0.5,
x: 60,
y: -80
});
var leftPupil = self.attachAsset('minionPupil', {
anchorX: 0.5,
anchorY: 0.5,
x: -60,
y: -80
});
var rightPupil = self.attachAsset('minionPupil', {
anchorX: 0.5,
anchorY: 0.5,
x: 60,
y: -80
});
self.visible = false;
return self;
});
var PowerpuffGirl = Container.expand(function (color) {
var self = Container.call(this);
var body = self.attachAsset(color === 0xff69b4 ? 'blossom' : color === 0x87ceeb ? 'bubbles' : 'buttercup', {
anchorX: 0.5,
anchorY: 0.5
});
// Add spiders to hair
self.spiders = [];
for (var i = 0; i < 3; i++) {
var spider = new Spider();
spider.x = (Math.random() - 0.5) * 150;
spider.y = -100 + (Math.random() - 0.5) * 50;
self.addChild(spider);
self.spiders.push(spider);
}
self.scared = false;
self.scare = function () {
if (self.scared) return;
self.scared = true;
// Jump back animation
tween(self, {
scaleX: 1.2,
scaleY: 0.8
}, {
duration: 100,
easing: tween.easeOut
});
tween(self, {
scaleX: 0.9,
scaleY: 1.3
}, {
duration: 150,
easing: tween.easeInOut
});
tween(self, {
scaleX: 1.0,
scaleY: 1.0
}, {
duration: 200,
easing: tween.bounceOut
});
// Make spiders wiggle
for (var i = 0; i < self.spiders.length; i++) {
self.spiders[i].wiggle();
}
// Reset after animation
LK.setTimeout(function () {
self.scared = false;
}, 2000);
};
return self;
});
var Spider = Container.expand(function () {
var self = Container.call(this);
var body = self.attachAsset('spider', {
anchorX: 0.5,
anchorY: 0.5
});
// Add spider legs
var legs = [];
for (var i = 0; i < 8; i++) {
var leg = self.attachAsset('spiderLeg', {
anchorX: 0.5,
anchorY: 0.5
});
var angle = i / 8 * Math.PI * 2;
leg.x = Math.cos(angle) * 25;
leg.y = Math.sin(angle) * 25;
leg.rotation = angle;
legs.push(leg);
}
self.wiggle = function () {
tween(self, {
rotation: self.rotation + 0.2
}, {
duration: 200,
easing: tween.easeInOut
});
tween(self, {
rotation: self.rotation - 0.2
}, {
duration: 200,
easing: tween.easeInOut,
onFinish: function onFinish() {
tween(self, {
rotation: 0
}, {
duration: 200,
easing: tween.easeInOut
});
}
});
};
return self;
});
var Television = Container.expand(function () {
var self = Container.call(this);
var tvBody = self.attachAsset('tv', {
anchorX: 0.5,
anchorY: 0.5
});
var screen = self.attachAsset('tvScreen', {
anchorX: 0.5,
anchorY: 0.5,
y: -20
});
self.playButton = self.attachAsset('playButton', {
anchorX: 0.5,
anchorY: 0.5,
y: -20
});
var playTriangle = self.attachAsset('playTriangle', {
anchorX: 0.5,
anchorY: 0.5,
x: 10,
y: -20
});
self.countdownText = new Text2('', {
size: 120,
fill: '#ffffff'
});
self.countdownText.anchor.set(0.5, 0.5);
self.countdownText.x = 0;
self.countdownText.y = -20;
self.countdownText.visible = false;
self.addChild(self.countdownText);
self.minion = new MinionDave();
self.minion.x = 0;
self.minion.y = -20;
self.addChild(self.minion);
self.isPlaying = false;
self.startCountdown = function () {
if (self.isPlaying) return;
self.isPlaying = true;
// Hide play button
self.playButton.visible = false;
playTriangle.visible = false;
// Show minion
self.minion.visible = true;
self.countdownText.visible = true;
// Start countdown sequence
self.countdownText.setText('3');
LK.getSound('countdown3').play();
LK.setTimeout(function () {
self.countdownText.setText('2');
LK.getSound('countdown2').play();
}, 1000);
LK.setTimeout(function () {
self.countdownText.setText('1');
LK.getSound('countdown1').play();
}, 2000);
LK.setTimeout(function () {
self.countdownText.setText('BOO!');
self.countdownText.style.fill = '#ff0000';
LK.getSound('boo').play();
// Scale up BOO text
tween(self.countdownText, {
scaleX: 1.5,
scaleY: 1.5
}, {
duration: 200,
easing: tween.easeOut
});
// Trigger scare reactions
if (typeof triggerScare === 'function') {
triggerScare();
}
}, 3000);
// Reset after scare
LK.setTimeout(function () {
self.reset();
}, 5000);
};
self.reset = function () {
self.isPlaying = false;
self.playButton.visible = true;
playTriangle.visible = true;
self.minion.visible = false;
self.countdownText.visible = false;
self.countdownText.style.fill = '#ffffff';
self.countdownText.scaleX = 1;
self.countdownText.scaleY = 1;
};
self.down = function (x, y, obj) {
if (!self.isPlaying && self.playButton.visible) {
self.startCountdown();
}
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x2a1810
});
/****
* Game Code
****/
// Sound effects
// Minion Dave
// Spider elements
// Powerpuff Girls
// Create background
var background = game.attachAsset('background', {
anchorX: 0,
anchorY: 0,
x: 0,
y: 0
});
// Create TV
var tv = game.addChild(new Television());
tv.x = 1024;
tv.y = 800;
// Create Powerpuff Girls
var blossom = game.addChild(new PowerpuffGirl(0xff69b4));
blossom.x = 600;
blossom.y = 1800;
var bubbles = game.addChild(new PowerpuffGirl(0x87ceeb));
bubbles.x = 1024;
bubbles.y = 1900;
var buttercup = game.addChild(new PowerpuffGirl(0x90ee90));
buttercup.x = 1448;
buttercup.y = 1800;
// Global function to trigger scare
function triggerScare() {
blossom.scare();
bubbles.scare();
buttercup.scare();
LK.getSound('scream').play();
// Screen flash effect
LK.effects.flashScreen(0xff0000, 300);
}
game.update = function () {
// Game logic runs here
}; ===================================================================
--- original.js
+++ change.js
@@ -1,6 +1,280 @@
-/****
+/****
+* Plugins
+****/
+var tween = LK.import("@upit/tween.v1");
+
+/****
+* Classes
+****/
+var MinionDave = Container.expand(function () {
+ var self = Container.call(this);
+ var body = self.attachAsset('minion', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ // Add eyes
+ var leftEye = self.attachAsset('minionEye', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: -60,
+ y: -80
+ });
+ var rightEye = self.attachAsset('minionEye', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: 60,
+ y: -80
+ });
+ var leftPupil = self.attachAsset('minionPupil', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: -60,
+ y: -80
+ });
+ var rightPupil = self.attachAsset('minionPupil', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: 60,
+ y: -80
+ });
+ self.visible = false;
+ return self;
+});
+var PowerpuffGirl = Container.expand(function (color) {
+ var self = Container.call(this);
+ var body = self.attachAsset(color === 0xff69b4 ? 'blossom' : color === 0x87ceeb ? 'bubbles' : 'buttercup', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ // Add spiders to hair
+ self.spiders = [];
+ for (var i = 0; i < 3; i++) {
+ var spider = new Spider();
+ spider.x = (Math.random() - 0.5) * 150;
+ spider.y = -100 + (Math.random() - 0.5) * 50;
+ self.addChild(spider);
+ self.spiders.push(spider);
+ }
+ self.scared = false;
+ self.scare = function () {
+ if (self.scared) return;
+ self.scared = true;
+ // Jump back animation
+ tween(self, {
+ scaleX: 1.2,
+ scaleY: 0.8
+ }, {
+ duration: 100,
+ easing: tween.easeOut
+ });
+ tween(self, {
+ scaleX: 0.9,
+ scaleY: 1.3
+ }, {
+ duration: 150,
+ easing: tween.easeInOut
+ });
+ tween(self, {
+ scaleX: 1.0,
+ scaleY: 1.0
+ }, {
+ duration: 200,
+ easing: tween.bounceOut
+ });
+ // Make spiders wiggle
+ for (var i = 0; i < self.spiders.length; i++) {
+ self.spiders[i].wiggle();
+ }
+ // Reset after animation
+ LK.setTimeout(function () {
+ self.scared = false;
+ }, 2000);
+ };
+ return self;
+});
+var Spider = Container.expand(function () {
+ var self = Container.call(this);
+ var body = self.attachAsset('spider', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ // Add spider legs
+ var legs = [];
+ for (var i = 0; i < 8; i++) {
+ var leg = self.attachAsset('spiderLeg', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ var angle = i / 8 * Math.PI * 2;
+ leg.x = Math.cos(angle) * 25;
+ leg.y = Math.sin(angle) * 25;
+ leg.rotation = angle;
+ legs.push(leg);
+ }
+ self.wiggle = function () {
+ tween(self, {
+ rotation: self.rotation + 0.2
+ }, {
+ duration: 200,
+ easing: tween.easeInOut
+ });
+ tween(self, {
+ rotation: self.rotation - 0.2
+ }, {
+ duration: 200,
+ easing: tween.easeInOut,
+ onFinish: function onFinish() {
+ tween(self, {
+ rotation: 0
+ }, {
+ duration: 200,
+ easing: tween.easeInOut
+ });
+ }
+ });
+ };
+ return self;
+});
+var Television = Container.expand(function () {
+ var self = Container.call(this);
+ var tvBody = self.attachAsset('tv', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ var screen = self.attachAsset('tvScreen', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ y: -20
+ });
+ self.playButton = self.attachAsset('playButton', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ y: -20
+ });
+ var playTriangle = self.attachAsset('playTriangle', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: 10,
+ y: -20
+ });
+ self.countdownText = new Text2('', {
+ size: 120,
+ fill: '#ffffff'
+ });
+ self.countdownText.anchor.set(0.5, 0.5);
+ self.countdownText.x = 0;
+ self.countdownText.y = -20;
+ self.countdownText.visible = false;
+ self.addChild(self.countdownText);
+ self.minion = new MinionDave();
+ self.minion.x = 0;
+ self.minion.y = -20;
+ self.addChild(self.minion);
+ self.isPlaying = false;
+ self.startCountdown = function () {
+ if (self.isPlaying) return;
+ self.isPlaying = true;
+ // Hide play button
+ self.playButton.visible = false;
+ playTriangle.visible = false;
+ // Show minion
+ self.minion.visible = true;
+ self.countdownText.visible = true;
+ // Start countdown sequence
+ self.countdownText.setText('3');
+ LK.getSound('countdown3').play();
+ LK.setTimeout(function () {
+ self.countdownText.setText('2');
+ LK.getSound('countdown2').play();
+ }, 1000);
+ LK.setTimeout(function () {
+ self.countdownText.setText('1');
+ LK.getSound('countdown1').play();
+ }, 2000);
+ LK.setTimeout(function () {
+ self.countdownText.setText('BOO!');
+ self.countdownText.style.fill = '#ff0000';
+ LK.getSound('boo').play();
+ // Scale up BOO text
+ tween(self.countdownText, {
+ scaleX: 1.5,
+ scaleY: 1.5
+ }, {
+ duration: 200,
+ easing: tween.easeOut
+ });
+ // Trigger scare reactions
+ if (typeof triggerScare === 'function') {
+ triggerScare();
+ }
+ }, 3000);
+ // Reset after scare
+ LK.setTimeout(function () {
+ self.reset();
+ }, 5000);
+ };
+ self.reset = function () {
+ self.isPlaying = false;
+ self.playButton.visible = true;
+ playTriangle.visible = true;
+ self.minion.visible = false;
+ self.countdownText.visible = false;
+ self.countdownText.style.fill = '#ffffff';
+ self.countdownText.scaleX = 1;
+ self.countdownText.scaleY = 1;
+ };
+ self.down = function (x, y, obj) {
+ if (!self.isPlaying && self.playButton.visible) {
+ self.startCountdown();
+ }
+ };
+ return self;
+});
+
+/****
* Initialize Game
-****/
+****/
var game = new LK.Game({
- backgroundColor: 0x000000
-});
\ No newline at end of file
+ backgroundColor: 0x2a1810
+});
+
+/****
+* Game Code
+****/
+// Sound effects
+// Minion Dave
+// Spider elements
+// Powerpuff Girls
+// Create background
+var background = game.attachAsset('background', {
+ anchorX: 0,
+ anchorY: 0,
+ x: 0,
+ y: 0
+});
+// Create TV
+var tv = game.addChild(new Television());
+tv.x = 1024;
+tv.y = 800;
+// Create Powerpuff Girls
+var blossom = game.addChild(new PowerpuffGirl(0xff69b4));
+blossom.x = 600;
+blossom.y = 1800;
+var bubbles = game.addChild(new PowerpuffGirl(0x87ceeb));
+bubbles.x = 1024;
+bubbles.y = 1900;
+var buttercup = game.addChild(new PowerpuffGirl(0x90ee90));
+buttercup.x = 1448;
+buttercup.y = 1800;
+// Global function to trigger scare
+function triggerScare() {
+ blossom.scare();
+ bubbles.scare();
+ buttercup.scare();
+ LK.getSound('scream').play();
+ // Screen flash effect
+ LK.effects.flashScreen(0xff0000, 300);
+}
+game.update = function () {
+ // Game logic runs here
+};
\ No newline at end of file