Je suis novice en matière de classes, mais j'essaie de les intégrer dans des programmes pour des fonctions qui prennent toutes les mêmes entrées (je suppose que c'est ce qui fait le plus sens...?). Je travaille sur un échiquier, donc ça semble aller.Classes Python - faire glisser des noms de variables par l'intermédiaire de fonctions
J'ai un exemple ci-dessous où j'essaie d'obtenir les mouvements valides pour un morceau.
class Board:
def __init__(self, board, r, c):
self.board = board
self.r = r
self.c = c
def piece(self):
return self.board[self.r,self.c]
def color(self):
#does this line not get pushed down so 'legal_moves' can't see self.piece?
self.piece = Board(self.board,self.r,self.c).piece()
if self.piece == '-':
return 'N'
elif self.piece.istitle():
return 'w'
else:
return 'b'
#This is the function that returns None
def legal_moves(self):
moves = {'P':[(1,0)],
'p':[(-1,0)],
'r':[(1,0),(-1,0),(0,1),(0,-1)],
'n':[(2,1),(2,-1),(-2,-1),(-2,1)],
'b':[(1,1),(-1,-1),(-1,1),(1,-1)],
'k':[(1,0),(-1,0),(0,1),(0,-1),(1,1),(-1,-1),(-1,1),(1,-1)]}
return moves.get(self.piece)
Mon conseil est juste un échiquier standard 8x8 avec R-K pour 'w' et r-K pour 'b' dans sa configuration initiale (pas de coups joués)
print(Board(curr,1,2).piece()) #returns P - correct
print(Board(curr,1,2).color()) #returns w - correct
print(Board(curr,1,2).legal_moves()) #returns None - incorrect
Thank you! De plus, je suis novice en programmation. Si vous avez des commentaires sur le style/l'efficacité, ajoutez-les également.
Merci beaucoup! Parfait. En guise de note, devrais-je être capable de définir 'def valide_move (auto, r, c, r_offset,): self.r_offset, self.c_offset = r + r_offset, c + c_offset' et ensuite utiliser' self.r_offset' dans autres fonctions dans la même classe? Il semble que non, mais je voulais juste vérifier – user6142489