gpt4 book ai didi

python - 如何在第一次单击鼠标时选择一个 Sprite ,然后在第二次单击鼠标的位置创建一个新 Sprite

转载 作者:太空宇宙 更新时间:2023-11-04 01:54:33 24 4
gpt4 key购买 nike

我正在创建一个简单的游戏,要求您能够通过单击选择一个 Sprite ,然后将您选择的 Sprite 的新实例放置到第二次鼠标单击的位置。

#Creating the sprite
addBarrierButton = Barrier()

addBarrierButton.rect.x=800
addBarrierButton.rect.y=400
all_sprites_list = pygame.sprite.group()
all_sprites_list.add(addBarrierButton)
all_sprites_list.draw(gameDisplay)

#Main loop

while True:
ev = pygame.event.get()
for event in ev:
if event.type = pygame.MOUSEBUTTONDOWN:
mouse_pos = pygame.mouse.get_pos()

if addBarrierButton.rect.collidepoint(mouse_pos):
#Here is where I am stuck... I need it to wait for a second
#click
#and then create a new barrier at the position of that click

主要问题是我找不到在第一次点击后等待第二次点击的方法。

最佳答案

您无需等待第二次点击。您需要能够理解在单击时程序是应该选择 Sprite 还是创建一个新 Sprite 。

一种方法是创建一个变量selected_sprite。如果这个变量等于None,这意味着点击必须选择一个 Sprite 。如果此变量包含 Sprite ,您可以在新位置创建它的副本(或只是一个新 Sprite )。

我重新编写了您的代码以展示如何做:

addBarrierButton = Barrier()

addBarrierButton.rect.x=800
addBarrierButton.rect.y=400

all_sprites_list = pygame.sprite.group()
all_sprites_list.add(addBarrierButton)
all_sprites_list.draw(gameDisplay)

selected_sprite = None

#Main loop
while True:
for event in pygame.event.get():
if event.type = pygame.MOUSEBUTTONDOWN:
if selected_sprite is None:
for spr in all_sprites_list:
if spr.rect.collidepoint(event.pos):
selected_sprite = spr
break
else:
new_sprite = Barrier()
new_sprite.image = selected_sprite.image
new_sprite.rect.x = event.pos[0]
new_sprite.rect.y = event.pos[1]
all_sprites_list.add(new_sprite)
selected_sprite = None

关于python - 如何在第一次单击鼠标时选择一个 Sprite ,然后在第二次单击鼠标的位置创建一个新 Sprite ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57135363/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com