用鼠标点击python中的随机图像

用鼠标点击python中的随机图像,python,pygame,Python,Pygame,我是python初学者。最近我在做一个pygame项目。我想做一个游戏,屏幕将显示一个随机位置的图像,0.3秒后,图像将再次移动到另一个随机位置。玩家会用鼠标反复点击改变位置的图像,分数会增加。即使我做了所有事情,用鼠标点击也不会增加分数 这是我的密码: pygame.init() 宽度=500 高度=500 分数=0 display=pygame.display.set_模式((宽度、高度)) pygame.display.set_标题(“点击”) image=pygame.image.loa

我是python初学者。最近我在做一个pygame项目。我想做一个游戏,屏幕将显示一个随机位置的图像,0.3秒后,图像将再次移动到另一个随机位置。玩家会用鼠标反复点击改变位置的图像,分数会增加。即使我做了所有事情,用鼠标点击也不会增加分数

这是我的密码:

pygame.init()
宽度=500
高度=500
分数=0
display=pygame.display.set_模式((宽度、高度))
pygame.display.set_标题(“点击”)
image=pygame.image.load('spaceship.png').convert()
侧面=[‘顶部’、‘底部’、‘左侧’、‘右侧’]
权重=[宽度、宽度、高度、高度]
posx=random.randint(50450)
posy=random.randint(20460)
tsp=1.2
Mousex=0
Mousey=0
def图像_视图(x,y):
显示光点(图像,(x,y))
运行=真
运行时:
显示.填充((153255187))
对于pygame.event.get()中的事件:
如果event.type==pygame.QUIT:
运行=错误
如果event.type==pygame.MOUSEBUTTONDOWN:
Mousex,Mousey=event.pos
如果image.get_rect().collidepoint(posx,posy):
分数+=1
边=随机。选择(边、权重)[0]
如果边==“顶部”:
posx=random.randrange(100300)
posy=random.randrange(20100)
睡眠时间(tsp)
elif side=='Botom':
posx=random.randrange(350430)
posy=random.randrange(250450)
睡眠时间(tsp)
elif侧==‘左’:
posx=random.randrange(20250)
posy=random.randrange(20250)
睡眠时间(tsp)
elif side==‘右’:
posx=random.randrange(280450)
posy=random.randrange(280450)
睡眠时间(tsp)
打印(分数)
图像视图(posx、posy)
pygame.display.update()

您必须评估鼠标是否在图像上。注意,a没有位置。它位于一个位置。因此,返回的对象位置为(0,0)。
您必须通过关键字参数设置位置(例如,
image.get_rect(topleft=(posx,posy))
)。最后,您可以使用评估鼠标光标(
Mousex
Mousey
)是否位于当前放置图像的显示区域:

如果event.type==pygame.MOUSEBUTTONDOWN:
Mousex,Mousey=event.pos
image_rect=image.get_rect(左上=(posx,posy))
如果图像右碰撞点(Mousex,Mousey):
分数+=1

此外,
time.sleep(tsp)
会阻止系统响应。切勿延迟主应用程序循环。
用于以毫秒为单位获取时间。添加变量
next\u choice\u time
。时间指示必须更改图像位置的时间。设置更改图像位置时的新时间:

next\u choice\u time=0
运行时:
当前时间=pygame.time.get_ticks()
对于pygame.event.get()中的事件:
如果event.type==pygame.QUIT:
运行=错误
如果event.type==pygame.MOUSEBUTTONDOWN:
Mousex,Mousey=event.pos
image_rect=image.get_rect(左上=(posx,posy))
如果图像右碰撞点(Mousex,Mousey):
分数+=1
下一次选择时间=当前时间
如果当前时间>=下一次选择时间:
下一次选择时间=当前时间+300#300毫秒==0.3秒
边=随机。选择(边、权重)[0]
# [...]

请参见示例:

导入pygame
随机输入
pygame.init()
宽度=500
高度=500
分数=0
display=pygame.display.set_模式((宽度、高度))
pygame.display.set_标题(“点击”)
image=pygame.image.load('spaceship.png').convert()
侧面=[‘顶部’、‘底部’、‘左侧’、‘右侧’]
权重=[宽度、宽度、高度、高度]
posx=random.randint(50450)
posy=random.randint(20460)
tsp=1.2
Mousex=0
Mousey=0
def图像_视图(x,y):
显示光点(图像,(x,y))
运行=真
下一次选择时间=0
运行时:
当前时间=pygame.time.get_ticks()
对于pygame.event.get()中的事件:
如果event.type==pygame.QUIT:
运行=错误
如果event.type==pygame.MOUSEBUTTONDOWN:
Mousex,Mousey=event.pos
image_rect=image.get_rect(左上=(posx,posy))
如果图像右碰撞点(Mousex,Mousey):
分数+=1
下一次选择时间=当前时间
打印(分数)
如果当前时间>=下一次选择时间:
下一次选择时间=当前时间+300#300毫秒==0.3秒
边=随机。选择(边、权重)[0]
如果边==“顶部”:
posx=random.randrange(100300)
posy=random.randrange(20100)
elif side=='Botom':
posx=random.randrange(350430)
posy=random.randrange(250450)
elif侧==‘左’:
posx=random.randrange(20250)
posy=random.randrange(20250)
elif side==‘右’:
posx=random.randrange(280450)
posy=random.randrange(280450)
显示.填充((153255187))
图像视图(posx、posy)
pygame.display.update()