diff --git a/README.md b/README.md new file mode 100644 index 0000000..e69de29 diff --git a/pyproject.toml b/pyproject.toml index 8e3432c..9463533 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,20 +1,36 @@ +[build-system] +requires = ["setuptools>=42.0", "wheel"] +build-backend = "setuptools.build_meta" + [project] name = "tetris" version = "0.1.0" -description = "Tetris game with AI" +description = "Tetris game" authors = [{ name = "Kristofers Solo", email = "dev@kristofers.xyz" }] readme = "README.md" requires-python = ">=3.11" -license = { text = "GPLv3" } +license = { file = "LICENSE" } dependencies = [ "attrs==23.1.0", "loguru==0.7.2", - "neat-python==0.92", "numpy==1.26.3", "pygame-ce==2.4.0", + "toml==0.10.2", +] +keywords = ["tetris", "game", "pygame"] +classifiers = [ + "Development Status :: 3 - Alpha", + "License :: OSI Approved :: GPLv3 License", + "Programming Language :: Python :: 3 :: Only", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", ] +[project.urls] +Repository = "https://github.com/kristoferssolo/Tetris" + [tool.mypy] +mypy_path = "src" check_untyped_defs = true disallow_any_generics = true ignore_missing_imports = true @@ -32,7 +48,8 @@ line-length = 120 indent-width = 4 [tool.ruff.lint] -select = ["I"] +extend-select = ["I"] +preview = true [tool.ruff.format] quote-style = "double" diff --git a/requirements.txt b/requirements.txt index 56c1f94..e8c8681 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,6 +1,6 @@ -attrs>=23.1.0 -loguru>=0.7.2 -neat-python>=0.92 -numpy>=1.26.3 -pygame-ce>=2.4.0 +attrs==23.1.0 +loguru==0.7.2 +numpy==1.26.3 +pygame-ce==2.4.0 +toml==0.10.2 . diff --git a/requirements_dev.txt b/requirements_dev.txt index 5dcd987..f3bc67b 100644 --- a/requirements_dev.txt +++ b/requirements_dev.txt @@ -1,3 +1,3 @@ -mypy>=1.8.0 -pytest>=7.4.3 -ruff>=0.1.9 +mypy==1.8.0 +pytest==7.4.3 +ruff==0.1.9 diff --git a/tetris/__init__.py b/tetris/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tetris/__main__.py b/tetris/__main__.py new file mode 100644 index 0000000..a47c87b --- /dev/null +++ b/tetris/__main__.py @@ -0,0 +1,75 @@ +#!/usr/bin/env python +import argparse +import sys + +from loguru import logger + +parser = argparse.ArgumentParser(description="Tetris game with AI") +group = parser.add_mutually_exclusive_group() +group.add_argument( + "-d", + "--debug", + action="store_true", + help="Debug", +) + +group.add_argument( + "-v", + "--verbose", + action="store_true", + help="Verbose", +) + +parser.add_argument( + "-g", + "--graphic", + action="store_true", + help="Run app with GUI [Default]", +) + + +def setup_logger(level: str = "warning") -> None: + from utils import BASE_PATH + + logger.remove() + logger.add( + sink=sys.stdout, + format="{time} | {level} | {message}", + level=level.upper(), + colorize=True, + ) + + logger.add( + BASE_PATH / ".logs" / "teris.log", + format="{time} | {level} | {message}", + level="DEBUG" if level.upper() == "DEBUG" else "INFO", + rotation="10 MB", + compression="zip", + ) + + +@logger.catch +def run() -> None: + import game + from utils import GameMode + + logger.debug("Launching the game") + game.Main(GameMode.PLAYER).run() + + +def main(args: argparse.ArgumentParser) -> None: + if args.debug: + level = "debug" + elif args.verbose: + level = "info" + else: + level = "warning" + + setup_logger(level) + + run() + + +if __name__ == "__main__": + args = parser.parse_args() + main(args)