我的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.
答案 0 :(得分:0)
check_mob正在测试当前位置的碰撞,而不是玩家试图去的位置...... 还简化
player.x - 1 == brd_x - brd_x -1
到
player.x == 0