aboard¶
Lib Python 3 de gestion de quadrillages en 2D, avec des opérations de base permettant d’implémenter une game logic ou des bots pour des jeux de plateaux.
Pas de « pip install » pour l’instant. Il faut copier manuellement les fichiers de code dans votre projet.
Le fichier « aboard_standalone.py » est généré avec tout le code de la lib. Son contenu peut être copié-collé dans n’importe quel contexte (par exemple, un puzzle ou un challenge du site codingame).
Sommaire¶
Quickstart¶
Création, accès aux tiles, affichage.
>>> from aboard import Board
>>> board = Board(9, 6)
>>> board[3, 2].data = 'Z'
>>> print(board.render())
.........
.........
...Z.....
.........
.........
.........
Accès à des lignes, colonnes, rectangles de tiles via des itérateurs.
>>> for tile in board[2, :]:
... tile.data = '|'
>>> for tile in board[3:, 1]:
... tile.data = '='
>>> for tile in board[3:, 4:6]:
... tile.data = '#'
>>> print(board.render())
..|......
..|======
..|Z.....
..|......
..|######
..|######
Accès à partir du coin inférieur droit, avec des coordonnées négatives.
>>> for coord in [(-1, -1), (-1, 4), (-2, 4)]:
... board[coord].data = '.'
>>> print(board.render())
..|......
..|======
..|Z.....
..|......
..|####..
..|#####.
Remplissage par propagation, à partir d’une position donnée.
>>> for tile in board.get_by_propagation((6, 3)):
... tile.data = '/'
>>> print(board.render())
..|......
..|======
..|Z/////
..|//////
..|####//
..|#####/
Vérification des coordonnées, déplacement selon une direction.
>>> from aboard import BoardIndexError, Pos, Dir
>>> pos = Pos(9, 0)
>>> try:
... board[pos]
... except BoardIndexError as e:
... print(e)
Coord not in board. coord : 9, 0. board size : 9, 6.
>>> pos.move(Dir.LEFT, 7)
>>> board[pos].data = '.'
>>> pos.move(Dir.DOWN)
>>> board[pos].data = '.'
>>> print(board.render())
.........
...======
..|Z/////
..|//////
..|####//
..|#####/
Recherche du chemin le plus court. (La configuration par défaut n’autorise pas les mouvements en diagonale, mais c’est modifiable).
>>> for idx, tile in enumerate(board.get_by_pathfinding((1, 3), (6, 0))):
... tile.data = idx
>>> print(board.render())
..45678..
.23======
.1|Z/////
.0|//////
..|####//
..|#####/