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