私は自分自身を書き込もうとしましたが、私はチェスの木構造を作成するために使用できるpythonツリーを見つけることができませんでした。ツリーを深く進めるために、私は新しいポジションを追加するときにサブルートを返そうとしますが、すべてのポジションがルートに追加されているようですが、私は予想通りサブルートへの参照を与えられませんチェックしてルートには多くの孫がいます。あなたはそれがクラスレベルでスコープされる任意の関数のchildren
外を宣言し、すべてのNode
オブジェクトが同じリストを共有するときに、基本的にPythonツリーに希望の値が渡されていません
class variables.を誤用しているので、
import chess.pgn
class Node(object):
children = []
score = None
def __init__(self, fen):
self.fen = fen
def add(self, fen):
for c in self.children:
if c.fen == (fen):
print("working")
return c
self.children.append(Node(fen))
return self.children[-1]
root = Node('rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1')
def createTree(fileName):
pgn = open(fileName)
game = chess.pgn.read_game(pgn)
while(game):
next_move = game.variations[0]
fen = next_move.board().fen()
global root
currentRoot = root.add(fen)
while(not next_move.is_end() and next_move.board().fullmove_number <= 5):
next_move = next_move.variations[0]
fen = next_move.board().fen()
currentRoot = currentRoot.add(fen)
print(currentRoot.children)
game = chess.pgn.read_game(pgn)
file = r"C:\all.pgn"
createTree(file)
for n in root.children:
print(n.fen)
使用している 'chess.pgn'ライブラリへのダウンロードリンクを提供してください。 –
https://pypi.python.org/pypi/pythonchesches – Josh