class Position:
def __init__(self, x,y):
self.x = int(x)
self.y = int(y)
def positions_down(self):
self.down = []
line1 = self.x + 1,self.y - 1
line2 = self.x + 1,self.y + 1
self.down.append(line1)
self.down.append(line2)
return self.down
def __eq__(self, other):
return self.x == other.x and self.y == other.y
def __repr__(self):
return '({}, {})'.format(self.x, self.y)
def __hash__(self):
return hash(str(self))
class Piece:
def __init__(self, color, type_piece):
self.color = color
self.type_piece = type_piece
def is_pawn(self):
return self.type_piece == "pawn"
def is_queen(self):
return self.type_piece == "queen"
def is_white(self):
return self.color == "white"
def is_balck(self):
return self.color == "black"
def change(self):
self.type_piece = "queen"
def __repr__(self):
if self.is_white() and self.is_pawn():
return "o"
elif self.is_white() and self.is_queen():
return "O"
elif self.is_black() and self.is_pawn():
return "x"
else:
return "X"
class board:
def __init__(self):
self.n_x = 8
self.n_y = 8
self.cases = { Position(1,1):Piece("white","pawn") } #example of what my dict contains
def check_piece(self, position):
return self.cases.get(Position(*position), None)
def possible_moves(self, position, towards):
if self.check.piece(position) == 'x'or 'X' or 'o' or 'O':
if towards in self.cases.get(Position(position), None) == None:
return True
else:
return False
else:
print('always getting this')
return False
将代码更改为 - >如果朝向self.cases.get(位置(*位置),无)==无: 我收到以下错误: TypeError:“Piece”类型的参数不可迭代
可能不会更改self.cases字典,因为它是预构建的。 任何反馈都表示赞赏
答案 0 :(得分:0)
def possible_moves(self, position, towards):
my_piece = str(self.check_piece(position))
piece_towards = (self.check_piece(towards))
if my_piece == 'x' and piece_towards == None:
if self.position_board(towards)== True: #created a function with all board positions
if position in Position(*position).positions_down():
print("True")
else:
print("False")
elif my_piece == 'o' and piece_towards == None:
if self.position_board(towards)== True:
if towards in Position(*position).positions_up(): #opposite methode of positions_down()
print("True")
else:
print("False")
else:
print('False')
else:
print('False')
这让我想到了,如果有人有更清洁的方法,请随时发布!