commit e12b508072d8990792e4aaed9dd9b31b329716cd Author: Tony Bark Date: Thu Feb 6 07:43:16 2025 -0500 Initial commit diff --git a/README.md b/README.md new file mode 100644 index 0000000..3a35b81 --- /dev/null +++ b/README.md @@ -0,0 +1,7 @@ +# Tony Bark's Gist + +Random commits of code in the public domain. + +## License + +I hereby waive this project under the public domain - see [UNLICENSE](UNLICENSE) for details. diff --git a/UNLICENSE b/UNLICENSE new file mode 100644 index 0000000..fdddb29 --- /dev/null +++ b/UNLICENSE @@ -0,0 +1,24 @@ +This is free and unencumbered software released into the public domain. + +Anyone is free to copy, modify, publish, use, compile, sell, or +distribute this software, either in source code form or as a compiled +binary, for any purpose, commercial or non-commercial, and by any +means. + +In jurisdictions that recognize copyright laws, the author or authors +of this software dedicate any and all copyright interest in the +software to the public domain. We make this dedication for the benefit +of the public at large and to the detriment of our heirs and +successors. We intend this dedication to be an overt act of +relinquishment in perpetuity of all present and future rights to this +software under copyright law. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR +OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + +For more information, please refer to diff --git a/motives.py b/motives.py new file mode 100644 index 0000000..78bcf8b --- /dev/null +++ b/motives.py @@ -0,0 +1,70 @@ +# Aside from a few item fixes, this is all generated by AI +import random +import time + +class Sim: + # Define the initial values for the motives + MOODS = { + 'Hunger': 1.0, # Normal hunger decay per minute + 'Bladder': 1.0, # Normal bladder decay per minute + 'Energy': 1.0, # Normal energy decay per minute + 'Social': 0.5, # Social needs build up slower + 'Hygiene': 1.0, # Normal hygiene decay per minute + 'Fun': 0.5 # Fun needs build up slower + } + + # Define the items in the environment and their effects on the Sim's motives + ITEMS = { + 'Bed': {'Energy': 3.0, 'Bladder': -0.2}, # Restores energy but slightly increases bladder pressure + 'Toilet': {'Bladder': 3.0, 'Hygiene': -0.5}, # Reduces bladder pressure but needs a bit of cleaning + 'Fridge': {'Hunger': 2.0, 'Hygiene': 0.1}, # Reduces hunger but slightly impacts hygiene + 'Laptop': {'Social': 2.0, 'Fun': 2.0}, # Reduces social need and provides fun + 'Shower': {'Hygiene': 3.0}, # Increases hygiene significantly + 'Gym': {'Hygiene': 0.5, 'Energy': -1.5, 'Fun': 2.0} # Increases hygiene, drains energy but provides fun + } + + def __init__(self): + # Initialize motives to full + self.motives = {motive: random.randint(50,90) for motive in self.MOODS} + + def simulate_minute(self): + # Update motives based on natural decay + for motive, decay in self.MOODS.items(): + self.motives[motive] -= decay + + # Choose an item to affect the Sim's motives + self.use_item() + + # Enforce motive limits + for motive in self.motives: + self.motives[motive] = max(self.motives[motive], 0.0) + self.motives[motive] = min(self.motives[motive], 100.0) + + def use_item(self): + item = random.choice(list(self.ITEMS.keys())) + print(f"Time passes, Sim uses: {item}") + for motive, effect in self.ITEMS[item].items(): + self.motives[motive] += effect + print(f" {motive}: {'+' if effect > 0 else ''}{effect}") + + def show_motives(self): + # Display the current state of the Sim's motives + print("Sim's Motives:") + for motive, value in self.motives.items(): + print(f" {motive}: {value:.2f}") + +def simulate_time(sim, total_minutes): + # Simulate over the given number of minutes + for minute in range(1, total_minutes + 1): + print(f"\nMinute {minute}:") + sim.show_motives() + sim.simulate_minute() + # Simulate a short delay between each minute + time.sleep(1) + +if __name__ == "__main__": + print("Starting Sim Motive Simulation...") + sim = Sim() + simulate_time(sim, 10) # Simulate 10 minutes + sim.show_motives() + print("Simulation completed.")