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