Python 要在pygame中移动图像,请多次按此键

Python 要在pygame中移动图像,请多次按此键,python,pygame,key,repeat,keyboard-events,Python,Pygame,Key,Repeat,Keyboard Events,当我在pygame中学习如何移动图像时,当我按住一个键(任意一个:上、下、左、右)来移动我的图像(赛车)时,图像只移动了一次,即使按住键本应使图像在特定方向连续移动,但它只移动了一个单位。我发现的修正是,用于更改原始位置(x_vary和y_vary,原始位置:x和y)的变量声明没有添加到我游戏的主while循环中 我的问题是为什么?为什么我声明x_变化和y_变化会有区别 以下是未固定的代码: 导入pygame pygame.init() clock=pygame.time.clock() gam

当我在pygame中学习如何移动图像时,当我按住一个键(任意一个:上、下、左、右)来移动我的图像(赛车)时,图像只移动了一次,即使按住键本应使图像在特定方向连续移动,但它只移动了一个单位。我发现的修正是,用于更改原始位置(x_vary和y_vary,原始位置:x和y)的变量声明没有添加到我游戏的主while循环中

我的问题是为什么?为什么我声明x_变化和y_变化会有区别

以下是未固定的代码:

导入pygame
pygame.init()
clock=pygame.time.clock()
game_window=pygame.display.set_模式((800600))
game_icon=pygame.image.load('icon2.jpg'))
game\u caption=pygame.display.set\u caption(‘赛车游戏’)
x=800*0.45
y=600*0.08
racecar=pygame.image.load('racecar.png')
def汽车(x,y):
游戏窗口(赛车,(x,y))
游戏运行=错误
当game_run==False时:
x_=0
y_vary=0
对于pygame.event.get()中的事件:
如果event.type==pygame.QUIT:
游戏运行=正确
如果event.type==pygame.KEYDOWN:
如果event.key==pygame.K_左:
x_vary=-10
elif event.key==pygame.K_RIGHT:
x_vary=+10
elif event.key==pygame.K_UP:
y_vary=-10
elif event.key==pygame.K_向下:
y_vary=+10
如果event.type==pygame.KEYUP:
如果event.key==pygame.K_LEFT或event.key==pygame.K_RIGHT或event.key==pygame.K_UP或event.key==pygame.K_DOWN:
x_=0
y_vary=0
x+=x_变化
y+=y_变化
游戏窗口填充((128,0,0))
汽车(x,y)
pygame.display.update()
时钟滴答(60)
pygame.quit()
退出
键盘事件(
pygame.KEYDOWN
pygame.keydup
)仅在按下一个键时发生一次

如果在主应用程序循环中声明了
x_vary=0
y_vary=0
,则在按下按钮时设置它们,但在下一帧中立即重新初始化(0)。你必须再次按下按钮来设置它们

如果在主应用程序循环之前声明了
x_vary=0
y_vary=0
,则它们保留在按下按钮时设置的值。如果释放一个按钮,则两者都设置为0

使用,评估按键是否处于按下状态
pygame.key.get_pressed()
获取所有键盘按钮的状态,只要按下键盘,键的状态就是
True
。e、 g:

game\u run=False
当game_run==False时:
对于pygame.event.get()中的事件:
如果event.type==pygame.QUIT:
游戏运行=正确
keys=pygame.key.get_pressed()
x_vary,y_vary=0,0
如果键[pygame.K_左]:
x_vary=-10
如果键[pygame.K_RIGHT]:
x_vary=+10
如果键[pygame.K_UP]:
y_vary=-10
如果键[pygame.K_DOWN]:
y_vary=+10
x+=x_变化
y+=y_变化
游戏窗口填充((128,0,0))
汽车(x,y)
pygame.display.update()
时钟滴答(60)
键盘事件(
pygame.KEYDOWN
pygame.keydup
)仅在按下一个键时发生一次

如果在主应用程序循环中声明了
x_vary=0
y_vary=0
,则在按下按钮时设置它们,但在下一帧中立即重新初始化(0)。你必须再次按下按钮来设置它们

如果在主应用程序循环之前声明了
x_vary=0
y_vary=0
,则它们保留在按下按钮时设置的值。如果释放一个按钮,则两者都设置为0

使用,评估按键是否处于按下状态
pygame.key.get_pressed()
获取所有键盘按钮的状态,只要按下键盘,键的状态就是
True
。e、 g:

game\u run=False
当game_run==False时:
对于pygame.event.get()中的事件:
如果event.type==pygame.QUIT:
游戏运行=正确
keys=pygame.key.get_pressed()
x_vary,y_vary=0,0
如果键[pygame.K_左]:
x_vary=-10
如果键[pygame.K_RIGHT]:
x_vary=+10
如果键[pygame.K_UP]:
y_vary=-10
如果键[pygame.K_DOWN]:
y_vary=+10
x+=x_变化
y+=y_变化
游戏窗口填充((128,0,0))
汽车(x,y)
pygame.display.update()
时钟滴答(60)