gpt4 book ai didi

python - Pygame 中的平滑键盘移动

转载 作者:太空狗 更新时间:2023-10-29 22:19:45 25 4
gpt4 key购买 nike

我使用这段代码让玩家 Sprite 在按下箭头键时在屏幕上移动:

import pygame, sys, time
from pygame.locals import *

pygame.init()

FPS=30
fpsClock=pygame.time.Clock()

width=400
height=300
DISPLAYSURF=pygame.display.set_mode((width,height),0,32)
pygame.display.set_caption('Animation')
background=pygame.image.load('bg.png')


UP='up'
LEFT='left'
RIGHT='right'
DOWN='down'

sprite=pygame.image.load('down.png')
spritex=200
spritey=130
direction=DOWN


pygame.mixer.music.load('bgm.mp3')
pygame.mixer.music.play(-1, 0.0)
while True:
DISPLAYSURF.blit(background,(0,0))

DISPLAYSURF.blit(sprite,(spritex,spritey))

for event in pygame.event.get():
if event.type==QUIT:
pygame.quit()
sys.exit()

if event.type == KEYDOWN:
if (event.key == K_LEFT):
spritex-=5
sprite=pygame.image.load('left.png')
elif (event.key == K_RIGHT):
spritex+=5
sprite=pygame.image.load('right.png')
elif (event.key == K_UP):
spritey-=5
sprite=pygame.image.load('up.png')
elif (event.key == K_DOWN):
spritey+=5
sprite=pygame.image.load('down.png')

pygame.display.update()
fpsClock.tick(FPS)

图像可以实际移动,但按下键时只能移动 5 个像素。我希望图像在按住键时继续移动(并添加与窗口的基本碰撞检测,但这是一个不同的问题)。是什么让图像在按下按键时保持移动?

最佳答案

我建议使用变量来跟踪哪些箭头键被按下,哪些没有。您可以使用 KEYDOWNKEYUP 事件来更新变量。然后你可以根据按下的键调整每帧 Sprite 的位置。这也意味着您可以通过更改每帧移动的距离来轻松设置 Sprite 在不同方向上的速度。

编辑:

或者按照@monkey 的建议,您可以使用key.get_pressed()相反。

这是一个未经测试的例子:

while True:
DISPLAYSURF.blit(background,(0,0))

DISPLAYSURF.blit(sprite,(spritex,spritey))

for event in pygame.event.get():
if event.type==QUIT:
pygame.quit()
sys.exit()

if event.type == KEYDOWN:
if (event.key == pygame.K_LEFT):
sprite=pygame.image.load('left.png')
elif (event.key == pygame.K_RIGHT):
sprite=pygame.image.load('right.png')
elif (event.key == pygame.K_UP):
sprite=pygame.image.load('up.png')
elif (event.key == pygame.K_DOWN):
sprite=pygame.image.load('down.png')

keys_pressed = pygame.key.get_pressed()

if keys_pressed[pygame.K_LEFT]:
spritex -= 5

if keys_pressed[pygame.K_RIGHT]:
spritex += 5

if keys_pressed[pygame.K_UP]:
spritey -= 5

if keys_pressed[pygame.K_DOWN]:
spritey += 5

pygame.display.update()
fpsClock.tick(FPS)

关于python - Pygame 中的平滑键盘移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14087609/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com