基于控制台的游戏中的碰撞不起作用

Collision in console based game not working

我的板内有两种方法 class 来检查碰撞。一个用于其他玩家对象,一个用于地图的边界。地图上的那个工作正常,但玩家的碰撞关闭了。 以下是方法:

def check_mob(self, player, enemy):
    dx = player.x - enemy.x
    dy = player.y - enemy.y
    distance = math.sqrt(dx ** 2 + dy ** 2)
    if distance <= 1:
        return True
    else:
        return False

def check_brd(self, board, player, enemy, direction):
    '''Deals with collision '''
    brd_x = len(self.board)
    brd_y = len(self.board[0])
    if direction == 'down':
        if player.x + 1 == brd_x or self.check_mob(player, enemy):
            return False
        else:
            return True
    elif direction == 'up':
        if player.x - 1 == brd_x - brd_x -1 or self.check_mob(player, enemy):
            return False
        else:
            return True
    elif direction == 'left':
        if player.y - 1 == brd_y - brd_y - 1 or self.check_mob(player, enemy):
            return False
        else:
            return True
    elif direction == 'right':
        if player.y + 1 == brd_y or self.check_mob(player, enemy):
            return False
        else:
            return True

玩家或敌人会走向对方并卡住。发生这种情况时,我需要他们能够彼此远离。 整个,现在工作的代码是 here.

check_mob 正在测试当前位置的碰撞,而不是玩家试图去的位置... 同时简化

player.x - 1 == brd_x - brd_x -1

player.x == 0