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. E.G. échecs.board (). Piece_at (échecs.b1) code> Mais je veux le faire via une variable, y a-t-il un moyen pour moi d'obtenir le type de pièce. P>
Source = 'G1' CODE> Comment obtenir le type de pièce pour la source? P>
4 Réponses :
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)
Désolé, je n'ai peut-être pas exprimé ma question clairement. Je cherchais un moyen de remplacer échec.b1 code>. 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.
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', ]
Non - Vous ne pouvez pas: vous créez un nouveau conseil avec chaque appel ..
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
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. em> Voici comment nous trouverons une pièce à une place spécifique: P> < PRE> XXX PRE> Son va revenir: N (dans ce cas alors que nous déplacons notre chevalier de G1 à F3.) P> P>
Essayez
getattr code> sur l'objet d'échecs.