gpt4 book ai didi

python - pygame左右移动问题

转载 作者:太空宇宙 更新时间:2023-11-03 15:44:12 28 4
gpt4 key购买 nike

我已经开始在 pygame 上制作一些东西,但是在向左或向右移动时遇到了问题。如果我快速从按右箭头键改为按左箭头键,同时松开右箭头键,则 block 就会停止移动。这是我的代码

bg = "sky.jpg"
ms = "ms.png"
import pygame, sys
from pygame.locals import *
x,y = 0,0
movex,movey=0,0
pygame.init()
screen=pygame.display.set_mode((664,385),0,32)
background=pygame.image.load(bg).convert()
mouse_c=pygame.image.load(ms).convert_alpha()
m = 0
pygame.event.pump()
while 1:
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
if event.type==KEYDOWN:
if event.key==K_LEFT:
movex =-0.5
m = m + 1
if event.key==K_RIGHT:
movex=+0.5
m = m + 1
elif event.type == KEYUP:
if event.key==K_LEFT and not event.key==K_RIGHT:
movex = 0
if event.key==K_RIGHT and not event.key==K_LEFT:
movex =0

x+=movex
y=200
screen.blit(background, (0,0))
screen.blit(mouse_c,(x,y))
pygame.display.update()

有没有办法可以改变这个,这样如果按下右箭头键并释放左箭头键,它就会向右移动而不是停止?附言我仍在学习 pygame,对该模块非常陌生。如果这看起来是一个愚蠢的问题,我很抱歉,但我找不到任何答案。

最佳答案

你的问题是,当你测试 KEYDOWN 事件时

if event.key==K_LEFT and not event.key==K_RIGHT:

你总是得到True,因为当event.key==K_LEFT为True时,它也始终是not event.key==K_RIGHT(因为事件的键毕竟是K_LEFT)。

我解决这类问题的方法是分开来自行动的意图。所以,对于关键事件,我只是简单地跟踪什么行动应该会发生,像这样:

moveLeft = False
moveRight = False

while True:
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
if event.type == KEYDOWN:
if event.key == K_LEFT: moveLeft = True
if event.key == K_RIGHT: moveRight = True
elif event.type == KEYUP:
if event.key == K_LEFT: moveLeft = False
if event.key == K_RIGHT: moveRight = False

然后,在循环的“主要”部分,您可以根据输入采取行动,例如:

while True:
for event in pygame.event.get():
...
if moveLeft : x -= 0.5
if moveRight : x += 0.5

关于python - pygame左右移动问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41910100/

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