/****
* Classes
****/
// Clean Bar class
var CleanBar = Container.expand(function () {
var self = Container.call(this);
// Clean Bar visuals
var barGraphics = self.attachAsset('cleanBar', {
anchorX: 0.0,
anchorY: 0.5
});
// Method to update the clean bar
self.update = function (cleanliness) {
self.scaleX = cleanliness / 100;
};
});
// Happiness Bar class
var HappinessBar = Container.expand(function () {
var self = Container.call(this);
// Happiness Bar visuals
var barGraphics = self.attachAsset('happinessBar', {
anchorX: 0.0,
anchorY: 0.5
});
// Method to update the happiness bar
self.update = function (happiness) {
self.scaleX = happiness / 100;
};
});
// Assets will be automatically generated based on usage in the code.
// Pet class
var Pet = Container.expand(function () {
var self = Container.call(this);
// Pet visuals
var petGraphics = self.attachAsset('pet', {
anchorX: 0.5,
anchorY: 0.5
});
var tailGraphics = self.attachAsset('tail', {
anchorX: 0.5,
anchorY: 1
});
tailGraphics.x = petGraphics.width / 2 - 120;
tailGraphics.y = petGraphics.height / 2 - 400; // Position the tail at the table corner
self.wagging = false;
self.wagTail = function () {
if (LK.ticks % 20 == 0) {
self.wagging = !self.wagging;
if (self.wagging) {
tailGraphics.rotation = 0.3;
tailGraphics.y = petGraphics.height / 2 - 400 + 10; // Make the tail jump
} else {
tailGraphics.rotation = -0.3;
tailGraphics.y = petGraphics.height / 2 - 400; // Reset the tail position
}
}
};
// Pet properties
self.happiness = 100; // Max happiness
self.health = 100; // Max health
// Method to feed the pet
self.feed = function () {
self.happiness += 10;
self.health += 5;
// Ensure values do not exceed 100
self.happiness = Math.min(self.happiness, 100);
self.health = Math.min(self.health, 100);
};
// Method to play with the pet
self.play = function () {
self.happiness += 15;
// Ensure happiness does not exceed 100
self.happiness = Math.min(self.happiness, 100);
};
// Update pet status
self.update = function () {
// Decrease happiness and health over time
self.happiness -= 0.05;
self.health -= 0.02;
// Ensure values do not drop below 0
self.happiness = Math.max(self.happiness, 0);
self.health = Math.max(self.health, 0);
};
self.bark = function () {
console.log("Bark!");
};
self.jump = function () {
var jumpHeight = 200;
var jumpDuration = 60;
var originalY = self.y;
var jumpProgress = 0;
var jumpInterval = LK.setInterval(function () {
jumpProgress++;
var progressRatio = jumpProgress / jumpDuration;
if (progressRatio <= 0.5) {
self.y = originalY - jumpHeight * (2 * progressRatio);
} else {
self.y = originalY - jumpHeight * (2 * (1 - progressRatio));
}
if (jumpProgress >= jumpDuration) {
LK.clearInterval(jumpInterval);
self.y = originalY;
}
}, 1000 / 60);
};
var speechBubble = null;
self.on('down', function () {
self.jump();
if (speechBubble) {
speechBubble.destroy();
}
speechBubble = self.addChild(LK.getAsset('speechBubble', {
x: 0,
y: -200,
anchorX: 0.5,
anchorY: 0.5
}));
LK.setTimeout(function () {
speechBubble.destroy();
speechBubble = null;
}, 2000);
});
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x87CEEB // Light blue background
});
/****
* Game Code
****/
var livingRoomBackground = game.addChild(LK.getAsset('livingRoom', {
x: 0,
y: 0,
anchorX: 0,
anchorY: 0
}));
// Create pet instance
var pet = game.addChild(new Pet());
// Create happiness bar instance
var happinessBar = game.addChild(new HappinessBar());
// Create clean bar instance
var cleanBar = game.addChild(new CleanBar());
// Position the clean bar under the happiness bar
cleanBar.x = 50;
cleanBar.y = 200;
happinessBar.x = 50;
happinessBar.y = 50;
// Position the health bar under the happiness bar
// Position the pet in the center of the screen
pet.x = 2048 / 2;
pet.y = 2000;
// Create interactive buttons for feeding and playing
var feedButton = game.addChild(LK.getAsset('feedButton', {
x: 300,
y: 2400,
anchorX: 0.5,
anchorY: 0.5
}));
var playButton = game.addChild(LK.getAsset('playButton', {
x: 1748,
y: 2400,
anchorX: 0.5,
anchorY: 0.5
}));
// Event listener for feed button
feedButton.on('down', function () {
pet.feed();
pet.bark();
happinessBar.update(pet.happiness);
});
// Event listener for play button
playButton.on('down', function () {
pet.play();
});
// Update game state every tick
LK.on('tick', function () {
pet.update();
pet.wagTail();
// pet.hop(); // Comment out the automatic hopping
// Update the happiness bar
happinessBar.update(pet.happiness);
// Update the clean bar
cleanBar.update(pet.cleanliness);
// Decrease happiness by 10% every 5 minutes
if (LK.ticks % (60 * 60 * 5) == 0) {
pet.happiness -= pet.happiness * 0.1;
}
if (pet.speechBubble) {
pet.speechBubble.x = pet.x;
pet.speechBubble.y = pet.y - 300;
}
});
// Add event listener for game to move pet to location of clicks or taps
var hopInterval = null;
game.on('down', function (obj) {
var event = obj.event;
var pos = event.getLocalPosition(game);
if (hopInterval) {
LK.clearInterval(hopInterval);
}
hopInterval = LK.setInterval(function () {
if (Math.abs(pet.x - pos.x) < 15 && Math.abs(pet.y - pos.y) < 15) {
LK.clearInterval(hopInterval);
return;
}
if (pet.x < pos.x) {
pet.x = Math.min(pet.x + 15, livingRoomBackground.width - pet.width / 2);
pet.scaleX = -1; // Flip the pet image when moving to the right
} else {
pet.x = Math.max(pet.x - 15, pet.width / 2);
pet.scaleX = 1; // Flip the pet image back to original when moving to the left
}
if (pet.y < pos.y) {
pet.y = Math.min(pet.y + 15, livingRoomBackground.height - pet.height / 2);
} else {
pet.y = Math.max(pet.y - 15, livingRoomBackground.height / 2);
}
}, 100);
});
pixel art living room. Single Game Texture. In-Game asset. 2d. Blank background.
pixel art dog bowl. Single Game Texture. In-Game asset. 2d. Blank background.
pixel art window with dog food bags displayed within it. Single Game Texture. In-Game asset. 2d. Blank background.
pixel art dog bone. Single Game Texture. In-Game asset. 2d. Blank background.
pixel art horizontal thirst bar that looks like a health bar. Single Game Texture. In-Game asset. 2d. Blank background.
pixel art heart speech bubble. Single Game Texture. In-Game asset. 2d. Blank background.
add white backgrund