/**** * 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); });
/****
* 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