{ "info": { "author": "Zhiqing Xiao", "author_email": "xzq.xiaozhiqing@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 2 - Pre-Alpha", "Intended Audience :: Developers", "Intended Audience :: Education", "Intended Audience :: Science/Research", "License :: Other/Proprietary License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 3", "Topic :: Games/Entertainment", "Topic :: Games/Entertainment :: Board Games" ], "description": "boardgame2\n=======================\n\n`boardgame2` is an extension of OpenAI Gym that implements multiple two-player zero-sum 2-dimension board games, such as TicTacToe, Gomuko, and Reversi.\n\n## Environments\n- `Reversi-v0`\n- `KInARow-v0`, as well as `Gomuku-v0` and `TicTacToe-v0`\n- `Go-v0` (Experimental)\n\n## Install\n\n pip install --upgrade boardgame2\n\n\n## Usage\n\nCreate a Game\n\n```\nimport gym\nimport boardgame2\n\nenv = gym.make('TicTacToe-v0')\nenv = gym.make('Gomuku-v0')\nenv = gym.make('KInARow-v0', board_shape=5, target_length=4)\nenv = gym.make('KInARow-v0', board_shape=(3, 5), target_length=4)\nenv = gym.make('Reversi-v0')\nenv = gym.make('Reversi-v0', board_shape=6)\nenv = gym.make('Go-v0')\n```\n\nPlay a Game\n\n```\nimport gym\nimport boardgame2\n\nenv = gym.make('TicTacToe-v0')\nprint('observation space = {}'.format(env.observation_space))\nprint('action space = {}'.format(env.action_space))\n\nobservation = env.reset()\nwhile True:\n action = env.action_space.sample()\n observation, reward, done, info = env.step(action)\n if done:\n break\nenv.close()\n```\n\n# API\n\n### Constants\n\n**boardgame2.BLACK**\n\nThe 1st player.\n\n**boardgame2.WHITE**\n\nThe 2nd player.\n\n**boardgame2.EMPTY**\n\nNeither of the two players.\n\n### Functions\n\n**boardgame2.strfboard**\n```\nstrfboard(board:np.array, render_characters:str='+ox', end:str='\\n') -> str\n```\nFormat a board as a string\n\n**boardgame2.is_index**\n```\nis_index(board:np.array, location:np.array) -> bool\n```\nCheck whether a location is a valid index for the board\n\n**boardgame2.extend_board**\n```\nextend_board(board:np.array)\n```\nGet the rotations of the board. Only valid for square board.\n\n### Classes\n\n**boardgame2.BoardGameEnv**\n\nThe base class of all board game environment.\n\n```\n__init__(board_shape, illegal_action_mode:str='resign', render_characters:str='+ox', allow_pass:bool=True) -> boardgame2.BoardGameEnv\n```\nConstructor.\nboard_shape can be either an `int` or `(int, int)`.\n\n```\nseed(seed=None) -> NoneType\n```\nSee `gym.Env.seed()`.\n\n```\nreset() -> tuple\n```\nSee `gym.Env.reset()`.\nobservation is in the form of `(np.array, int)`.\n\n```\nstep(action:np.array) -> tuple, float, bool, dict\n```\nSee `gym.Env.step()`.\n\n```\nrender(mode:str='human')\n```\nSee `gym.Env.render()`.\n\n```\nis_valid(state:tuple, action:np.array) -> bool\n```\nCheck whether the action is valid for current state.\n\n```\nget_valid(state:tuple) -> np.array\n```\nGet all valid locations for the current state.\n\n```\nhas_valid(state:tuple) -> bool\n```\nCheck whether there are valid locations for current state.\n\n```\nget_winner(state:tuple)\n```\nCheck whether the game has ended. If so, who is the winner.\n\n```\nget_next_state(state:tuple, action:np.array) -> tuple\n```\nGet the next state.\n\n```\nnext_step(state:tuple, action:np.array) -> tuple, float, bool, dict\n```\nGet the next observation, reward, done, and info. Similar to `gym.Env.step()`.\n\n```\nPASS\n```\nIntend to skip, as a predefined constant action.\n\n```\nRESIGN\n```\nIntend to resign, as a predefined constant action.\n\n\n**boardgame2.KInARowEnv** (registered as `KInARow-v0`, as well as `Gomuku-v0` and `TicTacToe-v0`)\n```\n__init__(board_shape, target_length:int=3, illegal_action_mode:str='pass', render_characters:str='+ox') -> boardgame2.KInARowEnv\n```\n\n\n**boardgame2.ReversiEnv** (registered as `Reversi-v0`)\n```\n__init__(board_shape, render_characters:str='+ox') -> boardgame2.ReversiEnv\n```\n\n\n**boardgame2.GoEnv** (registered as `Go-v0`, Not fully implemented)\n```\n__init__(board_shape, komi:float=0., allow_suicide:bool=False, illegal_action_mode:str='pass', render_characters:str='+ox') -> boardgame2.GoEnv\n```\n\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://pypi.org/project/boardgame2/", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "boardgame2", "package_url": "https://pypi.org/project/boardgame2/", "platform": "", "project_url": "https://pypi.org/project/boardgame2/", "project_urls": { "Homepage": "https://pypi.org/project/boardgame2/" }, "release_url": "https://pypi.org/project/boardgame2/0.0.5/", "requires_dist": [ "six", "numpy", "gym" ], "requires_python": ">=3.6.0", "summary": "2-player zero-sum board game extension for OpenAI Gym.", "version": "0.0.5" }, "last_serial": 5022621, "releases": { "0.0.5": [ { "comment_text": "", "digests": { "md5": "bb9a897c9bbb16281e13ed8642fa528a", "sha256": "12de35518ac6c51617e06296052b477d5bbfe46529e63536283d90af6f2aebb3" }, "downloads": -1, "filename": "boardgame2-0.0.5-py3-none-any.whl", "has_sig": false, "md5_digest": "bb9a897c9bbb16281e13ed8642fa528a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6.0", "size": 9000, "upload_time": "2019-04-01T14:57:54", "url": "https://files.pythonhosted.org/packages/2b/06/7b1b31862412989bf68b9554bb5ea85f36e865180442865fc0422642c805/boardgame2-0.0.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fd7f6b2b62e8c53babf0f0e828d1d122", "sha256": "510fd108fd46994ae8fdd10d4d89e6a4136a9205e3a117c8597ef369f1f8c62d" }, "downloads": -1, "filename": "boardgame2-0.0.5.tar.gz", "has_sig": false, "md5_digest": "fd7f6b2b62e8c53babf0f0e828d1d122", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 8227, "upload_time": "2019-04-01T14:57:55", "url": "https://files.pythonhosted.org/packages/23/76/d11288e665f2f6aeb56b592b30540c9c8cf857c9db77e708d08d47e0b354/boardgame2-0.0.5.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "bb9a897c9bbb16281e13ed8642fa528a", "sha256": "12de35518ac6c51617e06296052b477d5bbfe46529e63536283d90af6f2aebb3" }, "downloads": -1, "filename": "boardgame2-0.0.5-py3-none-any.whl", "has_sig": false, "md5_digest": "bb9a897c9bbb16281e13ed8642fa528a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6.0", "size": 9000, "upload_time": "2019-04-01T14:57:54", "url": "https://files.pythonhosted.org/packages/2b/06/7b1b31862412989bf68b9554bb5ea85f36e865180442865fc0422642c805/boardgame2-0.0.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fd7f6b2b62e8c53babf0f0e828d1d122", "sha256": "510fd108fd46994ae8fdd10d4d89e6a4136a9205e3a117c8597ef369f1f8c62d" }, "downloads": -1, "filename": "boardgame2-0.0.5.tar.gz", "has_sig": false, "md5_digest": "fd7f6b2b62e8c53babf0f0e828d1d122", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 8227, "upload_time": "2019-04-01T14:57:55", "url": "https://files.pythonhosted.org/packages/23/76/d11288e665f2f6aeb56b592b30540c9c8cf857c9db77e708d08d47e0b354/boardgame2-0.0.5.tar.gz" } ] }