从我的班级中检索时输入错误

时间:2014-11-17 03:44:51

标签: python-3.x

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字典,因为它是预构建的。 任何反馈都表示赞赏

1 个答案:

答案 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')

这让我想到了,如果有人有更清洁的方法,请随时发布!