如何让这个sprite类与我的主循环一起工作(Pygame)

时间:2012-01-11 12:26:10

标签: python sprite pygame

我无法获取我的sprite Ball类来获取KEYDOWN / KEYUP事件的值以从主循环中的“else”语句更新自身。这是主循环和球类的代码:

class Ball():
    def  __init__(self):
        global ball
        ball = pygame.sprite.Sprite()
        ball.image = pygame.image.load('red_ball.png').convert()
        ball.rect = ball.image.get_rect()
        ball.image.set_colorkey((white))

    def event_handle(self, event):
        x,y = 285, 430
        m_x, m_y = 0,0
        if event.type == KEYDOWN:
            if event.key == K_a:
                    m_x = -4
            elif event.key == K_d:
                    m_x = +4
            if event.type == KEYUP:
                if event.key == K_a:
                        m_x = 0
                elif event.key == K_d:
                        m_x = 0

        x+= m_x
        y+= m_y
        if x > 640:
            x = 0
        if x < 0:
            x = 640
    def update(self):
        screen.blit(ball.image,(x,y))
        pygame.display.update()

def main():
    m_x, m_y = 0,0
    while True:
        ball = Ball()
        screen.blit(background, (0,0))
        for event in pygame.event.get():
            if event.type == QUIT:
                pygame.quit()
                sys.exit()
            else:
                ball.event_handle(event)
        ball.update()
        pygame.display.update()

2 个答案:

答案 0 :(得分:1)

我没有读到lign 1 ...那个球应该继承自sprite.Sprite

正如我在其他地方所说,你应该阅读一些教程。我没有时间找到一个关于精灵的好的,但如果我发现它一次,你也应该能够找到它。祝你好运!

答案 1 :(得分:0)

问题是你有这个:

if key down: 
    if k=a:
         do stuff
    if k=s:
         do stuff
     ***if k up:
          do stuff***

如果k键在if键之外,你需要移动。现在你说的是,如果密钥已启动,并且密钥已关闭,那么当密钥关闭时,请执行您想要的操作。