Как заставить этот класс спрайта работать с моим основным циклом (Pygame) - PullRequest
0 голосов
/ 11 января 2012

Я не могу заставить свой класс 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 ]

1 голос
/ 12 января 2012

Я не читал дальше, чем lign 1 ... Этот шар должен унаследовать от sprite.Sprite

, как я уже говорил где-то еще, вы должны прочитать некоторые уроки.У меня нет времени, чтобы найти хорошую информацию о спрайтах, но если я найду ее однажды, вы тоже сможете ее найти.Удачи!

0 голосов
/ 07 декабря 2012

Проблема в том, что у вас есть это:

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

Вам нужно переместиться, если k вверх, вне клавиши if вниз.Прямо сейчас вы говорите, что если клавиша нажата, а она нажата, то делайте то, что хотите, когда клавиша нажата.

...