1 回答

TA贡献1993条经验 获得超5个赞
对象没有pygame.Surface
位置。返回的矩形的位置get_rect()
总是 (0, 0)。
请注意,当表面为 时,您指定一个位置blit
:
root.blit(house, (400, 100))
当您检索碰撞的矩形时,您必须设置相同的位置。您可以将关键字参数值传递给此函数,这些值设置为pygame.Rect
对象:
house.get_rect(topleft = (400, 100))
例如:
while window_is_open:
# [...]
for event in pygame.event.get():
if event.type == pygame.QUIT:
window_is_open = False
if event.type == pygame.MOUSEBUTTONDOWN:
mouse_x, mouse_y = event.pos
dx = mouse_x - x
dy = mouse_y - y
if market.get_rect(topleft = (400, 300)).collidepoint(mouse_x, mouse_y):
if abs(dx) <= 50 and abs(dy) <= 50:
open_market()
if house.get_rect(topleft = (400, 100)).collidepoint(mouse_x, mouse_y):
if abs(dx) <= 50 and abs(dy) <= 50:
open_house()
for tree in trees:
if tree.trunk.collidepoint(mouse_x, mouse_y):
if abs(dx) <= 50 and abs(dy) <= 50:
countdown = 3
destroy_tree = tree
# [...]
此外,您必须在函数中使用global
语句将其happiness
视为全局命名空间中的变量open_market
:
def open_market():
global happiness
happiness = score / 2
添加回答
举报