gpt4 book ai didi

python - 我的 Sprite 无法向右移动 pygame

转载 作者:行者123 更新时间:2023-12-01 06:00:50 25 4
gpt4 key购买 nike

早些时候,我的 Sprite 根本不会移动,所以我发布了代码,并且大部分内容都已修复,但现在我的向上/向下箭头工作正常,但我的右键不起作用。 (另外,当您按下两个键,然后松开一个键时,行走动画不起作用,但我现在并不急于解决这个问题。)此外,我不想使用用户制作的类。提前致谢。这是代码:

from pygame.locals import *
import pygame._view

pygame.init()
clock = pygame.time.Clock()

height = 500
width = 500
screen = pygame.display.set_mode((width, height), 0, 32)
pygame.display.set_caption('placeholder text')

photo = 'grassbackground.png'
background = pygame.image.load(photo).convert()

rectexist = False

photo1 = 1

user = pygame.sprite.Sprite()

change = False

up = False
down = False
left = False
right = False

speed = 5

while True:
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
if event.type == KEYDOWN:
if event.key == K_UP:
up = True
change = True
if event.key == K_DOWN:
down = True
change = True
if event.key == K_LEFT:
left = True
change = True
if event.type == K_RIGHT:
right = True
change = True

if event.type == KEYUP:
if event.key == K_UP:
up = False
change = False
if event.key == K_DOWN:
down = False
change = False
if event.key == K_LEFT:
left = False
change = False
if event.key == K_RIGHT:
right = False
change = False

if down and user.rect.bottom < height:
user.rect.top += speed
if up and user.rect.top > 0:
user.rect.top -= speed
if left and user.rect.left > 0:
user.rect.left -= speed
if right and user.rect.right < width:
user.rect.right += speed

if change == True:
pygame.time.wait(110)
photo1 += 1

if change == False:
photo1 = 1

if photo1 == 1:
user.image = pygame.image.load("1.png").convert()
if rectexist == False:
user.rect = user.image.get_rect()
rectexist = True
screen.blit(user.image, user.rect)

if photo1 == 2:
user.image = pygame.image.load("2.png").convert()
screen.blit(user.image, user.rect)

if photo1 == 3:
user.image = pygame.image.load("3.png").convert()
screen.blit(user.image, user.rect)

if photo1 >= 4:
photo1 = 1

thesprites = pygame.sprite.RenderPlain((user))
thesprites.update()

screen.blit(background, (0, 0))
thesprites.draw(screen)

pygame.display.update()
clock.tick(60)

最佳答案

在你的代码中它说:

if event.type == K_RIGHT:

应该是:

if event.key == K_RIGHT:

要保持动画效果,您需要稍微更改代码,添加:

key_pressed = []

一开始。然后对于每个按键 block 执行以下操作:

key_pressed.append(event.key)

和按键释放:

key_pressed = [k for k in key_pressed if k != event.key]

分别代替 change=Truechange=False。然后在检查按下和释放内容的两段之后添加这些行:

if len(key_pressed) > 0:
change = True
else:
change = False

这应该可以解决您的大部分问题...

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

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