私はチェスゲームを書いており、各ユニークな部分にクラスを介して独自のプロパティとメソッドを与えるよう試みています。私はボードの文字列表現を持っています。ボードには、ゲームの開始時に各チェスピースの文字列表現も含まれています。私はPawnクラスを介して私のポーン表現をオブジェクトに変換したいが、これを行う方法が完全にはわからない。例えばクラスを使うことについての混乱
私は(「WP」と表記)各白ポーンの文字列を反復処理したい場合は、ライン何をん:
for i in range(0, 8):
my_board[i][1] = Pawn(i, i)
は、実際のですか?これらのポジションのそれぞれにクラスオブジェクトを作成して、作成したメソッドを使用してリストの周りを移動することができますか?もしそうなら、彼らは一意の変数名を必要としませんか?あるいは、オブジェクトは作成された最初の位置としてのみ存在しますか?理想的には、各アイテムに一意のオブジェクトを作成しますが、正しく実装されているかどうかはわかりません。
ここに参考のために私のコードの残りの部分があります。
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)
'my_board [row] [column]'は一意の変数名ではないと思いますか? – TigerhawkT3
しかし、私がpassive_moveメソッドを呼び出すと、元のmy_board [row] [col]はクラスオブジェクトとして残りますか、それとも新しい位置になりますか? – Perplexityy
その質問は理にかなっていません。私はあなたがチュートリアルを見つけてリストやオブジェクトを読む必要があると思う。 – TigerhawkT3