Я не могу понять эту клавишу пробела и анимацию атаки - PullRequest
0 голосов
/ 18 ноября 2018

Я решил добавить образы атаки в ходячие, чтобы посмотреть, что произошло, и заставил их загрузить.

Я пытался разбить его и собрать воедино, чтобы попытаться выяснить, что я делаю неправильно, и это может быть проблемой моего опыта.

Я уничтожил свой код, пытаясь выяснить это после того, как кто-то дал мне объяснение о моих уроках. Я подумал, что, может быть, мне следует попытаться настроить его как глобальный, а потом я понимаю, что что-то не так. Я не хочу, чтобы кто-то просто написал код для меня, я должен упомянуть. Но объяснение того, почему я облажался, было бы неплохо.

Некоторые уроки помогают мне, но не так сильно, как когда кто-то говорит мне, где конкретно, где я ошибся. Я думаю, что я добился большего прогресса там.

##a simple punch without the whole animation atm
class attacks(object):                  
    attack = pygame.image.load("atk3.png")
    def __init__(self, x, y, width, height, attack):
        self.x = x
        self.y = y
        self.width = width
        self.height = height
        self.attackCount = 0


    def draw(self, win):
        ## is it my redraw method?
        if (self.attack):
            if self.attackCount + 1 >= 9:
                win.blit(attack, self.attackCount//3(self.x, self.y))
                self.attackCount += 1

Так что с классом, настроенным здесь, я уверен, что что-то не так, я изучал форумы, и я знаю, что что-то не так. Я не знаю что, хотя.

def redrawGameWindow():
    global walkCount
    global attackCount
    win.blit(bg, (0, 0))
    if walkCount +1 >= 27:
        walkCount = 0

    bob.draw(win)
    jerk.draw(win)
    for attack in attacks:
        attack.draw(win)



    pygame.display.update()


    #While true
    #This calls the classes created
    bob = player(100, 200, 128, 128)
    jerk = enemy(500, 200, 164, 100, 600)
    attacks = []
    run = True
    while run:
        clock.tick(30)

        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                run = False


        keys = pygame.key.get_pressed()
        #attempting to make this into a bool that changes the value
        if  not(bob.attacking):
            if keys[pygame.K_SPACE]:
                bob.attacking = True

                bob.standing = False
                bob.left = False
                bob.right = False

        if keys[pygame.K_LEFT] and bob.x > bob.vel:
            bob.x -= bob.vel
            bob.left = True
            bob.right = False
            bob.standing = False
        elif keys[pygame.K_RIGHT] and bob.x < 800 - bob.width - bob.vel:
            bob.x += bob.vel
            bob.right = True
            bob.left = False
            bob.standing = False
        else:
            bob.standing = True
            bob.walkCount = 0

        if not(bob.isJump):
            if keys[pygame.K_UP]:
                bob.isJump = True
                bob.right = False
                bob.left = False
                bob.walkCount = 0
        else:
            if bob.jumpCount >= -10:
                neg = 1
                if bob.jumpCount < 0:
                    neg = -1
                bob.y -= (bob.jumpCount ** 2) * 0.5 * neg
                bob.jumpCount -= 1
            else:
                bob.isJump = False
                bob.jumpCount = 10

        redrawGameWindow()

    pygame.quit()

Я почти уверен, что мой цикл True не имеет к этому никакого отношения, так как я могу бегать и прыгать. И когда я нажимаю пробел, он загружает кадр, который не является атакующим, поэтому я точно знаю, что что-то происходит, когда я нажимаю пробел

...