Python 更新矩形的位置

Python 更新矩形的位置,python,pygame,Python,Pygame,我正在尝试熟悉pygame,所以我从一个简单的程序开始,这个程序可以画一个矩形并用鼠标移动它。矩形画得很好,但是它不随鼠标位置移动,我想不出为什么 我发现另一个有这个问题,但是这个解决方案对我不起作用,而且比我认为需要的要冗长得多 pygame.init() screen=pygame.display.set_模式((500300)) #---主循环/事件循环--- 运行=真 playerstartposX=100 playerstartposY=100 playerwidth=50 演奏者身高

我正在尝试熟悉pygame,所以我从一个简单的程序开始,这个程序可以画一个矩形并用鼠标移动它。矩形画得很好,但是它不随鼠标位置移动,我想不出为什么

我发现另一个有这个问题,但是这个解决方案对我不起作用,而且比我认为需要的要冗长得多

pygame.init()
screen=pygame.display.set_模式((500300))
#---主循环/事件循环---
运行=真
playerstartposX=100
playerstartposY=100
playerwidth=50
演奏者身高=50
屏幕填充((30,30,30))
newrect=pygame.draw.rect(屏幕,(255,0,0),(playerstartposX,
球员们的姿态,
playerwidth,
演奏家
pygame.display.update()
运行时:
pygame.时间延迟(100)
对于pygame.event.get()中的事件:
如果event.type==pygame.QUIT:
运行=错误
elif event.type==4:#如果事件是鼠标运动
newrect.move(event.pos)#将矩形移动到鼠标位置
pygame.display.update()
pygame.quit()

首先,您需要检查的事件类型是
pygame.MOUSEMOTION
(我相信是1024?),您需要检查4


然后,您必须在主循环的每次迭代中重新绘制rect,以反映更新后的位置

4
不是事件类型。事件类型为
MOUSEMOTION
(请参阅)

创建一个对象:

newrect=pygame.Rect(playerstartposX、playerstartposY、playerwidth、playerheight)
事件发生时更改其位置:

如果event.type==pygame.MOUSEMOTION:
newrect.center=event.pos
在主应用程序循环中,您必须不断地

  • 处理事件
  • 清除显示器
  • 将场景分别绘制为矩形
  • 更新显示
如果要控制每秒帧数,则可以将参数传递给而不是pygame.time.delay的方法:

导入pygame
pygame.init()
screen=pygame.display.set_模式((500300))
clock=pygame.time.clock()
运行=真
playerstartposX=100
playerstartposY=100
playerwidth=50
演奏者身高=50
newrect=pygame.Rect(playerstartposX、playerstartposY、playerwidth、playerheight)
运行时:
时钟滴答(60)
#处理事件
对于pygame.event.get()中的事件:
如果event.type==pygame.QUIT:
运行=错误
如果event.type==pygame.MOUSEMOTION:
newrect.center=event.pos
#清除显示器
屏幕填充((30,30,30))
#画矩形
pygame.draw.rect(屏幕,(255,0,0),newrect)
#更新显示
pygame.display.update()
pygame.quit()

当我打印event.type时。当我移动鼠标时,输出总是4。我最初使用mousemotion,但在试图找出错误时对其进行了更改。值可能会在不同版本之间更改,最好使用常量(我使用2.0.0.dev4进行了检查)