我正在使用Pygame编程类,需要重新创建一个游戏的标签。当标记器的坐标在玩家坐标的10范围内时,我试图传递一个if语句。我试图在if语句中使用'in range()',但它似乎不起作用。我不知道我做错了什么。
if (pos[0] == enemypos[0] & pos[1] == enemypos[1]):
font = pygame.font.SysFont('Calibri', 25, True, False)
gameovertext = font.render("You're IT", True, WHITE)
screen.blit(gameovertext, [x_mouse+10, y_mouse+10])
相减以获得位置差,而不是检查相等:
if abs(pos[0] - enempypos[0]) < 10 and abs(pos[1] - enempypos[1]) < 10:
还可以计算欧几里得距离。
可以使用标准数学库中的dist
函数来计算欧几里得距离。
import dist from math
if dist(pos, enemypos) >= 10:
# in range
如果你将这两组坐标相减,那么你将得到它们之间的差值。该值可能为负值,因此您还需要使用abs()
if (abs(pos[0] - enemypos[0]) < 10 and abs(pos[1] - enemypos[1]) < 10: