Code edit (1 edits merged)
Please save this source code
User prompt
Powerpuff TV Movie Night
Initial prompt
Toca movie (2010). The powerpuff girls have a new tv to watch! Tap the play button to make the tv watch, it will be the jungle me 1 movie on the tv. And there’s a Egypt scene at the beginning, onions scene at the middle, and a ballet scene and then seeing the full moon at the end.
/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
/****
* Classes
****/
var BalletScene = Container.expand(function () {
var self = Container.call(this);
var stage = self.attachAsset('stage', {
anchorX: 0.5,
anchorY: 1.0,
y: 100
});
var leftCurtain = self.attachAsset('curtain', {
anchorX: 1.0,
anchorY: 0.5,
x: -50
});
var rightCurtain = self.attachAsset('curtain', {
anchorX: 0.0,
anchorY: 0.5,
x: 50
});
var dancers = [];
for (var i = 0; i < 5; i++) {
var dancer = self.attachAsset('dancer', {
anchorX: 0.5,
anchorY: 1.0,
x: (i - 2) * 100,
y: 50
});
dancers.push(dancer);
}
self.animate = function () {
tween(leftCurtain, {
x: -400
}, {
duration: 1000,
easing: tween.easeOut
});
tween(rightCurtain, {
x: 400
}, {
duration: 1000,
easing: tween.easeOut
});
for (var i = 0; i < dancers.length; i++) {
var delay = i * 300;
tween(dancers[i], {
y: dancers[i].y - 30
}, {
duration: 800,
easing: tween.easeInOut
});
tween(dancers[i], {
rotation: Math.PI / 4
}, {
duration: 1200,
easing: tween.easeInOut
});
}
};
return self;
});
var EgyptScene = Container.expand(function () {
var self = Container.call(this);
var sand = self.attachAsset('sand', {
anchorX: 0.5,
anchorY: 1.0
});
var pyramid1 = self.attachAsset('pyramid', {
anchorX: 0.5,
anchorY: 1.0,
x: -200,
y: -100
});
var pyramid2 = self.attachAsset('pyramid', {
anchorX: 0.5,
anchorY: 1.0,
x: 200,
y: -100,
scaleX: 0.8,
scaleY: 0.8
});
var sun = self.attachAsset('sun', {
anchorX: 0.5,
anchorY: 0.5,
x: 600,
y: -300
});
self.animate = function () {
tween(sun, {
x: 700
}, {
duration: 3000,
easing: tween.easeInOut
});
tween(pyramid1, {
y: pyramid1.y - 20
}, {
duration: 2000,
easing: tween.easeInOut
});
tween(pyramid2, {
y: pyramid2.y - 15
}, {
duration: 2500,
easing: tween.easeInOut
});
};
return self;
});
var MoonScene = Container.expand(function () {
var self = Container.call(this);
var sky = self.attachAsset('nightSky', {
anchorX: 0.5,
anchorY: 0.5
});
var moon = self.attachAsset('moon', {
anchorX: 0.5,
anchorY: 0.5,
x: 400,
y: -200
});
var stars = [];
for (var i = 0; i < 20; i++) {
var star = self.attachAsset('star', {
anchorX: 0.5,
anchorY: 0.5,
x: (Math.random() - 0.5) * 1400,
y: (Math.random() - 0.5) * 700
});
stars.push(star);
}
self.animate = function () {
tween(moon, {
scaleX: 1.2,
scaleY: 1.2
}, {
duration: 3000,
easing: tween.easeInOut
});
tween(moon, {
tint: 0xffd700
}, {
duration: 2000,
easing: tween.easeInOut
});
for (var i = 0; i < stars.length; i++) {
var delay = Math.random() * 1000;
tween(stars[i], {
alpha: 0.3
}, {
duration: 1000 + delay,
easing: tween.easeInOut
});
tween(stars[i], {
alpha: 1.0
}, {
duration: 1000 + delay,
easing: tween.easeInOut
});
}
};
return self;
});
var OnionScene = Container.expand(function () {
var self = Container.call(this);
var onions = [];
for (var i = 0; i < 8; i++) {
var onion = self.attachAsset('onion', {
anchorX: 0.5,
anchorY: 0.5,
x: (i - 4) * 150,
y: Math.sin(i) * 50
});
var layer = self.attachAsset('onionLayer', {
anchorX: 0.5,
anchorY: 0.5,
x: (i - 4) * 150,
y: Math.sin(i) * 50
});
onions.push({
onion: onion,
layer: layer
});
}
self.animate = function () {
for (var i = 0; i < onions.length; i++) {
var delay = i * 200;
tween(onions[i].onion, {
y: onions[i].onion.y - 50
}, {
duration: 1500,
easing: tween.bounceOut
});
tween(onions[i].layer, {
y: onions[i].layer.y - 50
}, {
duration: 1500,
easing: tween.bounceOut
});
tween(onions[i].onion, {
rotation: Math.PI * 2
}, {
duration: 2000,
easing: tween.linear
});
}
};
return self;
});
var PowerpuffGirl = Container.expand(function (color) {
var self = Container.call(this);
var body = self.attachAsset('blossom', {
anchorX: 0.5,
anchorY: 1.0,
tint: color
});
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x87ceeb
});
/****
* Game Code
****/
// Scene 4: Full Moon
// Scene 3: Ballet
// Scene 2: Onions
// Scene 1: Egypt
// Powerpuff Girls
var gameState = 'menu'; // 'menu', 'playing', 'scene1', 'scene2', 'scene3', 'scene4'
var currentScene = null;
var sceneTimer = 0;
var sceneDuration = 4000; // 4 seconds per scene
// TV setup
var tvFrame = game.addChild(LK.getAsset('tvFrame', {
anchorX: 0.5,
anchorY: 0.5,
x: 1024,
y: 1000
}));
var tvScreen = game.addChild(LK.getAsset('tvScreen', {
anchorX: 0.5,
anchorY: 0.5,
x: 1024,
y: 1000
}));
// Play button
var playButton = game.addChild(LK.getAsset('playButton', {
anchorX: 0.5,
anchorY: 0.5,
x: 1024,
y: 1000
}));
var playTriangle = game.addChild(LK.getAsset('playTriangle', {
anchorX: 0.5,
anchorY: 0.5,
x: 1024,
y: 1000
}));
// Powerpuff Girls
var blossom = game.addChild(new PowerpuffGirl(0xff69b4));
blossom.x = 700;
blossom.y = 1600;
var bubbles = game.addChild(new PowerpuffGirl(0x87ceeb));
bubbles.x = 1024;
bubbles.y = 1600;
var buttercup = game.addChild(new PowerpuffGirl(0x90ee90));
buttercup.x = 1348;
buttercup.y = 1600;
// Title text
var titleText = new Text2('Jungle Me 1', {
size: 80,
fill: 0xFFFFFF
});
titleText.anchor.set(0.5, 0.5);
titleText.x = 1024;
titleText.y = 800;
game.addChild(titleText);
// Instructions text
var instructionText = new Text2('Tap PLAY to start the movie!', {
size: 60,
fill: 0xFFFFFF
});
instructionText.anchor.set(0.5, 0.5);
instructionText.x = 1024;
instructionText.y = 1200;
game.addChild(instructionText);
function startScene(sceneNumber) {
// Clear previous scene
if (currentScene) {
currentScene.destroy();
currentScene = null;
}
// Hide menu elements
playButton.visible = false;
playTriangle.visible = false;
titleText.visible = false;
instructionText.visible = false;
// Create new scene
switch (sceneNumber) {
case 1:
currentScene = new EgyptScene();
gameState = 'scene1';
break;
case 2:
currentScene = new OnionScene();
gameState = 'scene2';
break;
case 3:
currentScene = new BalletScene();
gameState = 'scene3';
break;
case 4:
currentScene = new MoonScene();
gameState = 'scene4';
break;
}
if (currentScene) {
currentScene.x = 1024;
currentScene.y = 1000;
tvScreen.addChild(currentScene);
currentScene.animate();
LK.getSound('sceneTransition').play();
}
sceneTimer = 0;
}
function showMenu() {
gameState = 'menu';
// Clear current scene
if (currentScene) {
currentScene.destroy();
currentScene = null;
}
// Show menu elements
playButton.visible = true;
playTriangle.visible = true;
titleText.visible = true;
instructionText.visible = true;
}
// Play button click handler
playButton.down = function (x, y, obj) {
if (gameState === 'menu') {
LK.getSound('click').play();
gameState = 'playing';
startScene(1);
}
};
playTriangle.down = function (x, y, obj) {
if (gameState === 'menu') {
LK.getSound('click').play();
gameState = 'playing';
startScene(1);
}
};
// Skip scene on tap
tvScreen.down = function (x, y, obj) {
if (gameState !== 'menu') {
LK.getSound('click').play();
switch (gameState) {
case 'scene1':
startScene(2);
break;
case 'scene2':
startScene(3);
break;
case 'scene3':
startScene(4);
break;
case 'scene4':
showMenu();
break;
}
}
};
game.update = function () {
if (gameState !== 'menu') {
sceneTimer += 16; // Approximately 60 FPS
if (sceneTimer >= sceneDuration) {
switch (gameState) {
case 'scene1':
startScene(2);
break;
case 'scene2':
startScene(3);
break;
case 'scene3':
startScene(4);
break;
case 'scene4':
showMenu();
break;
}
}
}
// Animate play button
if (gameState === 'menu') {
playButton.alpha = 0.8 + 0.2 * Math.sin(LK.ticks * 0.1);
}
}; ===================================================================
--- original.js
+++ change.js
@@ -1,6 +1,409 @@
-/****
+/****
+* Plugins
+****/
+var tween = LK.import("@upit/tween.v1");
+
+/****
+* Classes
+****/
+var BalletScene = Container.expand(function () {
+ var self = Container.call(this);
+ var stage = self.attachAsset('stage', {
+ anchorX: 0.5,
+ anchorY: 1.0,
+ y: 100
+ });
+ var leftCurtain = self.attachAsset('curtain', {
+ anchorX: 1.0,
+ anchorY: 0.5,
+ x: -50
+ });
+ var rightCurtain = self.attachAsset('curtain', {
+ anchorX: 0.0,
+ anchorY: 0.5,
+ x: 50
+ });
+ var dancers = [];
+ for (var i = 0; i < 5; i++) {
+ var dancer = self.attachAsset('dancer', {
+ anchorX: 0.5,
+ anchorY: 1.0,
+ x: (i - 2) * 100,
+ y: 50
+ });
+ dancers.push(dancer);
+ }
+ self.animate = function () {
+ tween(leftCurtain, {
+ x: -400
+ }, {
+ duration: 1000,
+ easing: tween.easeOut
+ });
+ tween(rightCurtain, {
+ x: 400
+ }, {
+ duration: 1000,
+ easing: tween.easeOut
+ });
+ for (var i = 0; i < dancers.length; i++) {
+ var delay = i * 300;
+ tween(dancers[i], {
+ y: dancers[i].y - 30
+ }, {
+ duration: 800,
+ easing: tween.easeInOut
+ });
+ tween(dancers[i], {
+ rotation: Math.PI / 4
+ }, {
+ duration: 1200,
+ easing: tween.easeInOut
+ });
+ }
+ };
+ return self;
+});
+var EgyptScene = Container.expand(function () {
+ var self = Container.call(this);
+ var sand = self.attachAsset('sand', {
+ anchorX: 0.5,
+ anchorY: 1.0
+ });
+ var pyramid1 = self.attachAsset('pyramid', {
+ anchorX: 0.5,
+ anchorY: 1.0,
+ x: -200,
+ y: -100
+ });
+ var pyramid2 = self.attachAsset('pyramid', {
+ anchorX: 0.5,
+ anchorY: 1.0,
+ x: 200,
+ y: -100,
+ scaleX: 0.8,
+ scaleY: 0.8
+ });
+ var sun = self.attachAsset('sun', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: 600,
+ y: -300
+ });
+ self.animate = function () {
+ tween(sun, {
+ x: 700
+ }, {
+ duration: 3000,
+ easing: tween.easeInOut
+ });
+ tween(pyramid1, {
+ y: pyramid1.y - 20
+ }, {
+ duration: 2000,
+ easing: tween.easeInOut
+ });
+ tween(pyramid2, {
+ y: pyramid2.y - 15
+ }, {
+ duration: 2500,
+ easing: tween.easeInOut
+ });
+ };
+ return self;
+});
+var MoonScene = Container.expand(function () {
+ var self = Container.call(this);
+ var sky = self.attachAsset('nightSky', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ var moon = self.attachAsset('moon', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: 400,
+ y: -200
+ });
+ var stars = [];
+ for (var i = 0; i < 20; i++) {
+ var star = self.attachAsset('star', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: (Math.random() - 0.5) * 1400,
+ y: (Math.random() - 0.5) * 700
+ });
+ stars.push(star);
+ }
+ self.animate = function () {
+ tween(moon, {
+ scaleX: 1.2,
+ scaleY: 1.2
+ }, {
+ duration: 3000,
+ easing: tween.easeInOut
+ });
+ tween(moon, {
+ tint: 0xffd700
+ }, {
+ duration: 2000,
+ easing: tween.easeInOut
+ });
+ for (var i = 0; i < stars.length; i++) {
+ var delay = Math.random() * 1000;
+ tween(stars[i], {
+ alpha: 0.3
+ }, {
+ duration: 1000 + delay,
+ easing: tween.easeInOut
+ });
+ tween(stars[i], {
+ alpha: 1.0
+ }, {
+ duration: 1000 + delay,
+ easing: tween.easeInOut
+ });
+ }
+ };
+ return self;
+});
+var OnionScene = Container.expand(function () {
+ var self = Container.call(this);
+ var onions = [];
+ for (var i = 0; i < 8; i++) {
+ var onion = self.attachAsset('onion', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: (i - 4) * 150,
+ y: Math.sin(i) * 50
+ });
+ var layer = self.attachAsset('onionLayer', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: (i - 4) * 150,
+ y: Math.sin(i) * 50
+ });
+ onions.push({
+ onion: onion,
+ layer: layer
+ });
+ }
+ self.animate = function () {
+ for (var i = 0; i < onions.length; i++) {
+ var delay = i * 200;
+ tween(onions[i].onion, {
+ y: onions[i].onion.y - 50
+ }, {
+ duration: 1500,
+ easing: tween.bounceOut
+ });
+ tween(onions[i].layer, {
+ y: onions[i].layer.y - 50
+ }, {
+ duration: 1500,
+ easing: tween.bounceOut
+ });
+ tween(onions[i].onion, {
+ rotation: Math.PI * 2
+ }, {
+ duration: 2000,
+ easing: tween.linear
+ });
+ }
+ };
+ return self;
+});
+var PowerpuffGirl = Container.expand(function (color) {
+ var self = Container.call(this);
+ var body = self.attachAsset('blossom', {
+ anchorX: 0.5,
+ anchorY: 1.0,
+ tint: color
+ });
+ return self;
+});
+
+/****
* Initialize Game
-****/
+****/
var game = new LK.Game({
- backgroundColor: 0x000000
-});
\ No newline at end of file
+ backgroundColor: 0x87ceeb
+});
+
+/****
+* Game Code
+****/
+// Scene 4: Full Moon
+// Scene 3: Ballet
+// Scene 2: Onions
+// Scene 1: Egypt
+// Powerpuff Girls
+var gameState = 'menu'; // 'menu', 'playing', 'scene1', 'scene2', 'scene3', 'scene4'
+var currentScene = null;
+var sceneTimer = 0;
+var sceneDuration = 4000; // 4 seconds per scene
+// TV setup
+var tvFrame = game.addChild(LK.getAsset('tvFrame', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: 1024,
+ y: 1000
+}));
+var tvScreen = game.addChild(LK.getAsset('tvScreen', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: 1024,
+ y: 1000
+}));
+// Play button
+var playButton = game.addChild(LK.getAsset('playButton', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: 1024,
+ y: 1000
+}));
+var playTriangle = game.addChild(LK.getAsset('playTriangle', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: 1024,
+ y: 1000
+}));
+// Powerpuff Girls
+var blossom = game.addChild(new PowerpuffGirl(0xff69b4));
+blossom.x = 700;
+blossom.y = 1600;
+var bubbles = game.addChild(new PowerpuffGirl(0x87ceeb));
+bubbles.x = 1024;
+bubbles.y = 1600;
+var buttercup = game.addChild(new PowerpuffGirl(0x90ee90));
+buttercup.x = 1348;
+buttercup.y = 1600;
+// Title text
+var titleText = new Text2('Jungle Me 1', {
+ size: 80,
+ fill: 0xFFFFFF
+});
+titleText.anchor.set(0.5, 0.5);
+titleText.x = 1024;
+titleText.y = 800;
+game.addChild(titleText);
+// Instructions text
+var instructionText = new Text2('Tap PLAY to start the movie!', {
+ size: 60,
+ fill: 0xFFFFFF
+});
+instructionText.anchor.set(0.5, 0.5);
+instructionText.x = 1024;
+instructionText.y = 1200;
+game.addChild(instructionText);
+function startScene(sceneNumber) {
+ // Clear previous scene
+ if (currentScene) {
+ currentScene.destroy();
+ currentScene = null;
+ }
+ // Hide menu elements
+ playButton.visible = false;
+ playTriangle.visible = false;
+ titleText.visible = false;
+ instructionText.visible = false;
+ // Create new scene
+ switch (sceneNumber) {
+ case 1:
+ currentScene = new EgyptScene();
+ gameState = 'scene1';
+ break;
+ case 2:
+ currentScene = new OnionScene();
+ gameState = 'scene2';
+ break;
+ case 3:
+ currentScene = new BalletScene();
+ gameState = 'scene3';
+ break;
+ case 4:
+ currentScene = new MoonScene();
+ gameState = 'scene4';
+ break;
+ }
+ if (currentScene) {
+ currentScene.x = 1024;
+ currentScene.y = 1000;
+ tvScreen.addChild(currentScene);
+ currentScene.animate();
+ LK.getSound('sceneTransition').play();
+ }
+ sceneTimer = 0;
+}
+function showMenu() {
+ gameState = 'menu';
+ // Clear current scene
+ if (currentScene) {
+ currentScene.destroy();
+ currentScene = null;
+ }
+ // Show menu elements
+ playButton.visible = true;
+ playTriangle.visible = true;
+ titleText.visible = true;
+ instructionText.visible = true;
+}
+// Play button click handler
+playButton.down = function (x, y, obj) {
+ if (gameState === 'menu') {
+ LK.getSound('click').play();
+ gameState = 'playing';
+ startScene(1);
+ }
+};
+playTriangle.down = function (x, y, obj) {
+ if (gameState === 'menu') {
+ LK.getSound('click').play();
+ gameState = 'playing';
+ startScene(1);
+ }
+};
+// Skip scene on tap
+tvScreen.down = function (x, y, obj) {
+ if (gameState !== 'menu') {
+ LK.getSound('click').play();
+ switch (gameState) {
+ case 'scene1':
+ startScene(2);
+ break;
+ case 'scene2':
+ startScene(3);
+ break;
+ case 'scene3':
+ startScene(4);
+ break;
+ case 'scene4':
+ showMenu();
+ break;
+ }
+ }
+};
+game.update = function () {
+ if (gameState !== 'menu') {
+ sceneTimer += 16; // Approximately 60 FPS
+ if (sceneTimer >= sceneDuration) {
+ switch (gameState) {
+ case 'scene1':
+ startScene(2);
+ break;
+ case 'scene2':
+ startScene(3);
+ break;
+ case 'scene3':
+ startScene(4);
+ break;
+ case 'scene4':
+ showMenu();
+ break;
+ }
+ }
+ }
+ // Animate play button
+ if (gameState === 'menu') {
+ playButton.alpha = 0.8 + 0.2 * Math.sin(LK.ticks * 0.1);
+ }
+};
\ No newline at end of file