基于控制台的游戏中的碰撞无效

时间:2015-09-25 03:09:17

标签: python console collision

我的board类中有两个方法来检查碰撞。一个用于其他玩家对象,一个用于地图边框。地图的工作正常,但玩家的碰撞是关闭的。 以下是方法:

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.

1 个答案:

答案 0 :(得分:0)

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

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

player.x == 0