I'm little forgotten about python sdince I don't use it since a while and I can't solve this seemingly very basic error.
I'm doing a very naif approach to code a chess engine and I'm not being able of correctly separate instances of classes.
In my code:
class Piece:
def __init__(self, name='', symbol='', color='', value=0, position=(0,0)):
self.name=name
self.color=color
...
class Army:
def __init__(self, color="", pieces=[]):
self.color=color
self.pieces=pieces
black=Army()
for rank in range(8):
black.pieces.append(Piece())
black.pieces[rank].color="B"
print(Army().pieces[rank].color)
Output:
B
B
B
B
B
B
B
B
Instead of '' to which Piece() defaults. Note that the output points to Army() and not to black instance for which that output would be the expected.
Shouldn't separate class instances take separate values? I really can't figure out what's going on.
My full code is:
class Game:
def __init__(self, name="chess",score=0,board=""):
self.name=name
self.board=board
self.score=score
class Board:
def __init__(self, position="", size=[8,8]):
self.size=size
self.position=position
class Piece:
def __init__(self, name='', symbol='', color='', value=0, position=(0,0)):
# vector=[[0,0],[0,0]])
self.name=name
self.color=color
self.value=value
self.position=position
# self.vector=vector
class Army:
def __init__(self, color="", pieces=[]):
self.color=color
self.pieces=pieces
chess=Game()
chess.name="FIDE"
chess.board=Board()
chess.board.size=[8,8]
checker=Piece()
checker.name="checker"
checker.value=100
checker.vector=(1,0)
black=Army()
black.color="B"
for rank in range(8):
black.pieces.append(Piece())
black.pieces[rank].color="B"
print(Army().pieces)
white=Army()
white.color="W"
for rank in range(8):
white.pieces.append(Piece())
white.pieces[rank].color="W"
print( len(black.pieces))
for ch in white.pieces:
print (ch.color)
print(black)
print(white)
print(len(white.pieces))
print(black.color)
#print (white.pieces.color)