Python Pygame中的箭头键移动

Python Pygame中的箭头键移动,python,pygame,Python,Pygame,我从pygame开始,似乎不知道如何实现连续运动。这是我当前的代码: import pygame pygame.init() window = pygame.display.set_mode(((500, 500))) pygame.display.set_caption(("First Game")) x = 50 y = 50 width = 40 height = 60 vel = 10 run = True while run: pygame.time.

我从pygame开始,似乎不知道如何实现连续运动。这是我当前的代码:

import pygame

pygame.init()
window = pygame.display.set_mode(((500, 500)))
pygame.display.set_caption(("First Game"))

x = 50
y = 50
width = 40
height = 60
vel = 10

run = True
while run:
    pygame.time.delay(100)
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False

    keys = pygame.key.get_pressed()
    if keys[pygame.K_LEFT]:
        x -= vel
    if keys[pygame.K_RIGHT]:
        x += vel
    if keys[pygame.K_UP]:
        y -= vel
    if keys[pygame.K_DOWN]:
        y += vel

    window.fill((0, 0, 0))
    pygame.draw.rect(window, (200, 23, 255), (350, 350, width, height))
    pygame.display.update()
   
pygame.quit()

由于我刚刚开始,我想不出任何可能的解决办法。如果你能解决我的这个问题,你会很好的。我知道会有一些非常愚蠢的错误。

x
y
坐标处绘制矩形作为原点。

你需要绘制矩形
x
y
,而不是常量
350350

pygame.draw.rect(窗口,(200,23255),(350350,宽度,高度))

pygame.draw.rect(窗口,(200,23255),(x,y,宽度,高度))

要实现平稳移动,您需要将
vel
设置为1,并减少应用程序循环中的延迟。
用于控制每秒帧数,从而控制游戏速度

对象的方法以这种方式延迟游戏,循环的每次迭代都消耗相同的时间段。见:

导入pygame
pygame.init()
window=pygame.display.set_模式(((500500)))
pygame.display.set_标题((“第一场游戏”))
x、 y=50,50
宽度,高度=40,60
水平=1
clock=pygame.time.clock()
运行=真
运行时:
时钟滴答(100)
对于pygame.event.get()中的事件:
如果event.type==pygame.QUIT:
运行=错误
keys=pygame.key.get_pressed()
如果键[pygame.K_左]:
x-=水平
如果键[pygame.K_RIGHT]:
x+=vel
如果键[pygame.K_UP]:
y-=水平
如果键[pygame.K_DOWN]:
y+=水平
窗口填充((0,0,0))
pygame.draw.rect(窗口,(200,23255),(x,y,宽度,高度))
pygame.display.update()
pygame.quit()

这并不是他真正想要的,他想要的是持续的运动。在答错之前,试着再读一遍这个问题。@ƒkS124如果玩家被画在x,y上,这将是一个连续的移动。虽然他想问一种方法来按下键并获得流体运动,但显然我理解错了,我很抱歉。@ƒkS124“认为他想问一种方法来按下键并获得流体运动,[…]“-是的,他做了。但是,
pygame.key.get_pressed()
做了他想做的事。谢谢,这很管用,但是有没有办法让动作更流畅呢laggy@AnayGarodia更改
vel=10
pygame.time.delay(100)
或使用
pygame.time.Clock
。请参阅@AnayGarodia我扩展了答案。