0
votes

Comment obtenir une pièce en python-échecs

J'utilise maintenant Python-Chess pour mon projet d'échecs. Je pense avoir trouvé l'utilisation de l'obtenir par définition directe. par exemple. échecs.board (). Piece_at (échecs.b1) Mais je veux le faire via une variable, y a-t-il un moyen pour moi d'obtenir le type de pièce.

E.G. Source = 'G1' Comment obtenir le type de pièce pour la source?


1 commentaires

Essayez getattr sur l'objet d'échecs.


4 Réponses :


1
votes

Vous devez avoir un objet d'accès à la pièce et vous pouvez obtenir de type pièce à partir de l'objet pièce comme celui-ci. (Vous aurez peut-être besoin du symbole ou de la couleur aussi)

import chess
board = chess.Board()
piece = board.piece_at(chess.B1)
piece_type = piece.piece_type
piece_color = piece.color
piece_symbol = piece.symbol()

print(piece_type)
print(piece_symbol)
print(piece_color)


1 commentaires

Désolé, je n'ai peut-être pas exprimé ma question clairement. Je cherchais un moyen de remplacer échec.b1 . Je veux obtenir les informations d'une pièce dans un carré donné à travers des variables. Je me demande si je peux stocker B1 dans une variable et obtenir des types de pièces différents car je modifie la variable.



-2
votes

Je n'ai pas vraiment trouvé aucune solution élégante pour cela. Mais j'ai constaté que cela accepte également l'entrée de nombres mais dans un format spécial.

squares = [
            'A1', 'B1', 'C1', 'D1', 'E1', 'F1', 'G1', 'H1',
            'A2', 'B2', 'C2', 'D2', 'E2', 'F2', 'G2', 'H2',
            'A3', 'B3', 'C3', 'D3', 'E3', 'F3', 'G3', 'H3',
            'A4', 'B4', 'C4', 'D4', 'E4', 'F4', 'G4', 'H4',
            'A5', 'B5', 'C5', 'D5', 'E5', 'F5', 'G5', 'H5',
            'A6', 'B6', 'C6', 'D6', 'E6', 'F6', 'G6', 'H6',
            'A7', 'B7', 'C7', 'D7', 'E7', 'F7', 'G7', 'H7',
            'A8', 'B8', 'C8', 'D8', 'E8', 'F8', 'G8', 'H8',
        ]


1 commentaires

Non - Vous ne pouvez pas: vous créez un nouveau conseil avec chaque appel ..



0
votes

comme l'auteur de Jouer aux échecs avec une webcam i a couru dans le même problème.

Il existe plusieurs options d'indirection décrites dans P>

https://python-chess.readthedocs.io/fr/latest/core.html P>

Le code ci-dessous Voir P>

https://github.com/wolfgangfahl/play- échecs-with-a-webcam / blob / maître / src / test_board.py p>

utilise l'accès par ligne / col, mais vous pouvez également faire tout autre mappage à l'aide des indirections de rang / fichier mis à disposition dans le noyau. Tant que vous vous retrouvez avec un sbilindindex dans la gamme de 0..63, tout ira bien. P>

♜ ♞ ♝ ♛ ♚ ♝ ♞ ♜
♟ ♟ ♟ ♟ ♟ ♟ ♟ ♟
· · · · · · · ·
· · · · · · · ·
· · · · · · · ·
· · · · · · · ·
â™™ â™™ â™™ â™™ â™™ â™™ â™™ â™™
♖ ♘ ♗ ♕ ♔ ♗ ♘ ♖
 square | row | col | type | piece | color | field
--------+-----+-----+------+-------+-------+------
      0 |   0 |   0 |    4 |     R | white | white
      1 |   0 |   1 |    2 |     N | white | black
      2 |   0 |   2 |    3 |     B | white | white
      3 |   0 |   3 |    5 |     Q | white | black
      4 |   0 |   4 |    6 |     K | white | white
      5 |   0 |   5 |    3 |     B | white | black
      6 |   0 |   6 |    2 |     N | white | white
      7 |   0 |   7 |    4 |     R | white | black
      8 |   1 |   0 |    1 |     P | white | black
      9 |   1 |   1 |    1 |     P | white | white
     10 |   1 |   2 |    1 |     P | white | black
     11 |   1 |   3 |    1 |     P | white | white
     12 |   1 |   4 |    1 |     P | white | black
     13 |   1 |   5 |    1 |     P | white | white
     14 |   1 |   6 |    1 |     P | white | black
     15 |   1 |   7 |    1 |     P | white | white
     48 |   6 |   0 |    1 |     p | black | white
     49 |   6 |   1 |    1 |     p | black | black
     50 |   6 |   2 |    1 |     p | black | white
     51 |   6 |   3 |    1 |     p | black | black
     52 |   6 |   4 |    1 |     p | black | white
     53 |   6 |   5 |    1 |     p | black | black
     54 |   6 |   6 |    1 |     p | black | white
     55 |   6 |   7 |    1 |     p | black | black
     56 |   7 |   0 |    4 |     r | black | black
     57 |   7 |   1 |    2 |     n | black | white
     58 |   7 |   2 |    3 |     b | black | black
     59 |   7 |   3 |    5 |     q | black | white
     60 |   7 |   4 |    6 |     k | black | black
     61 |   7 |   5 |    3 |     b | black | white
     62 |   7 |   6 |    2 |     n | black | black
     63 |   7 |   7 |    4 |     r | black | white


0 commentaires

0
votes

supposons que vous souhaitiez trouver quelle pièce à: f3 Vous pouvez utiliser échecs.parse_square () pour obtenir l'index de n'importe quel carré en passant: F3, A1, A2 et ainsi de suite.

Voici comment nous trouverons une pièce à une place spécifique: < PRE> XXX

Son va revenir: N (dans ce cas alors que nous déplacons notre chevalier de G1 à F3.)


0 commentaires