Code edit (1 edits merged)
Please save this source code
User prompt
PBS Kids Super Hero Transformation
Initial prompt
PBS kids: tap to turn dash into mega dash with strong muscles, and tap to turn dot into mega dot with big teeth to eat with, and tap to turn del into mega del with longest arms to stretch with, and turn dee into mega dee with a cape to fly with
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ var Character = Container.expand(function (characterType) { var self = Container.call(this); self.characterType = characterType; self.isTransformed = false; // Base character graphics var baseGraphics = self.attachAsset(characterType + 'Base', { anchorX: 0.5, anchorY: 0.5 }); // Character name text var nameText = new Text2(characterType.toUpperCase(), { size: 60, fill: 0xFFFFFF }); nameText.anchor.set(0.5, 0.5); nameText.x = 0; nameText.y = -250; self.addChild(nameText); // Transformation elements self.transformElements = []; self.createTransformationElements = function () { // Clear existing transformation elements for (var i = 0; i < self.transformElements.length; i++) { self.transformElements[i].destroy(); } self.transformElements = []; if (self.characterType === 'dash') { // Create muscles var leftMuscle = LK.getAsset('muscle', { anchorX: 0.5, anchorY: 0.5 }); leftMuscle.x = -120; leftMuscle.y = -50; self.addChild(leftMuscle); self.transformElements.push(leftMuscle); var rightMuscle = LK.getAsset('muscle', { anchorX: 0.5, anchorY: 0.5 }); rightMuscle.x = 120; rightMuscle.y = -50; self.addChild(rightMuscle); self.transformElements.push(rightMuscle); } else if (self.characterType === 'dot') { // Create teeth var leftTooth = LK.getAsset('tooth', { anchorX: 0.5, anchorY: 0.5 }); leftTooth.x = -40; leftTooth.y = 50; self.addChild(leftTooth); self.transformElements.push(leftTooth); var rightTooth = LK.getAsset('tooth', { anchorX: 0.5, anchorY: 0.5 }); rightTooth.x = 40; rightTooth.y = 50; self.addChild(rightTooth); self.transformElements.push(rightTooth); } else if (self.characterType === 'del') { // Create stretchy arms var leftArm = LK.getAsset('arm', { anchorX: 0, anchorY: 0.5 }); leftArm.x = -200; leftArm.y = 0; leftArm.scaleX = 1.5; self.addChild(leftArm); self.transformElements.push(leftArm); var rightArm = LK.getAsset('arm', { anchorX: 1, anchorY: 0.5 }); rightArm.x = 200; rightArm.y = 0; rightArm.scaleX = 1.5; self.addChild(rightArm); self.transformElements.push(rightArm); } else if (self.characterType === 'dee') { // Create cape var cape = LK.getAsset('cape', { anchorX: 0.5, anchorY: 0 }); cape.x = 0; cape.y = -200; self.addChild(cape); self.transformElements.push(cape); } }; self.transform = function () { if (self.isTransformed) { self.untransform(); return; } self.isTransformed = true; self.createTransformationElements(); // Base transformation animation tween(baseGraphics, { scaleX: 1.2, scaleY: 1.2 }, { duration: 300, easing: tween.elasticOut }); // Character-specific transformations and animations if (self.characterType === 'dash') { LK.getSound('powerUp').play(); LK.effects.flashObject(self, 0xffff00, 500); // Animate muscles growing for (var i = 0; i < self.transformElements.length; i++) { var muscle = self.transformElements[i]; muscle.scaleX = 0; muscle.scaleY = 0; tween(muscle, { scaleX: 1.3, scaleY: 1.3 }, { duration: 400, easing: tween.bounceOut }); } } else if (self.characterType === 'dot') { LK.getSound('chomp').play(); // Animate teeth appearing and chomping for (var i = 0; i < self.transformElements.length; i++) { var tooth = self.transformElements[i]; tooth.scaleY = 0; tween(tooth, { scaleY: 1.5 }, { duration: 300, easing: tween.bounceOut, onFinish: function onFinish() { // Chomping animation tween(tooth, { scaleY: 1.2 }, { duration: 200 }); } }); } } else if (self.characterType === 'del') { LK.getSound('stretch').play(); // Animate arms stretching for (var i = 0; i < self.transformElements.length; i++) { var arm = self.transformElements[i]; var originalScaleX = arm.scaleX; tween(arm, { scaleX: originalScaleX * 2 }, { duration: 600, easing: tween.elasticOut }); } } else if (self.characterType === 'dee') { LK.getSound('fly').play(); // Animate cape and flying motion var cape = self.transformElements[0]; cape.alpha = 0; tween(cape, { alpha: 1 }, { duration: 300 }); // Flying animation - move up and down self.startFlying(); } }; self.startFlying = function () { if (!self.isTransformed || self.characterType !== 'dee') return; var originalY = self.y; tween(self, { y: originalY - 30 }, { duration: 1000, easing: tween.easeInOut, onFinish: function onFinish() { if (self.isTransformed) { tween(self, { y: originalY + 30 }, { duration: 1000, easing: tween.easeInOut, onFinish: function onFinish() { if (self.isTransformed) { self.startFlying(); } } }); } } }); }; self.untransform = function () { self.isTransformed = false; // Stop any ongoing animations tween.stop(self); tween.stop(baseGraphics); // Reset base graphics tween(baseGraphics, { scaleX: 1, scaleY: 1 }, { duration: 200, easing: tween.easeOut }); // Remove transformation elements for (var i = 0; i < self.transformElements.length; i++) { tween(self.transformElements[i], { alpha: 0, scaleX: 0, scaleY: 0 }, { duration: 200, easing: tween.easeIn, onFinish: function onFinish() { if (self.transformElements[i]) { self.transformElements[i].destroy(); } } }); } self.transformElements = []; // Reset position for Dee if (self.characterType === 'dee') { tween(self, { y: self.originalY }, { duration: 300 }); } }; self.down = function (x, y, obj) { self.transform(); }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x87ceeb }); /**** * Game Code ****/ // Sound effects // Transformation effects // Character base assets // Title text var titleText = new Text2('PBS KIDS SUPER HEROES', { size: 80, fill: 0xFFFFFF }); titleText.anchor.set(0.5, 0.5); titleText.x = 2048 / 2; titleText.y = 200; game.addChild(titleText); // Instructions text var instructionsText = new Text2('TAP TO TRANSFORM!', { size: 60, fill: 0xFFFF00 }); instructionsText.anchor.set(0.5, 0.5); instructionsText.x = 2048 / 2; instructionsText.y = 300; game.addChild(instructionsText); // Create characters var characters = []; var characterTypes = ['dash', 'dot', 'del', 'dee']; var characterNames = ['DASH', 'DOT', 'DEL', 'DEE']; // Position characters in a 2x2 grid var gridPositions = [{ x: 2048 / 4, y: 2732 / 2 - 200 }, // Top left { x: 3 * 2048 / 4, y: 2732 / 2 - 200 }, // Top right { x: 2048 / 4, y: 2732 / 2 + 200 }, // Bottom left { x: 3 * 2048 / 4, y: 2732 / 2 + 200 } // Bottom right ]; for (var i = 0; i < characterTypes.length; i++) { var character = new Character(characterTypes[i]); character.x = gridPositions[i].x; character.y = gridPositions[i].y; character.originalY = character.y; // Store original Y for reset game.addChild(character); characters.push(character); } // Add sparkle effects periodically var sparkleTimer = 0; game.update = function () { sparkleTimer++; // Add sparkle effects every 2 seconds if (sparkleTimer % 120 === 0) { for (var i = 0; i < characters.length; i++) { if (characters[i].isTransformed) { LK.effects.flashObject(characters[i], 0xffffff, 300); } } } };
===================================================================
--- original.js
+++ change.js
@@ -1,6 +1,329 @@
-/****
+/****
+* Plugins
+****/
+var tween = LK.import("@upit/tween.v1");
+
+/****
+* Classes
+****/
+var Character = Container.expand(function (characterType) {
+ var self = Container.call(this);
+ self.characterType = characterType;
+ self.isTransformed = false;
+ // Base character graphics
+ var baseGraphics = self.attachAsset(characterType + 'Base', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ // Character name text
+ var nameText = new Text2(characterType.toUpperCase(), {
+ size: 60,
+ fill: 0xFFFFFF
+ });
+ nameText.anchor.set(0.5, 0.5);
+ nameText.x = 0;
+ nameText.y = -250;
+ self.addChild(nameText);
+ // Transformation elements
+ self.transformElements = [];
+ self.createTransformationElements = function () {
+ // Clear existing transformation elements
+ for (var i = 0; i < self.transformElements.length; i++) {
+ self.transformElements[i].destroy();
+ }
+ self.transformElements = [];
+ if (self.characterType === 'dash') {
+ // Create muscles
+ var leftMuscle = LK.getAsset('muscle', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ leftMuscle.x = -120;
+ leftMuscle.y = -50;
+ self.addChild(leftMuscle);
+ self.transformElements.push(leftMuscle);
+ var rightMuscle = LK.getAsset('muscle', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ rightMuscle.x = 120;
+ rightMuscle.y = -50;
+ self.addChild(rightMuscle);
+ self.transformElements.push(rightMuscle);
+ } else if (self.characterType === 'dot') {
+ // Create teeth
+ var leftTooth = LK.getAsset('tooth', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ leftTooth.x = -40;
+ leftTooth.y = 50;
+ self.addChild(leftTooth);
+ self.transformElements.push(leftTooth);
+ var rightTooth = LK.getAsset('tooth', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ rightTooth.x = 40;
+ rightTooth.y = 50;
+ self.addChild(rightTooth);
+ self.transformElements.push(rightTooth);
+ } else if (self.characterType === 'del') {
+ // Create stretchy arms
+ var leftArm = LK.getAsset('arm', {
+ anchorX: 0,
+ anchorY: 0.5
+ });
+ leftArm.x = -200;
+ leftArm.y = 0;
+ leftArm.scaleX = 1.5;
+ self.addChild(leftArm);
+ self.transformElements.push(leftArm);
+ var rightArm = LK.getAsset('arm', {
+ anchorX: 1,
+ anchorY: 0.5
+ });
+ rightArm.x = 200;
+ rightArm.y = 0;
+ rightArm.scaleX = 1.5;
+ self.addChild(rightArm);
+ self.transformElements.push(rightArm);
+ } else if (self.characterType === 'dee') {
+ // Create cape
+ var cape = LK.getAsset('cape', {
+ anchorX: 0.5,
+ anchorY: 0
+ });
+ cape.x = 0;
+ cape.y = -200;
+ self.addChild(cape);
+ self.transformElements.push(cape);
+ }
+ };
+ self.transform = function () {
+ if (self.isTransformed) {
+ self.untransform();
+ return;
+ }
+ self.isTransformed = true;
+ self.createTransformationElements();
+ // Base transformation animation
+ tween(baseGraphics, {
+ scaleX: 1.2,
+ scaleY: 1.2
+ }, {
+ duration: 300,
+ easing: tween.elasticOut
+ });
+ // Character-specific transformations and animations
+ if (self.characterType === 'dash') {
+ LK.getSound('powerUp').play();
+ LK.effects.flashObject(self, 0xffff00, 500);
+ // Animate muscles growing
+ for (var i = 0; i < self.transformElements.length; i++) {
+ var muscle = self.transformElements[i];
+ muscle.scaleX = 0;
+ muscle.scaleY = 0;
+ tween(muscle, {
+ scaleX: 1.3,
+ scaleY: 1.3
+ }, {
+ duration: 400,
+ easing: tween.bounceOut
+ });
+ }
+ } else if (self.characterType === 'dot') {
+ LK.getSound('chomp').play();
+ // Animate teeth appearing and chomping
+ for (var i = 0; i < self.transformElements.length; i++) {
+ var tooth = self.transformElements[i];
+ tooth.scaleY = 0;
+ tween(tooth, {
+ scaleY: 1.5
+ }, {
+ duration: 300,
+ easing: tween.bounceOut,
+ onFinish: function onFinish() {
+ // Chomping animation
+ tween(tooth, {
+ scaleY: 1.2
+ }, {
+ duration: 200
+ });
+ }
+ });
+ }
+ } else if (self.characterType === 'del') {
+ LK.getSound('stretch').play();
+ // Animate arms stretching
+ for (var i = 0; i < self.transformElements.length; i++) {
+ var arm = self.transformElements[i];
+ var originalScaleX = arm.scaleX;
+ tween(arm, {
+ scaleX: originalScaleX * 2
+ }, {
+ duration: 600,
+ easing: tween.elasticOut
+ });
+ }
+ } else if (self.characterType === 'dee') {
+ LK.getSound('fly').play();
+ // Animate cape and flying motion
+ var cape = self.transformElements[0];
+ cape.alpha = 0;
+ tween(cape, {
+ alpha: 1
+ }, {
+ duration: 300
+ });
+ // Flying animation - move up and down
+ self.startFlying();
+ }
+ };
+ self.startFlying = function () {
+ if (!self.isTransformed || self.characterType !== 'dee') return;
+ var originalY = self.y;
+ tween(self, {
+ y: originalY - 30
+ }, {
+ duration: 1000,
+ easing: tween.easeInOut,
+ onFinish: function onFinish() {
+ if (self.isTransformed) {
+ tween(self, {
+ y: originalY + 30
+ }, {
+ duration: 1000,
+ easing: tween.easeInOut,
+ onFinish: function onFinish() {
+ if (self.isTransformed) {
+ self.startFlying();
+ }
+ }
+ });
+ }
+ }
+ });
+ };
+ self.untransform = function () {
+ self.isTransformed = false;
+ // Stop any ongoing animations
+ tween.stop(self);
+ tween.stop(baseGraphics);
+ // Reset base graphics
+ tween(baseGraphics, {
+ scaleX: 1,
+ scaleY: 1
+ }, {
+ duration: 200,
+ easing: tween.easeOut
+ });
+ // Remove transformation elements
+ for (var i = 0; i < self.transformElements.length; i++) {
+ tween(self.transformElements[i], {
+ alpha: 0,
+ scaleX: 0,
+ scaleY: 0
+ }, {
+ duration: 200,
+ easing: tween.easeIn,
+ onFinish: function onFinish() {
+ if (self.transformElements[i]) {
+ self.transformElements[i].destroy();
+ }
+ }
+ });
+ }
+ self.transformElements = [];
+ // Reset position for Dee
+ if (self.characterType === 'dee') {
+ tween(self, {
+ y: self.originalY
+ }, {
+ duration: 300
+ });
+ }
+ };
+ self.down = function (x, y, obj) {
+ self.transform();
+ };
+ return self;
+});
+
+/****
* Initialize Game
-****/
+****/
var game = new LK.Game({
- backgroundColor: 0x000000
-});
\ No newline at end of file
+ backgroundColor: 0x87ceeb
+});
+
+/****
+* Game Code
+****/
+// Sound effects
+// Transformation effects
+// Character base assets
+// Title text
+var titleText = new Text2('PBS KIDS SUPER HEROES', {
+ size: 80,
+ fill: 0xFFFFFF
+});
+titleText.anchor.set(0.5, 0.5);
+titleText.x = 2048 / 2;
+titleText.y = 200;
+game.addChild(titleText);
+// Instructions text
+var instructionsText = new Text2('TAP TO TRANSFORM!', {
+ size: 60,
+ fill: 0xFFFF00
+});
+instructionsText.anchor.set(0.5, 0.5);
+instructionsText.x = 2048 / 2;
+instructionsText.y = 300;
+game.addChild(instructionsText);
+// Create characters
+var characters = [];
+var characterTypes = ['dash', 'dot', 'del', 'dee'];
+var characterNames = ['DASH', 'DOT', 'DEL', 'DEE'];
+// Position characters in a 2x2 grid
+var gridPositions = [{
+ x: 2048 / 4,
+ y: 2732 / 2 - 200
+},
+// Top left
+{
+ x: 3 * 2048 / 4,
+ y: 2732 / 2 - 200
+},
+// Top right
+{
+ x: 2048 / 4,
+ y: 2732 / 2 + 200
+},
+// Bottom left
+{
+ x: 3 * 2048 / 4,
+ y: 2732 / 2 + 200
+} // Bottom right
+];
+for (var i = 0; i < characterTypes.length; i++) {
+ var character = new Character(characterTypes[i]);
+ character.x = gridPositions[i].x;
+ character.y = gridPositions[i].y;
+ character.originalY = character.y; // Store original Y for reset
+ game.addChild(character);
+ characters.push(character);
+}
+// Add sparkle effects periodically
+var sparkleTimer = 0;
+game.update = function () {
+ sparkleTimer++;
+ // Add sparkle effects every 2 seconds
+ if (sparkleTimer % 120 === 0) {
+ for (var i = 0; i < characters.length; i++) {
+ if (characters[i].isTransformed) {
+ LK.effects.flashObject(characters[i], 0xffffff, 300);
+ }
+ }
+ }
+};
\ No newline at end of file