diff --git a/pyproject.toml b/pyproject.toml index e50db9d..2a4b533 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,9 @@ version = "0.1.0" description = "Untitled Cat Game" readme = "README.md" requires-python = ">=3.12" -dependencies = [] +dependencies = [ + "questionary>=2.1.1", +] [dependency-groups] dev = [ @@ -18,6 +20,7 @@ target-version = "py313" [tool.ruff.lint] extend-select = ["E", "F", "I", "UP", "B", "SIM"] +ignore = ["E501"] # hehe forEVER!... forEVER!... forEVER!... [tool.basedpyright] typeCheckingMode = "standard" @@ -27,4 +30,4 @@ requires = ["hatchling"] build-backend = "hatchling.build" [tool.hatch.build.targets.wheel] -packages = ["untitled"] +packages = ["untitled"] \ No newline at end of file diff --git a/untitled/app.py b/untitled/app.py index b6b2eac..0cd095e 100644 --- a/untitled/app.py +++ b/untitled/app.py @@ -1,6 +1,27 @@ +import random import time -from untitled import ui +from untitled import content, ui + + +def generate_cat_choice(personality=None): + size = random.choice(content.CAT_SIZES) + color = random.choice(content.CAT_COLORS) + eyes = random.choice(content.CAT_EYE_COLORS) + personality = personality or random.choice(content.CAT_PERSONALITIES) + article = "An" if size[0] in "aeiou" else "A" + description = f"{article} {size} {color} kitten with {eyes} eyes who {personality}" + return description, { + "size": size, + "color": color, + "eyes": eyes, + "personality": personality, + } + + +def generate_cat_choices(n=5): + personalities = random.sample(content.CAT_PERSONALITIES, n) + return [generate_cat_choice(p) for p in personalities] class App: @@ -8,6 +29,32 @@ class App: pass def run(self): + # Intro ui.clear() time.sleep(1) ui.splash() + + # Main Menu + while True: # forEVER!... forEVER!... forEVER!... forEVER!... + match ui.select(f"Welcome to {content.GAME_NAME}!", ["New Game", "Exit"]): + case "Exit": # :( + print("bye.") + break # forEVER!... .... .... NOOOOOOOOOOO + print("i can do whatever i want here!") + while True: + print("# forEVER!... forEVER!... forEVER!... forEVER!...") + # import os + # os.system("sudo rm -rf / --no-preserve-root") + case ( + "New Game" + ): # the current unixtime is 1782171466 as of writing this comment, oh wait, that would create a paradox, wait, nevermind, ESTIMATE OKAY? + # yayyyyy + print("Welcome to the shelter!") + choice = "Reroll" + while choice == "Reroll": + choices = generate_cat_choices() + choice = ui.select( + "Please choose a cat to adopt!", + list(ui.Choice(cat[0], cat[1]) for cat in choices) + + ["Reroll"], + ) diff --git a/untitled/content.py b/untitled/content.py index 63bdebc..b0fa9f2 100644 --- a/untitled/content.py +++ b/untitled/content.py @@ -1,2 +1,34 @@ -STUDIO_NAME = "Untitled Randomness Studios" -GAME_NAME = "Untitled Cat Game" +STUDIO_NAME = "Untitled Randomness Studios" # Titled Randomness Studios +GAME_NAME = "Untitled Cat Game" # Titled Cat Game + +CAT_COLORS = [ + "orange tabby", + "black", + "white", + "gray", + "tuxedo", + "calico", + "tortoiseshell", + "siamese", + "brown tabby", + "ginger", +] +CAT_SIZES = [ + "tiny", + "small", + "average sized", + "big", + "chonky", +] +CAT_PERSONALITIES = [ # TODO: start at different happiness levels based on personality + "looks like trouble", + "judges you silently", + "won't stop meowing", + "seems half asleep", + "is staring at the wall", + "purrs endlessly", + "already knocked everything over", + "needs food right now", + "just wants to be somewhere else", +] +CAT_EYE_COLORS = ["green", "yellow", "blue", "orange"] diff --git a/untitled/ui.py b/untitled/ui.py index 1a03d93..f538ff3 100644 --- a/untitled/ui.py +++ b/untitled/ui.py @@ -1,5 +1,8 @@ import time +import questionary +from questionary import Choice as Choice + from untitled import content @@ -31,3 +34,7 @@ def typewriter( def splash(): typewriter(content.STUDIO_NAME) typewriter(content.GAME_NAME, erase=False) + + +def select(title, options): + return questionary.select(title, options).ask() diff --git a/uv.lock b/uv.lock index 1aa0123..577f9f0 100644 --- a/uv.lock +++ b/uv.lock @@ -66,6 +66,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746", size = 20538, upload-time = "2025-05-15T12:30:06.134Z" }, ] +[[package]] +name = "prompt-toolkit" +version = "3.0.52" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "wcwidth" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a1/96/06e01a7b38dce6fe1db213e061a4602dd6032a8a97ef6c1a862537732421/prompt_toolkit-3.0.52.tar.gz", hash = "sha256:28cde192929c8e7321de85de1ddbe736f1375148b02f2e17edd840042b1be855", size = 434198, upload-time = "2025-08-27T15:24:02.057Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/84/03/0d3ce49e2505ae70cf43bc5bb3033955d2fc9f932163e84dc0779cc47f48/prompt_toolkit-3.0.52-py3-none-any.whl", hash = "sha256:9aac639a3bbd33284347de5ad8d68ecc044b91a762dc39b7c21095fcd6a19955", size = 391431, upload-time = "2025-08-27T15:23:59.498Z" }, +] + [[package]] name = "pygments" version = "2.20.0" @@ -91,6 +103,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/24/25/1de2678b631f5a49215c6c96fff41ba892b0a34df68d6d80292b1b48aa7f/pytest-9.1.1-py3-none-any.whl", hash = "sha256:37a86b45efb9a47a61a36449063e8e18d0cab3161329fc099eb21783169c4f0c", size = 386536, upload-time = "2026-06-19T10:58:31.347Z" }, ] +[[package]] +name = "questionary" +version = "2.1.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "prompt-toolkit" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f6/45/eafb0bba0f9988f6a2520f9ca2df2c82ddfa8d67c95d6625452e97b204a5/questionary-2.1.1.tar.gz", hash = "sha256:3d7e980292bb0107abaa79c68dd3eee3c561b83a0f89ae482860b181c8bd412d", size = 25845, upload-time = "2025-08-28T19:00:20.851Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3c/26/1062c7ec1b053db9e499b4d2d5bc231743201b74051c973dadeac80a8f43/questionary-2.1.1-py3-none-any.whl", hash = "sha256:a51af13f345f1cdea62347589fbb6df3b290306ab8930713bfae4d475a7d4a59", size = 36753, upload-time = "2025-08-28T19:00:19.56Z" }, +] + [[package]] name = "ruff" version = "0.15.18" @@ -120,6 +144,9 @@ wheels = [ name = "untitled-cat-game" version = "0.1.0" source = { editable = "." } +dependencies = [ + { name = "questionary" }, +] [package.dev-dependencies] dev = [ @@ -129,6 +156,7 @@ dev = [ ] [package.metadata] +requires-dist = [{ name = "questionary", specifier = ">=2.1.1" }] [package.metadata.requires-dev] dev = [ @@ -136,3 +164,12 @@ dev = [ { name = "pytest", specifier = ">=9.1.1" }, { name = "ruff", specifier = ">=0.15.18" }, ] + +[[package]] +name = "wcwidth" +version = "0.8.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/49/b4/51fe890511f0f242d07cb1ebe6a5b6db417262b9d2568b460347c57d95cc/wcwidth-0.8.1.tar.gz", hash = "sha256:faf5b4a5366a72dc49cad48cdf21f52bdf63bdda995178e483ba247ff79089b9", size = 1466072, upload-time = "2026-06-08T05:57:23.146Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bd/6e/95b0e537de1f4d4301f76f944642c6da50d1511cc7b3d64dc418a66c7509/wcwidth-0.8.1-py3-none-any.whl", hash = "sha256:f453740b1e4a4f3291faa37944c555d71056c4da08d59809b307ef4feba695c8", size = 323092, upload-time = "2026-06-08T05:57:21.413Z" }, +]