如何在盒子周围制作互动区域?
How to make interactive area around boxes?
想象一张由 4 个不同颜色的盒子组成的图片。下面是我试过的代码。我想知道当我点击其中一个框时弹出其他图片(如何标记区域并阅读点击以备后用)。有比这更简单的方法吗?
a, b = 685, 227
c, d = 310, 203
w, z = 684, 518
k, l = 311, 518
x, y = 310, 200
ekraan.blit(background,(x,y))
while True:
for i in pygame.event.get():
pygame.display.flip()
if i.type == pygame.QUIT:
sys.exit()
elif i.type == pygame.MOUSEBUTTONDOWN:
ma,mb = i.pos
mc,md = i.pos
mw,mz = i.pos
mk,ml = i.pos
if abs(ma-a)<379 and abs(mb-b)<319:
ekraan.blit(green,(685,227))
klickedButton = green
elif abs(mc-c)<379 and abs(md-d)<319:
ekraan.blit(red,(310,203))
klickedButton = red
elif abs(mw-w)<379 and abs(mz-z)<319:
ekraan.blit(yellow,(684,518))
klickedButton = yellow
elif abs(mk-k)<379 and abs(mk-k)<319:
ekraan.blit(blue,(311,518))
klickedButton = blue
您的代码的一个改进是您可以将开始的点连同它们各自的颜色放在元组列表中,并在检查事件时摆脱 elif
s 的墙:
quadrants = [(685, 227, green),
(310, 203, red),
(684, 518, yellow),
(311, 518, blue)]
x, y = 310, 200
ekraan.blit(background, (x, y))
while True:
for i in pygame.event.get():
pygame.display.flip()
if i.type == pygame.QUIT:
sys.exit()
elif i.type == pygame.MOUSEBUTTONDOWN:
mx, my = i.pos
for x, y, color in quadrants:
if abs(mx-x) < 379 and abs(my-y) < 319:
ekraan.blit(color, (x, y))
klickedButton = color
break
想象一张由 4 个不同颜色的盒子组成的图片。下面是我试过的代码。我想知道当我点击其中一个框时弹出其他图片(如何标记区域并阅读点击以备后用)。有比这更简单的方法吗?
a, b = 685, 227
c, d = 310, 203
w, z = 684, 518
k, l = 311, 518
x, y = 310, 200
ekraan.blit(background,(x,y))
while True:
for i in pygame.event.get():
pygame.display.flip()
if i.type == pygame.QUIT:
sys.exit()
elif i.type == pygame.MOUSEBUTTONDOWN:
ma,mb = i.pos
mc,md = i.pos
mw,mz = i.pos
mk,ml = i.pos
if abs(ma-a)<379 and abs(mb-b)<319:
ekraan.blit(green,(685,227))
klickedButton = green
elif abs(mc-c)<379 and abs(md-d)<319:
ekraan.blit(red,(310,203))
klickedButton = red
elif abs(mw-w)<379 and abs(mz-z)<319:
ekraan.blit(yellow,(684,518))
klickedButton = yellow
elif abs(mk-k)<379 and abs(mk-k)<319:
ekraan.blit(blue,(311,518))
klickedButton = blue
您的代码的一个改进是您可以将开始的点连同它们各自的颜色放在元组列表中,并在检查事件时摆脱 elif
s 的墙:
quadrants = [(685, 227, green),
(310, 203, red),
(684, 518, yellow),
(311, 518, blue)]
x, y = 310, 200
ekraan.blit(background, (x, y))
while True:
for i in pygame.event.get():
pygame.display.flip()
if i.type == pygame.QUIT:
sys.exit()
elif i.type == pygame.MOUSEBUTTONDOWN:
mx, my = i.pos
for x, y, color in quadrants:
if abs(mx-x) < 379 and abs(my-y) < 319:
ekraan.blit(color, (x, y))
klickedButton = color
break