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.