在 pygame 模块中,按右键,只会加载列表中的第一个精灵

问题描述

在pygame模块中,按右键,只加载列表中的第一个精灵

WR=[pygame.image.load('R2.png'),pygame.image.load('R3.png'),pygame.image.load('R4.png'),pygame.image.load('R5.png'),pygame.image.load('R6.png'),pygame.image.load('R2.png')]
char=pygame.image.load('char.png')

def redrawGameWindow():
    global wc
        
    screen.blit(BG,(0,0))
    if wc+1>=27:
        wc=0
                       
    if right:
        screen.blit(WR[wc//3],(x,y))
        
    else:
        screen.blit(char,y))

解决方法

您忘记增加 wc

wc += 1

然而,WR 是一个包含 6 个元素(Surfaces)的列表,但最大订阅索引为 9(27/3 == 9)。这将导致“IndexError: list index out of range” 错误。
确保索引在列表的范围内。使用len()获取列表长度并在订阅索引超过列表长度时重启动画(wc = 0):

def redrawGameWindow():
    global wc
        
    wc += 1
    if wc // 3 >= len(WR):
        wc = 0
       
    screen.blit(BG,(0,0))                   
    if right:
        screen.blit(WR[wc // 3 ],(x,y))  
    else:
        screen.blit(char,y))