Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我的精灵在游戏中不会向右移动_Python_Pygame_Sprite - Fatal编程技术网

Python 我的精灵在游戏中不会向右移动

Python 我的精灵在游戏中不会向右移动,python,pygame,sprite,Python,Pygame,Sprite,早些时候,我的精灵根本不会移动,所以我发布了代码,大部分时间都得到了修复,但现在我的上/下箭头工作正常,但我的右键不工作。(还有,当你按下两个键,然后放开其中一个键时,行走动画不起作用,但我现在并不急于去修复它。)此外,我更愿意不使用用户创建的类。提前谢谢。 代码如下: from pygame.locals import * import pygame._view pygame.init() clock = pygame.time.Clock() height = 500 width = 5

早些时候,我的精灵根本不会移动,所以我发布了代码,大部分时间都得到了修复,但现在我的上/下箭头工作正常,但我的右键不工作。(还有,当你按下两个键,然后放开其中一个键时,行走动画不起作用,但我现在并不急于去修复它。)此外,我更愿意不使用用户创建的类。提前谢谢。 代码如下:

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)
从pygame.locals导入*
导入pygame.\u视图
pygame.init()
clock=pygame.time.clock()
高度=500
宽度=500
screen=pygame.display.set_模式((宽度、高度),0,32)
pygame.display.set_标题('占位符文本')
照片='grassbackground.png'
background=pygame.image.load(photo.convert())
rectexist=False
照片1=1
user=pygame.sprite.sprite()
更改=错误
向上=错误
向下=错误
左=假
右=假
速度=5
尽管如此:
对于pygame.event.get()中的事件:
如果event.type==退出:
pygame.quit()
sys.exit()
如果event.type==KEYDOWN:
如果event.key==K_UP:
向上=正确
更改=正确
如果event.key==K_DOWN:
向下=真
更改=正确
如果event.key==K_LEFT:
左=真
更改=正确
如果event.type==K_RIGHT:
右=真
更改=正确
如果event.type==KEYUP:
如果event.key==K_UP:
向上=错误
更改=错误
如果event.key==K_DOWN:
向下=错误
更改=错误
如果event.key==K_LEFT:
左=假
更改=错误
如果event.key==K_RIGHT:
右=假
更改=错误
如果向下且user.rect.bottom<高度:
user.rect.top+=速度
如果向上和user.rect.top>0:
user.rect.top-=速度
如果左侧和user.rect.left>0:
user.rect.left-=速度
如果right和user.rect.right<宽度:
user.rect.right+=速度
如果change==True:
pygame.time.wait(110)
光电1+=1
如果change==False:
照片1=1
如果photo1==1:
user.image=pygame.image.load(“1.png”).convert()
如果rectexist==False:
user.rect=user.image.get_rect()
rectexist=True
screen.blit(user.image,user.rect)
如果1==2:
user.image=pygame.image.load(“2.png”).convert()
screen.blit(user.image,user.rect)
如果1==3:
user.image=pygame.image.load(“3.png”).convert()
screen.blit(user.image,user.rect)
如果photo1>=4:
照片1=1
thesprites=pygame.sprite.RenderPlain((用户))
thesprites.update()
屏幕光点(背景,(0,0))
绘制(屏幕)
pygame.display.update()
时钟滴答(60)
在您的代码中,它表示:

if event.type == K_RIGHT:
应该是:

if event.key == K_RIGHT:
若要继续设置动画,您需要再稍微更改代码,请添加:

key_pressed = []
一开始。然后针对每个按键块执行以下操作:

key_pressed.append(event.key)
和密钥释放操作:

key_pressed = [k for k in key_pressed if k != event.key]
而不是分别使用
change=True
change=False
。然后,在检查按下和释放的两段内容后,添加以下行:

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

这将解决您的大多数问题…

使用
pressed=pygame.key.get_pressed()
获取当前按下的所有键的字典(实际上是一个元组,但按照结构方式,您可以将其视为字典)。您可以这样使用它:

pressed = pygame.key.get_pressed()
if pressed[K_LEFT]:
    # move left
elif pressed[K_RIGHT]:
    # move right
# etc