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

Pygame点击器游戏第三个矩形点击检测不触发问题求助

问题根因与解决方案

根因分析

  1. 第三个矩形的点击判定代码混淆了x轴和y轴的坐标参数:
    你定义rect3 = pygame.Rect(pos31, pos32, siz31, siz32),其中pos31是矩形的水平左边界,pos32是矩形的垂直上边界。但你的判定代码反过来用pos31判断y轴范围、用pos32判断x轴范围,导致判定区域和实际绘制的rect3完全不重合,自然不会触发。
  2. 额外隐患:你手动修改了rect.center属性后,仍然用最初的pos1、pos2做点击判定,后续如果调整rect位置会直接导致判定失效。

解决方案

推荐直接使用Pygame内置的Rect.collidepoint()方法做点击判定,不需要手动维护坐标参数,避免写错轴的问题,修改clickcheck函数即可:

def clickcheck():
 global clicks
 global multi
 global upp
 mouse_pos = pygame.mouse.get_pos()
 print(mouse_pos)
 # 直接用Rect自带的碰撞检测方法
 if rect.collidepoint(mouse_pos):
     print('Click-Rect')
     clicks += 1 * multi
 if rect2.collidepoint(mouse_pos):
     print('Click-Rect-2')
     if clicks >= upp:
       print('Upgrade')
       multi += 1
       clicks -= upp
       upp = round(upp * multi / 1.677)
 if rect3.collidepoint(mouse_pos):
     print('Click-Rect-3')

如果要保留手动判定的写法,将第三个矩形的判定逻辑调整为:

# 修正xy轴参数对应关系
if mousey >= pos32 and mousey <= pos32 + siz32:
   if mousex >= pos31 and mousex <= pos31 + siz31:
     print('Click-Rect-3')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 19:45:03