Merge pull request 'build: zabalení hry do instalovatelného Python balíčku' (#26) from package into version/v0.2.0

Reviewed-on: david/kostky#26
This commit was merged in pull request #26.
This commit is contained in:
2026-06-27 19:18:48 +02:00
6 changed files with 93 additions and 26 deletions
+4 -1
View File
@@ -1,2 +1,5 @@
__pycache__/
*.pyc
*.pyc
dist/
build/
*.egg-info/
View File
+4
View File
@@ -0,0 +1,4 @@
from kostky.kostky import main
if __name__ == "__main__":
main()
View File
+35 -25
View File
@@ -1,9 +1,11 @@
from typing import Any
from random import randint
from os import system, name
import re
import csv
import re
from collections import Counter
from importlib.resources import files
from os import name, system
from random import randint
from typing import Any
from tabulate import tabulate
score: int = 0
@@ -15,19 +17,19 @@ h_bool: bool = True
aggr: dict[str, int] = {}
final_score: int = 10000
with open("hodnoty.csv", "r") as csv_file:
csv_reader = csv.reader(csv_file)
csv_text = files(__package__).joinpath("hodnoty.csv").read_text(encoding="utf-8")
csv_reader = csv.reader(csv_text.splitlines())
for row in csv_reader:
key = str(row[0])
value = int(row[1])
for row in csv_reader:
key = str(row[0])
value = int(row[1])
hodnoty[key] = value
hodnoty[key] = value
def throw(count: int) -> str:
count = int(count)
new_throw: list[str] = []
for dice in range(count):
for _dice in range(count):
new_throw.append(str(randint(1, 6)))
new_throw_str: str = "".join(new_throw)
return new_throw_str
@@ -39,7 +41,7 @@ def show_throw(throw: str) -> str:
pretty_list: str = ", ".join(throw_temp)
pretty_list += "\n"
for i in range(1, len(throw_temp) + 1):
for _i in range(1, len(throw_temp) + 1):
pretty_list += "^ "
pretty_list += "\n"
for i in range(1, len(throw_temp) + 1):
@@ -47,10 +49,7 @@ def show_throw(throw: str) -> str:
return pretty_list
def clear() -> None:
if name == 'nt':
_ = system('cls')
else:
_ = system('clear')
_ = system('cls') if name == 'nt' else system('clear')
def evaluate(inp: Any, count: int, throw: str) -> tuple[Any, ...]:
@@ -78,16 +77,25 @@ def evaluate(inp: Any, count: int, throw: str) -> tuple[Any, ...]:
inp = str(inp)
if re.search(r"^\d+$", inp):
if len(inp) > count:
data: tuple[Any, ...] = ("msg", "ER01", "Tolika kostkami nemůžete hodit. Zkuste to znovu: ", count, throw)
data: tuple[Any, ...] = (
"msg",
"ER01",
"Tolika kostkami nemůžete hodit. Zkuste to znovu: ",
count,
throw
)
else:
for x in inp:
x = int(x)
if x > count:
if count == 1:
ran = "1"
else:
ran = f"1{count}"
data = ("msg", "ER02", f"Zvolte prosím kostky v platném rozsahu ({ran}): ", count, throw)
ran = "1" if count == 1 else f"1{count}"
data = (
"msg",
"ER02",
f"Zvolte prosím kostky v platném rozsahu ({ran}): ",
count,
throw
)
return data
old_throw: list[str] = []
pick: list[str] = []
@@ -203,8 +211,9 @@ def add_players() -> None:
else:
break
def to_sorted_tuple(d: dict[str, int], s: bool = True) -> tuple[list[tuple[int, str, int]], dict[str, int]]:
L: list[tuple[str, int]] = []
def to_sorted_tuple(d: dict[str, int], s: bool = True) -> tuple[list[tuple[int, str, int]],
dict[str, int]]:
L: list[tuple[int, str, int]] = []
if s:
d = dict(sorted(d.items(), key=lambda x: x[1], reverse=True))
@@ -276,7 +285,8 @@ def game(data: tuple) -> None:
if count == 0:
count = 6
msg: str = ("Jakou akci chcete provést?\n"
" - Zadejte kombinaci kostek k ponechání (dojde k jejich vyhodnocení): [pozice kostek] (např. 1 nebo 34 nebo 123456).\n"
" - Zadejte kombinaci kostek k ponechání (dojde k jejich vyhodnocení): "
"[pozice kostek] (např. 1 nebo 34 nebo 123456).\n"
" - Hodit znovu: [h].\n"
f" - Ukončit hod a ponechat si skóre z tohoto hodu ({score}): [k].\n"
" - Ukončit hru: [exit].\n"
+50
View File
@@ -0,0 +1,50 @@
[build-system]
requires = ["hatchling", "hatch-vcs"]
build-backend = "hatchling.build"
[project]
name = "kostky"
dynamic = ["version"]
description = "Textová hra v kostky."
readme = "README.md"
requires-python = ">=3.9"
license = "GPL-3.0-or-later"
license-files = ["LICENSE"]
authors = [{ name = "David Spáčil" }]
keywords = ["hra", "kostky", "cli"]
classifiers = [
"Programming Language :: Python :: 3",
"Environment :: Console",
"Operating System :: OS Independent",
"Topic :: Games/Entertainment",
]
dependencies = [
"tabulate",
]
[project.optional-dependencies]
dev = ["mypy", "ruff", "types-tabulate"]
[project.urls]
Repository = "https://gitea.spacilovi.eu/david/kostky"
[project.scripts]
kostky = "kostky.kostky:main"
[tool.hatch.version]
source = "vcs"
[tool.hatch.build.targets.wheel]
packages = ["kostky"]
[tool.mypy]
python_version = "3.9"
strict = true
files = ["kostky"]
[tool.ruff]
target-version = "py39"
line-length = 100
[tool.ruff.lint]
select = ["E", "F", "I", "UP", "B", "SIM"]