# Gameboard
This library creates a 3-dimensional grid object with 2 fixed-length dimensions (x, y) and a third unfixed-length dimension (z).
Example use cases include multi-agent simulations where multiple agents can be placed on a 2D grid and be in the same cell, or board games where the board is a 2D grid and pieces can be stacked on top of or adjacent to each other.
The primary purpose of this project is to be able to access coordinates just as on a coordinate plane.
e.g. with the variable `board` of type `grid`, `board[0, 0]` will return the bottom-left corner of the grid.
## Install
Run:
```bash
pip install gameboard
```
## Example Usage
```python
from gameboard.grid import grid
board = grid(grid_size = 3, fill = True)
print(board)
# [[[1], [2], [3]],
#
# [[4], [5], [6]],
#
# [[7], [8], [9]]]
print(board[2, 1])
# [6]
board[2, 1].append('a')
print(board)
# [[[1], [2], [3]],
#
# [[4], [5], [6, 'a']],
#
# [[7], [8], [9]]]
board[2, 2].remove(3)
print(board)
# [[[1], [2], []],
#
# [[4], [5], [6, 'a']],
#
# [[7], [8], [9]]]
print(2 in board[1, 2])
# True
print(2 in board[2, 1])
# False
position = [1, 0]
print(board[position])
# [8]
data = [2, 3, 4]
board[position].append(3)
board[position].append(data)
# [[[1], [2], []],
#
# [[4], [5], [6, 'a']],
#
# [[7], [8, 3, [2, 3, 4]], [9]]]
import numpy as np
pos = np.array([0, 0])
board[pos] = ['0']
print(board)
# [[[1], [2], []],
#
# [[4], [5], [6, 'a']],
#
# [['0'], [8, 3, [2, 3, 4]], [9]]]
```
The `fill` parameter is set to `True` for the example, where all squares are numbered.
If you set the `fill` parameter to `False` ***or*** do not specify (default is `False`), all z-axis arrays will be empty.
## Warning
This project does not currently work with negative indices for the y-coordinate when accessing the grid.
This project is in an early development stage and may not be suitable for all use cases. For ease of use, the `__iter__` dunder method has been implemented for both the y-axis and x-axis arrays, and the `append`/`remove` methods and `__iter__` dunder method work for adding, removing and iterating through elements in the z-dimension arrays as the z-dimension arrays are simply Python lists.
Raw data
{
"_id": null,
"home_page": "https://github.com/Sprocketer/gameboard",
"name": "gameboard",
"maintainer": null,
"docs_url": null,
"requires_python": null,
"maintainer_email": null,
"keywords": "pypi, python",
"author": "Alex",
"author_email": "sprocketerdev@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/de/2f/fe34dffc9f747de07c1015eeac5d3253c434d97a3dd004737964dd903eb3/gameboard-1.0.9.1.tar.gz",
"platform": null,
"description": "\n# Gameboard\n\nThis library creates a 3-dimensional grid object with 2 fixed-length dimensions (x, y) and a third unfixed-length dimension (z).\n\nExample use cases include multi-agent simulations where multiple agents can be placed on a 2D grid and be in the same cell, or board games where the board is a 2D grid and pieces can be stacked on top of or adjacent to each other.\n\nThe primary purpose of this project is to be able to access coordinates just as on a coordinate plane.\n\ne.g. with the variable `board` of type `grid`, `board[0, 0]` will return the bottom-left corner of the grid.\n\n## Install\n\nRun:\n\n```bash\npip install gameboard\n```\n\n## Example Usage\n\n```python\nfrom gameboard.grid import grid\n\nboard = grid(grid_size = 3, fill = True)\nprint(board)\n\n# [[[1], [2], [3]],\n#\n# [[4], [5], [6]],\n#\n# [[7], [8], [9]]]\n\nprint(board[2, 1])\n\n# [6]\n\nboard[2, 1].append('a')\nprint(board)\n\n# [[[1], [2], [3]],\n#\n# [[4], [5], [6, 'a']],\n#\n# [[7], [8], [9]]]\n\nboard[2, 2].remove(3)\nprint(board)\n\n# [[[1], [2], []],\n#\n# [[4], [5], [6, 'a']],\n#\n# [[7], [8], [9]]]\n\nprint(2 in board[1, 2])\n\n# True\n\nprint(2 in board[2, 1])\n\n# False\n\nposition = [1, 0]\nprint(board[position])\n\n# [8]\n\ndata = [2, 3, 4]\nboard[position].append(3)\nboard[position].append(data)\n\n# [[[1], [2], []],\n#\n# [[4], [5], [6, 'a']],\n#\n# [[7], [8, 3, [2, 3, 4]], [9]]]\n\nimport numpy as np\npos = np.array([0, 0])\nboard[pos] = ['0']\nprint(board)\n\n# [[[1], [2], []],\n#\n# [[4], [5], [6, 'a']],\n#\n# [['0'], [8, 3, [2, 3, 4]], [9]]]\n```\n\nThe `fill` parameter is set to `True` for the example, where all squares are numbered.\nIf you set the `fill` parameter to `False` ***or*** do not specify (default is `False`), all z-axis arrays will be empty.\n\n## Warning\n\nThis project does not currently work with negative indices for the y-coordinate when accessing the grid.\n\nThis project is in an early development stage and may not be suitable for all use cases. For ease of use, the `__iter__` dunder method has been implemented for both the y-axis and x-axis arrays, and the `append`/`remove` methods and `__iter__` dunder method work for adding, removing and iterating through elements in the z-dimension arrays as the z-dimension arrays are simply Python lists.\n",
"bugtrack_url": null,
"license": null,
"summary": "A 3D grid creation library for simulation and games.",
"version": "1.0.9.1",
"project_urls": {
"Homepage": "https://github.com/Sprocketer/gameboard"
},
"split_keywords": [
"pypi",
" python"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "2953165dc9d32dfb3aa4134079170e0ebf747ace6048b5cff96393b2f8c8a801",
"md5": "31d4eb7bd69856c2825d2cbc6b44adc7",
"sha256": "044b3c6e8d5c286fa536ee5b59c3a8bc0f0a16cf59ea7a6910cd8ebca3fd97d9"
},
"downloads": -1,
"filename": "gameboard-1.0.9.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "31d4eb7bd69856c2825d2cbc6b44adc7",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 3097,
"upload_time": "2024-11-04T19:31:34",
"upload_time_iso_8601": "2024-11-04T19:31:34.453071Z",
"url": "https://files.pythonhosted.org/packages/29/53/165dc9d32dfb3aa4134079170e0ebf747ace6048b5cff96393b2f8c8a801/gameboard-1.0.9.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "de2ffe34dffc9f747de07c1015eeac5d3253c434d97a3dd004737964dd903eb3",
"md5": "dd58ba1fb0ab87c70e452d62b95e34f6",
"sha256": "3f43e368d6c56823417f29dbbce0bfe80fe00b2e43eb6df4c7a001d02268aa74"
},
"downloads": -1,
"filename": "gameboard-1.0.9.1.tar.gz",
"has_sig": false,
"md5_digest": "dd58ba1fb0ab87c70e452d62b95e34f6",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 3085,
"upload_time": "2024-11-04T19:31:35",
"upload_time_iso_8601": "2024-11-04T19:31:35.395114Z",
"url": "https://files.pythonhosted.org/packages/de/2f/fe34dffc9f747de07c1015eeac5d3253c434d97a3dd004737964dd903eb3/gameboard-1.0.9.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-11-04 19:31:35",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "Sprocketer",
"github_project": "gameboard",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "gameboard"
}