diff --git a/projects/book_crafting/cat_cozy_mystery.md b/projects/book_crafting/cat_cozy_mystery.md new file mode 100644 index 0000000..9edbff9 --- /dev/null +++ b/projects/book_crafting/cat_cozy_mystery.md @@ -0,0 +1,109 @@ +from jinja2 import Template +import random + +# Define our template +template_string = """ +# {{ title }} + +## Chapter 1: A Furry Detective's Morning + +In the quaint town of {{ setting }}, {{ cat_name }} the {{ cat_color }} cat stretched lazily in the morning sun. With {{ cat_trait }} and {{ cat_skill }}, {{ cat_name }} was no ordinary feline. + +{{ owner_name }}, {{ cat_name }}'s human companion and local {{ owner_occupation }}, busied {{ owner_pronoun }}self with {{ morning_activity }}. Little did they know, their day was about to take an unexpected turn. + +## Chapter 2: The Mysterious Occurrence + +As {{ cat_name }} {{ cat_action }}, a {{ sudden_event }} caught {{ cat_pronoun }} attention. {{ cat_name }}'s whiskers twitched with curiosity. Something was amiss at the {{ crime_location }}. + +{{ owner_name }} noticed {{ cat_name }}'s unusual behavior and asked, "What's wrong, {{ cat_name }}?" + +{{ dialogue_response }} + +## Chapter 3: Investigation Begins + +{{ cat_name }} led {{ owner_name }} to the {{ crime_location }}. There, they discovered {{ crime_discovery }}. {{ owner_name }} gasped, "Oh no! We need to solve this mystery!" + +With determination gleaming in {{ cat_pronoun }} eyes, {{ cat_name }} began to investigate. {{ cat_pronoun | capitalize }} {{ investigation_method }}, looking for clues. + +## Chapter 4: Suspects and Clues + +Their investigation led them to question: + +1. {{ suspect_1 }}, who {{ suspect_1_alibi }} +2. {{ suspect_2 }}, known for {{ suspect_2_trait }} +3. {{ suspect_3 }}, who was seen {{ suspect_3_action }} + +{{ cat_name }} found a crucial clue: {{ important_clue }}. But what did it mean? + +## Chapter 5: The Chase + +As {{ cat_name }} and {{ owner_name }} pieced together the clues, they realized the culprit was {{ culprit }}. But just as they made this discovery, {{ chase_event }}! + +{{ cat_name }} sprang into action, {{ cat_action_chase }}. {{ owner_name }} followed close behind, {{ owner_action_chase }}. + +## Chapter 6: Mystery Solved + +In a final confrontation at {{ confrontation_location }}, {{ cat_name }} cleverly {{ resolution_action }}. The mystery was solved! + +{{ culprit }} confessed, explaining {{ motive }}. + +## Epilogue + +As things settled back to normal in {{ setting }}, {{ cat_name }} enjoyed a well-deserved {{ reward }}. {{ owner_name }} smiled, knowing their feline detective would always be ready for the next mystery. + +The end... or is it just the beginning of {{ cat_name }}'s next adventure? +""" + +# Create the template +template = Template(template_string) + +# Function to get user input or use a random choice +def get_input(prompt, choices=None): + user_input = input(prompt) + if user_input: + return user_input + elif choices: + return random.choice(choices) + return "" + +# Get inputs from the user (or use random choices) +story_inputs = { + "title": get_input("Enter a title for your mystery: ", ["The Case of the Missing Tuna", "Whiskers and Shadows", "Paws of Deception"]), + "setting": get_input("Enter the story's setting: ", ["Purrington", "Catsbury", "Whisker Grove"]), + "cat_name": get_input("Enter the cat detective's name: ", ["Sherlock Paws", "Miss Marple Whiskers", "Inspector Furlock"]), + "cat_color": get_input("Enter the cat's color: ", ["tabby", "black", "calico", "ginger"]), + "cat_trait": get_input("Enter a unique trait of the cat: ", ["an uncanny sense of smell", "the ability to understand human speech", "a photographic memory"]), + "cat_skill": get_input("Enter a special skill of the cat: ", ["stealthy paw-steps", "acrobatic leaps", "hypnotic purrs"]), + "owner_name": get_input("Enter the owner's name: ", ["Emily", "John", "Sarah"]), + "owner_occupation": get_input("Enter the owner's occupation: ", ["librarian", "baker", "retired detective"]), + "owner_pronoun": get_input("Enter 'him' or 'her' for the owner: ", ["him", "her"]), + "morning_activity": get_input("Enter a morning activity: ", ["preparing breakfast", "reading the newspaper", "watering the plants"]), + "cat_action": get_input("Enter what the cat was doing: ", ["groomed its whiskers", "perched on the windowsill", "napped in a sunbeam"]), + "sudden_event": get_input("Enter a sudden event: ", ["loud crash", "strange smell", "mysterious shadow"]), + "cat_pronoun": get_input("Enter 'his' or 'her' for the cat: ", ["his", "her"]), + "crime_location": get_input("Enter the location of the crime: ", ["local fish market", "neighbor's garden", "town square"]), + "dialogue_response": get_input("Enter the cat's response (in cat language): ", ["'Meow meow!' (Something's not right!)", "'Purr... hiss!' (Follow me, quickly!)", "'Mrow?' (You won't believe what I found!)"]), + "crime_discovery": get_input("Enter what they discovered: ", ["all the fish had vanished", "prized roses were destroyed", "the town's beloved statue was missing"]), + "investigation_method": get_input("Enter how the cat investigates: ", ["sniffed around for clues", "pawed at suspicious objects", "meowed at potential witnesses"]), + "suspect_1": get_input("Enter the first suspect: ", ["the new dog in town", "the grumpy old cat lady", "the mysterious stranger"]), + "suspect_1_alibi": get_input("Enter the first suspect's alibi: ", ["claimed to be chasing squirrels", "said she was napping all day", "insisted on being out of town"]), + "suspect_2": get_input("Enter the second suspect: ", ["the local fishmonger", "the mischievous raccoon", "the mayor's sneaky cat"]), + "suspect_2_trait": get_input("Enter a trait of the second suspect: ", ["always smelling of fish", "having sticky paws", "being overly ambitious"]), + "suspect_3": get_input("Enter the third suspect: ", ["the quiet bookshop owner", "the eccentric bird watcher", "the new construction worker"]), + "suspect_3_action": get_input("Enter what the third suspect was seen doing: ", ["lurking around the crime scene", "acting suspiciously nervous", "suddenly having unexplained wealth"]), + "important_clue": get_input("Enter an important clue: ", ["a distinctive paw print", "a piece of torn fabric", "a dropped treat wrapper"]), + "culprit": get_input("Enter the culprit: ", ["the seemingly innocent kitten", "the trusted town mascot", "the least suspected individual"]), + "chase_event": get_input("Enter a chase event: ", ["the culprit made a dash for it", "a sudden distraction caused chaos", "an unexpected accomplice appeared"]), + "cat_action_chase": get_input("Enter the cat's action during the chase: ", ["leaped from rooftop to rooftop", "darted through secret alleyways", "used feline agility to corner the suspect"]), + "owner_action_chase": get_input("Enter the owner's action during the chase: ", ["called for backup", "set up a clever trap", "provided a timely distraction"]), + "confrontation_location": get_input("Enter the confrontation location: ", ["the old clock tower", "the abandoned fish cannery", "the maze-like hedge garden"]), + "resolution_action": get_input("Enter how the cat resolves the situation: ", ["tricked the culprit into a confession", "presented irrefutable evidence", "orchestrated a dramatic reveal"]), + "motive": get_input("Enter the culprit's motive: ", ["jealousy over another pet's popularity", "a misguided attempt to impress someone", "a complicated misunderstanding"]), + "reward": get_input("Enter the cat's reward: ", ["gourmet salmon dinner", "new catnip toys", "a cozy new bed by the fireplace"]) +} + +# Generate the story +story = template.render(story_inputs) + +# Print the story +print(story) \ No newline at end of file