Code edit (1 edits merged)
Please save this source code
User prompt
Pet Doctor Clinic
Initial prompt
Toca pet doctor (2014). Tap to choose the lizard 🦖 who has flies 🪰 inside its tummy, the rabbit 🐰 who has 4 red bumps in its body, the cat 🐱 who has a hurt ear, or the frog 🐸 who has orange bumps in its head.
/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
/****
* Classes
****/
var Pet = Container.expand(function (petType) {
var self = Container.call(this);
self.petType = petType;
self.isHealed = false;
self.isSelected = false;
self.ailments = [];
// Create pet body
var body = self.attachAsset(petType, {
anchorX: 0.5,
anchorY: 0.5
});
// Add ailments based on pet type
self.createAilments = function () {
if (self.petType === 'lizard') {
// Add flies in tummy
for (var i = 0; i < 3; i++) {
var fly = self.attachAsset('fly', {
anchorX: 0.5,
anchorY: 0.5,
x: (Math.random() - 0.5) * 100,
y: (Math.random() - 0.5) * 80
});
self.ailments.push(fly);
}
} else if (self.petType === 'rabbit') {
// Add red bumps
for (var i = 0; i < 4; i++) {
var bump = self.attachAsset('redBump', {
anchorX: 0.5,
anchorY: 0.5,
x: (Math.random() - 0.5) * 150,
y: (Math.random() - 0.5) * 200
});
self.ailments.push(bump);
}
} else if (self.petType === 'cat') {
// Add injury to ear
var injury = self.attachAsset('injury', {
anchorX: 0.5,
anchorY: 0.5,
x: -80,
y: -100
});
self.ailments.push(injury);
} else if (self.petType === 'frog') {
// Add orange bumps on head
for (var i = 0; i < 3; i++) {
var bump = self.attachAsset('orangeBump', {
anchorX: 0.5,
anchorY: 0.5,
x: (Math.random() - 0.5) * 120,
y: -60 + (Math.random() - 0.5) * 40
});
self.ailments.push(bump);
}
}
};
self.createAilments();
self.down = function (x, y, obj) {
if (!self.isSelected && !self.isHealed) {
LK.getSound('select').play();
selectedPet = self;
self.isSelected = true;
// Highlight selected pet
tween(body, {
scaleX: 1.1,
scaleY: 1.1
}, {
duration: 200
});
// Update instruction text
updateInstructionText();
} else if (self.isSelected && !self.isHealed) {
// Treat ailment
self.treatAilment(x, y);
}
};
self.treatAilment = function (localX, localY) {
for (var i = self.ailments.length - 1; i >= 0; i--) {
var ailment = self.ailments[i];
var distance = Math.sqrt(Math.pow(localX - ailment.x, 2) + Math.pow(localY - ailment.y, 2));
if (distance < 30) {
// Create heal effect
var healEffect = self.attachAsset('healEffect', {
anchorX: 0.5,
anchorY: 0.5,
x: ailment.x,
y: ailment.y,
alpha: 0.8
});
// Animate heal effect
tween(healEffect, {
scaleX: 2,
scaleY: 2,
alpha: 0
}, {
duration: 500,
onFinish: function onFinish() {
healEffect.destroy();
}
});
// Remove ailment
ailment.destroy();
self.ailments.splice(i, 1);
LK.getSound('heal').play();
LK.setScore(LK.getScore() + 10);
scoreText.setText(LK.getScore());
break;
}
}
// Check if all ailments are healed
if (self.ailments.length === 0) {
self.healPet();
}
};
self.healPet = function () {
self.isHealed = true;
self.isSelected = false;
selectedPet = null;
// Flash green to show healing
LK.effects.flashObject(self, 0x00FF00, 1000);
// Scale back to normal
tween(body, {
scaleX: 1,
scaleY: 1
}, {
duration: 200
});
// Increase score bonus
LK.setScore(LK.getScore() + 50);
scoreText.setText(LK.getScore());
petsHealed++;
updateInstructionText();
// Check win condition
if (petsHealed >= 10) {
LK.showYouWin();
}
// Respawn after delay
LK.setTimeout(function () {
self.respawn();
}, 2000);
};
self.respawn = function () {
self.isHealed = false;
self.isSelected = false;
// Clear existing ailments
for (var i = 0; i < self.ailments.length; i++) {
self.ailments[i].destroy();
}
self.ailments = [];
// Create new ailments
self.createAilments();
// Reset scale
body.scaleX = 1;
body.scaleY = 1;
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x87CEEB
});
/****
* Game Code
****/
var selectedPet = null;
var petsHealed = 0;
// Create pets
var lizard = game.addChild(new Pet('lizard'));
lizard.x = 512;
lizard.y = 600;
var rabbit = game.addChild(new Pet('rabbit'));
rabbit.x = 1536;
rabbit.y = 600;
var cat = game.addChild(new Pet('cat'));
cat.x = 512;
cat.y = 1400;
var frog = game.addChild(new Pet('frog'));
frog.x = 1536;
frog.y = 1400;
// Create UI
var titleText = new Text2('Pet Doctor Clinic', {
size: 120,
fill: 0x2E7D32
});
titleText.anchor.set(0.5, 0);
LK.gui.top.addChild(titleText);
var scoreText = new Text2('Score: 0', {
size: 80,
fill: 0x1976D2
});
scoreText.anchor.set(1, 0);
LK.gui.topRight.addChild(scoreText);
scoreText.x = -20;
scoreText.y = 20;
var instructionText = new Text2('Tap a sick pet to select it!', {
size: 60,
fill: 0x4A4A4A
});
instructionText.anchor.set(0.5, 0);
LK.gui.center.addChild(instructionText);
instructionText.y = 800;
function updateInstructionText() {
if (selectedPet && !selectedPet.isHealed) {
var instructions = {
'lizard': 'Tap the flies to remove them!',
'rabbit': 'Tap the red bumps to heal them!',
'cat': 'Tap the injury to treat it!',
'frog': 'Tap the orange bumps to cure them!'
};
instructionText.setText(instructions[selectedPet.petType]);
} else {
instructionText.setText('Tap a sick pet to select it!');
}
}
// Initialize score
scoreText.setText('Score: ' + LK.getScore());
game.update = function () {
// Game logic updates handled by pet classes
}; ===================================================================
--- original.js
+++ change.js
@@ -1,6 +1,232 @@
-/****
+/****
+* Plugins
+****/
+var tween = LK.import("@upit/tween.v1");
+
+/****
+* Classes
+****/
+var Pet = Container.expand(function (petType) {
+ var self = Container.call(this);
+ self.petType = petType;
+ self.isHealed = false;
+ self.isSelected = false;
+ self.ailments = [];
+ // Create pet body
+ var body = self.attachAsset(petType, {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ // Add ailments based on pet type
+ self.createAilments = function () {
+ if (self.petType === 'lizard') {
+ // Add flies in tummy
+ for (var i = 0; i < 3; i++) {
+ var fly = self.attachAsset('fly', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: (Math.random() - 0.5) * 100,
+ y: (Math.random() - 0.5) * 80
+ });
+ self.ailments.push(fly);
+ }
+ } else if (self.petType === 'rabbit') {
+ // Add red bumps
+ for (var i = 0; i < 4; i++) {
+ var bump = self.attachAsset('redBump', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: (Math.random() - 0.5) * 150,
+ y: (Math.random() - 0.5) * 200
+ });
+ self.ailments.push(bump);
+ }
+ } else if (self.petType === 'cat') {
+ // Add injury to ear
+ var injury = self.attachAsset('injury', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: -80,
+ y: -100
+ });
+ self.ailments.push(injury);
+ } else if (self.petType === 'frog') {
+ // Add orange bumps on head
+ for (var i = 0; i < 3; i++) {
+ var bump = self.attachAsset('orangeBump', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: (Math.random() - 0.5) * 120,
+ y: -60 + (Math.random() - 0.5) * 40
+ });
+ self.ailments.push(bump);
+ }
+ }
+ };
+ self.createAilments();
+ self.down = function (x, y, obj) {
+ if (!self.isSelected && !self.isHealed) {
+ LK.getSound('select').play();
+ selectedPet = self;
+ self.isSelected = true;
+ // Highlight selected pet
+ tween(body, {
+ scaleX: 1.1,
+ scaleY: 1.1
+ }, {
+ duration: 200
+ });
+ // Update instruction text
+ updateInstructionText();
+ } else if (self.isSelected && !self.isHealed) {
+ // Treat ailment
+ self.treatAilment(x, y);
+ }
+ };
+ self.treatAilment = function (localX, localY) {
+ for (var i = self.ailments.length - 1; i >= 0; i--) {
+ var ailment = self.ailments[i];
+ var distance = Math.sqrt(Math.pow(localX - ailment.x, 2) + Math.pow(localY - ailment.y, 2));
+ if (distance < 30) {
+ // Create heal effect
+ var healEffect = self.attachAsset('healEffect', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: ailment.x,
+ y: ailment.y,
+ alpha: 0.8
+ });
+ // Animate heal effect
+ tween(healEffect, {
+ scaleX: 2,
+ scaleY: 2,
+ alpha: 0
+ }, {
+ duration: 500,
+ onFinish: function onFinish() {
+ healEffect.destroy();
+ }
+ });
+ // Remove ailment
+ ailment.destroy();
+ self.ailments.splice(i, 1);
+ LK.getSound('heal').play();
+ LK.setScore(LK.getScore() + 10);
+ scoreText.setText(LK.getScore());
+ break;
+ }
+ }
+ // Check if all ailments are healed
+ if (self.ailments.length === 0) {
+ self.healPet();
+ }
+ };
+ self.healPet = function () {
+ self.isHealed = true;
+ self.isSelected = false;
+ selectedPet = null;
+ // Flash green to show healing
+ LK.effects.flashObject(self, 0x00FF00, 1000);
+ // Scale back to normal
+ tween(body, {
+ scaleX: 1,
+ scaleY: 1
+ }, {
+ duration: 200
+ });
+ // Increase score bonus
+ LK.setScore(LK.getScore() + 50);
+ scoreText.setText(LK.getScore());
+ petsHealed++;
+ updateInstructionText();
+ // Check win condition
+ if (petsHealed >= 10) {
+ LK.showYouWin();
+ }
+ // Respawn after delay
+ LK.setTimeout(function () {
+ self.respawn();
+ }, 2000);
+ };
+ self.respawn = function () {
+ self.isHealed = false;
+ self.isSelected = false;
+ // Clear existing ailments
+ for (var i = 0; i < self.ailments.length; i++) {
+ self.ailments[i].destroy();
+ }
+ self.ailments = [];
+ // Create new ailments
+ self.createAilments();
+ // Reset scale
+ body.scaleX = 1;
+ body.scaleY = 1;
+ };
+ return self;
+});
+
+/****
* Initialize Game
-****/
+****/
var game = new LK.Game({
- backgroundColor: 0x000000
-});
\ No newline at end of file
+ backgroundColor: 0x87CEEB
+});
+
+/****
+* Game Code
+****/
+var selectedPet = null;
+var petsHealed = 0;
+// Create pets
+var lizard = game.addChild(new Pet('lizard'));
+lizard.x = 512;
+lizard.y = 600;
+var rabbit = game.addChild(new Pet('rabbit'));
+rabbit.x = 1536;
+rabbit.y = 600;
+var cat = game.addChild(new Pet('cat'));
+cat.x = 512;
+cat.y = 1400;
+var frog = game.addChild(new Pet('frog'));
+frog.x = 1536;
+frog.y = 1400;
+// Create UI
+var titleText = new Text2('Pet Doctor Clinic', {
+ size: 120,
+ fill: 0x2E7D32
+});
+titleText.anchor.set(0.5, 0);
+LK.gui.top.addChild(titleText);
+var scoreText = new Text2('Score: 0', {
+ size: 80,
+ fill: 0x1976D2
+});
+scoreText.anchor.set(1, 0);
+LK.gui.topRight.addChild(scoreText);
+scoreText.x = -20;
+scoreText.y = 20;
+var instructionText = new Text2('Tap a sick pet to select it!', {
+ size: 60,
+ fill: 0x4A4A4A
+});
+instructionText.anchor.set(0.5, 0);
+LK.gui.center.addChild(instructionText);
+instructionText.y = 800;
+function updateInstructionText() {
+ if (selectedPet && !selectedPet.isHealed) {
+ var instructions = {
+ 'lizard': 'Tap the flies to remove them!',
+ 'rabbit': 'Tap the red bumps to heal them!',
+ 'cat': 'Tap the injury to treat it!',
+ 'frog': 'Tap the orange bumps to cure them!'
+ };
+ instructionText.setText(instructions[selectedPet.petType]);
+ } else {
+ instructionText.setText('Tap a sick pet to select it!');
+ }
+}
+// Initialize score
+scoreText.setText('Score: ' + LK.getScore());
+game.update = function () {
+ // Game logic updates handled by pet classes
+};
\ No newline at end of file