Added Pet class and made a final demo
This commit is contained in:
parent
faf0b2973c
commit
b2470eac16
3 changed files with 71 additions and 21 deletions
58
system.py
58
system.py
|
@ -9,13 +9,7 @@
|
|||
# Importing libraries
|
||||
#
|
||||
|
||||
import sys
|
||||
import time
|
||||
import json
|
||||
import machine
|
||||
import framebuf
|
||||
import ssd1306
|
||||
import _thread
|
||||
import sys, time, json, machine, framebuf, ssd1306, random
|
||||
|
||||
#
|
||||
# Classes
|
||||
|
@ -36,6 +30,13 @@ class ConfigurationManager:
|
|||
print(f"Failed to load config: {e}")
|
||||
return self._get_default_config()
|
||||
|
||||
def save_config(self):
|
||||
try:
|
||||
with open(self.config_file, "w") as file:
|
||||
json.dump(self.config, file)
|
||||
except Exception as e:
|
||||
print(f"Failed to save config: {e}")
|
||||
|
||||
# Return default configuration
|
||||
def _get_default_config(self):
|
||||
return {
|
||||
|
@ -49,6 +50,13 @@ class ConfigurationManager:
|
|||
"down": "3",
|
||||
"select": "1",
|
||||
"back": "2"
|
||||
},
|
||||
"pet": {
|
||||
"name": "Pet",
|
||||
"level": 0,
|
||||
"happiness": 100,
|
||||
"hunger": 100,
|
||||
"thirst": 100,
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -57,7 +65,7 @@ class Logger:
|
|||
def __init__(self, config):
|
||||
self.log_level = config.get("loglevel")
|
||||
self.logging_enabled = config.get("logging")
|
||||
self.log_file = config.get("logfile", "system.log")
|
||||
self.log_file = config.get("logfile")
|
||||
|
||||
def log(self, message, log_level, ignore_console=False):
|
||||
timestamp = self._get_timestamp()
|
||||
|
@ -96,6 +104,33 @@ class Logger:
|
|||
# Get configuration value
|
||||
def get(self, key, default=None):
|
||||
return self.config.get(key, default)
|
||||
|
||||
class Pet:
|
||||
def __init__(self, config, logger):
|
||||
self.config = config
|
||||
self.logger = logger
|
||||
|
||||
def play(self, name, amount):
|
||||
self.config.config["pet"]["happiness"] = self.config.config["pet"]["happiness"] + (amount * ((self.config.config["pet"]["level"] / 100)+1))
|
||||
self.logger.log(f"You {self.config.config['pet']['name']} {name} and gained {str(amount)} of happiness! Your happiness bar is now at {str(self.config.config['pet']['happiness'])}!", 3)
|
||||
|
||||
def nom(self, name, amount):
|
||||
self.config.config["pet"]["hunger"] = self.config.config["pet"]["hunger"] + (amount * ((self.config.config["pet"]["level"] / 100)+1))
|
||||
self.logger.log(f"You fed {self.config.config['pet']['name']} {name} and gained {str(amount)} of food! Your food bar is now at {str(self.config.config['pet']['hunger'])}!", 3)
|
||||
|
||||
def slurp(self, name, amount):
|
||||
self.config.config["pet"]["thirst"] = self.config.config["pet"]["thirst"] + (amount * ((self.config.config["pet"]["level"] / 100)+1))
|
||||
self.logger.log(f"You gave {self.config.config['pet']['name']} {name} and gained {str(amount)} of hydration! Your hydration bar is now at {str(self.config.config['pet']['thirst'])}!", 3)
|
||||
|
||||
def wombicombi(self):
|
||||
self.logger.log("Health depletion triggered", 4)
|
||||
self.config.config["pet"]["happiness"] = round(self.config.config["pet"]["happiness"] - ((100 - self.config.config["pet"]["level"]) * random.uniform(0.0, 0.2)))
|
||||
self.config.config["pet"]["hunger"] = round(self.config.config["pet"]["hunger"] - ((100 - self.config.config["pet"]["level"]) * random.uniform(0.0, 0.2)))
|
||||
self.config.config["pet"]["thirst"] = round(self.config.config["pet"]["thirst"] - ((100 - self.config.config["pet"]["level"]) * random.uniform(0.0, 0.2)))
|
||||
self.logger.log(f"Health is now at the following values...", 4)
|
||||
self.logger.log(f"Happiness: {self.config.config['pet']['happiness']}", 4)
|
||||
self.logger.log(f"Food: {self.config.config['pet']['hunger']}", 4)
|
||||
self.logger.log(f"Hydration: {self.config.config['pet']['thirst']}", 4)
|
||||
|
||||
# Handles input from buttons/controls
|
||||
class InputController:
|
||||
|
@ -311,7 +346,8 @@ class UserInterface:
|
|||
|
||||
# Handles power management
|
||||
class Power:
|
||||
def __init__(self, display, input_controller, logger):
|
||||
def __init__(self, config, display, input_controller, logger):
|
||||
self.config = config
|
||||
self.display = display
|
||||
self.input_controller = input_controller
|
||||
self.logger = logger
|
||||
|
@ -328,11 +364,13 @@ class Power:
|
|||
self.logger.log("Returning from sleep mode", 4)
|
||||
return
|
||||
|
||||
def exit_system(self, message=""):
|
||||
def shutdown(self, message=""):
|
||||
# Exit the system with optional message
|
||||
if message:
|
||||
self.logger.log(message, 3)
|
||||
self.logger.log("System shutting down...", 3)
|
||||
self.display.clear()
|
||||
self.display.update()
|
||||
machine.deepsleep()
|
||||
|
||||
#
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue