Ich schreibe ein Schachspiel und versuche, jedem einzelnen Stück seine eigenen Eigenschaften und Methoden über Klassen zu geben. Ich habe eine String-Darstellung einer Tafel, die zu Beginn des Spiels auch String-Darstellungen jeder Schachfigur enthält. Ich möchte meine Pfanddarstellungen über eine Pfandklasse in Objekte verwandeln, bin mir aber nicht ganz sicher, wie das geht.Verwirrung über die Verwendung von Klassen
Zum Beispiel, wenn ich jeden weißen Bauer Zeichenfolge (bezeichnet mit „WP“) iterieren will, was macht die Zeile:
for i in range(0, 8):
my_board[i][1] = Pawn(i, i)
tatsächlich tun? Erzeugt es an jeder dieser Positionen Klassenobjekte, die mir permanent den Zugriff auf die Listen über die von mir erstellten Methoden ermöglichen? Wenn ja, würden sie keine eindeutigen Variablennamen benötigen? Oder existiert das Objekt nur als Anfangspositionen, für die es erstellt wurde? Im Idealfall würde ich für jedes Element ein eindeutiges Objekt erstellen, aber ich bin mir nicht sicher, ob ich das richtig implementiert habe oder nicht.
Hier ist der Rest meines Code als Referenz.
class ChessBoard:
def __init__(self):
self.board = self.create_board
def create_board(self):
game_board = []
letters = ["A", "B", "C", "D", "E", "F", "G", "H"]
for x in range(len(letters)):
game_board.append([])
for y in range(1, 9):
game_board[x].append(str(letters[x])+str(y))
return game_board
class Pawn:
def __init__(self, x, y):
self.x = x
self.y = y
def passive_move(self):
my_board[self.x][self.y-1] = self
self.y -= 1
def initialise_board(my_board):
pieces = ["C ", "Kn", "B ", "Q ", "K ", "B ", "Kn", "C "]
for x in range(len(pieces)):
my_board[x][0] = pieces[x]
my_board[x][7] = pieces[x]
for i in range(0, 8):
my_board[i][1] = "WP"
my_board[i][6] = "BP"
return my_board
def str_represent_board(game_board):
board_letters = ["A", "B", "C", "D", "E", "F", "G", "H"]
print(3 * " ", end = " ")
for i in board_letters:
print((i) + 3 * (" "), end = " ")
print("\n" + 41 * "_")
c = 0
for y in range(1, 9):
print(y, end = " ")
print(1 * " ", end = " ")
for z in game_board:
print(z[c] + 2 * " ", end = " ")
c += 1
print(1 * ("\n"))
print(41 * "_")
if __name__ == "__main__":
my_board = ChessBoard().create_board()
my_board = initialise_board(my_board)
str_represent_board(my_board)
for i in range(0, 8):
my_board[i][1] = Pawn(i, i)
Was lässt Sie denken 'my_board [row] [column]' _istn_ ein eindeutiger Variablenname? – TigerhawkT3
Aber wenn ich meine passive_move-Methode aufrufen würde, würde das ursprüngliche my_board [row] [col] als Klassenobjekt bleiben oder wäre es die neue Position? – Perplexityy
Diese Frage macht keinen Sinn. Ich vermute, du musst ein Tutorial finden und über Listen und Objekte nachlesen. – TigerhawkT3