From 18a0fd249c7854f4951063cccd457e816a8ff768 Mon Sep 17 00:00:00 2001 From: Owen Feldman Date: Sun, 29 Mar 2026 10:14:12 -0400 Subject: [PATCH] Added shelter and things needed for it (incomplete) --- .gitignore | 3 +++ .vscode/settings.json | 8 ++++---- game.py | 4 ++-- systems/ui.py | 21 +++++++++++++++++++++ systems/world.py | 21 ++++++++++++++++++++- 5 files changed, 50 insertions(+), 7 deletions(-) diff --git a/.gitignore b/.gitignore index 555e90e..4217cd3 100644 --- a/.gitignore +++ b/.gitignore @@ -188,3 +188,6 @@ cython_debug/ # Built Visual Studio Code Extensions *.vsix + +# Whiskerbound specific stuff +*.kitten \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json index 6c05ac9..7d1c282 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,8 +1,8 @@ { "files.exclude": { - ".gitignore": true, - "LICENSE": true, - "README.md": true, - ".vscode/": true + ".gitignore": false, + "LICENSE": false, + "README.md": false, + ".vscode/": false } } diff --git a/game.py b/game.py index e408e63..69c5ae5 100644 --- a/game.py +++ b/game.py @@ -1,7 +1,7 @@ from data.cat import Cat from systems.ui import clear, title from systems.world import shelter -import questionary +import systems.ui as ui class Game: @@ -19,7 +19,7 @@ class Game: def run(self): title() print("Welcome to Whiskerbound!") - choice = questionary.select("", choices=["New Game", "Quit"]).ask() + choice = ui.select("", choices=["New Game", "Quit"]) if choice == "New Game": self.new_game() diff --git a/systems/ui.py b/systems/ui.py index 3358e78..8d4ad6f 100644 --- a/systems/ui.py +++ b/systems/ui.py @@ -1,4 +1,5 @@ import os +import questionary def clear(): @@ -8,3 +9,23 @@ def clear(): def title(): clear() print("=== Whiskerbound ===\n") + + +STYLE = questionary.Style( + [ + ("selected", "fg:cyan bold"), + ("pointer", "fg:cyan bold"), + ] +) + + +def select(message, choices): + return questionary.select(message, choices=choices, style=STYLE).ask() + + +def text(message, default=""): + return questionary.text(message, default=default, style=STYLE).ask() + + +def confirm(message, default=True): + return questionary.confirm(message, default=default, style=STYLE).ask() diff --git a/systems/world.py b/systems/world.py index eeba4e4..64c06b0 100644 --- a/systems/world.py +++ b/systems/world.py @@ -1,7 +1,26 @@ from data.cat import Cat +import systems.ui as ui +import re + + +def check_cat_name(name): + name = name.strip() + if not name: + return "Please choose a name:" + if len(name) > 4 or len(name) < 20: + return "Please choose a name greater than 4 charecters and less than 20:" + if re.search(r"[^a-zA-Z \-']", name): + return "Please only use letters, spaces, hyphens and apostrophes:" + return "Ok" def shelter(): # TODO: make - name = input("Name your cat: ") + name = ui.text("Welcome to the shelter! Please choose a name for your cat:") + while True: + check_result = check_cat_name(name) + if check_result != "Ok": + name = ui.text(check_result) + else: + break return Cat(name)