You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pygame开发捉人游戏如何判断两坐标差值在10以内触发if语句

Pygame捉人游戏碰撞判定逻辑修正

现有代码问题说明

  • 当前代码中使用的&是Python位运算符,并非逻辑判断所用的and,即使仅需要判断坐标完全相等的场景,也需要替换为and才能得到正确的判断结果。
  • 此前使用range()判定不生效的核心原因有两点:
    1. Python的range()为左闭右开结构,例如range(10)仅覆盖0到9的整数,若要覆盖正负10以内的区间需要写为range(-10, 11),书写逻辑繁琐
    2. 若游戏中坐标存在浮点数(例如开启了移动平滑、帧率插值等逻辑),浮点数无法匹配整数类型的range()元素,会永远返回False

正确实现方案

直接计算两点坐标差值的绝对值进行判定,兼容整数、浮点数类型的坐标,写法简洁性能更优:

if abs(pos[0] - enemypos[0]) <= 10 and abs(pos[1] - enemypos[1]) <= 10:
    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])

内容的提问来源于stack exchange,提问作者MattMcL

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 15:18:02