Pygame图片点击检测问题:奶奶按钮点击无响应求助
你的代码存在两处核心问题,导致点击奶奶图片无法触发预期效果:
1. 绘制函数参数未正确使用
grandshop函数定义时接收x,y参数,但内部绘制却硬编码使用全局变量xx,yy,虽然当前调用时传入的是正确值,但这种写法冗余且容易出错,修正为:
def grandshop(x,y): gameDisplay.blit(grandma, (x,y))
2. 碰撞检测未匹配实际绘制位置
grandma.get_rect()默认生成的矩形左上角坐标是(0,0),但你实际把奶奶图片绘制在(450,20)位置,所以必须给矩形设置正确的位置后再做碰撞检测。同理,饼干的碰撞检测只是碰巧生效(因为绘制在(0,0)),也应该统一修正写法。
修改后的鼠标点击检测代码:
if event.type == pygame.MOUSEBUTTONDOWN: mouse_pos = pygame.mouse.get_pos() # 绑定饼干到实际绘制位置 cookie_rect = cookie.get_rect(topleft=(x, y)) if cookie_rect.collidepoint(mouse_pos) and event.button == 1: cookies += 1 pygame.display.set_caption(f'Cookies: {cookies}') # 绑定奶奶到实际绘制位置 grandma_rect = grandma.get_rect(topleft=(xx, yy)) if grandma_rect.collidepoint(mouse_pos): print("It actually worked! :)")
同时移除原代码中不必要的else: break语句,避免右键点击直接终止循环。
完成上述修改后,点击奶奶图片就能正常打印预期内容了。
内容的提问来源于stack exchange,提问作者omboybread
相关产品推荐
相关产品推荐

