简体   繁体   中英

After my image blits in pygame, it falls and I don't know why

I got my images loaded and everything, but now when I call it, it's too big and I can't change the size and it won't stay where I called it and I can't see where I went wrong and why it keeps falling...the image blits and it shows up, but in the wrong place and it just fall, I can move the cat and all, but it's falling and it shouldn't. It's kind of like objects in a game that fall from the top of the screen and then they reload at the top, but then it doesn't reload. The cat needs to blit and be on the ground, but it's not.

import pygame
import os
import sys
from pygame.locals import*

pygame.init()

W = 800
H = 447
win = pygame.display.set_mode((W,H))
pygame.display.set_caption('A journey')

bg = pygame.image.load(os.path.join('D:/Python/Buttons/Programs/Pygame/game/background.png')).convert()

walkRight = [pygame.image.load(os.path.join('D:/Python/Buttons/Programs/Pygame/game/R1.png')),
             pygame.image.load(os.path.join('D:/Python/Buttons/Programs/Pygame/game/R2.png')),
             pygame.image.load(os.path.join('D:/Python/Buttons/Programs/Pygame/game/R3.png')),
             pygame.image.load(os.path.join('D:/Python/Buttons/Programs/Pygame/game/R4.png')),
             pygame.image.load(os.path.join('D:/Python/Buttons/Programs/Pygame/game/R5.png')),
             pygame.image.load(os.path.join('D:/Python/Buttons/Programs/Pygame/game/R6.png')),
             pygame.image.load(os.path.join('D:/Python/Buttons/Programs/Pygame/game/R7.png')),
             pygame.image.load(os.path.join('D:/Python/Buttons/Programs/Pygame/game/R8.png')),
             pygame.image.load(os.path.join('D:/Python/Buttons/Programs/Pygame/game/R9.png')),
             pygame.image.load(os.path.join('D:/Python/Buttons/Programs/Pygame/game/R10.png')),
             pygame.image.load(os.path.join('D:/Python/Buttons/Programs/Pygame/game/R11.png')),
             pygame.image.load(os.path.join('D:/Python/Buttons/Programs/Pygame/game/R12.png'))]

walkLeft = [pygame.image.load(os.path.join('D:/Python/Buttons/Programs/Pygame/game/L1.png')),
             pygame.image.load(os.path.join('D:/Python/Buttons/Programs/Pygame/game/L2.png')),
             pygame.image.load(os.path.join('D:/Python/Buttons/Programs/Pygame/game/L3.png')),
             pygame.image.load(os.path.join('D:/Python/Buttons/Programs/Pygame/game/L4.png')),
             pygame.image.load(os.path.join('D:/Python/Buttons/Programs/Pygame/game/L5.png')),
             pygame.image.load(os.path.join('D:/Python/Buttons/Programs/Pygame/game/L6.png')),
             pygame.image.load(os.path.join('D:/Python/Buttons/Programs/Pygame/game/L7.png')),
             pygame.image.load(os.path.join('D:/Python/Buttons/Programs/Pygame/game/L8.png')),
             pygame.image.load(os.path.join('D:/Python/Buttons/Programs/Pygame/game/L9.png')),
             pygame.image.load(os.path.join('D:/Python/Buttons/Programs/Pygame/game/L10.png')),
             pygame.image.load(os.path.join('D:/Python/Buttons/Programs/Pygame/game/L11.png')),
             pygame.image.load(os.path.join('D:/Python/Buttons/Programs/Pygame/game/L12.png'))]

runRight =[pygame.image.load(os.path.join('D:/Python/Buttons/Programs/Pygame/game/RR1.png')),
             pygame.image.load(os.path.join('D:/Python/Buttons/Programs/Pygame/game/RR2.png')),
             pygame.image.load(os.path.join('D:/Python/Buttons/Programs/Pygame/game/RR3.png')),
             pygame.image.load(os.path.join('D:/Python/Buttons/Programs/Pygame/game/RR4.png')),
             pygame.image.load(os.path.join('D:/Python/Buttons/Programs/Pygame/game/RR5.png')),
             pygame.image.load(os.path.join('D:/Python/Buttons/Programs/Pygame/game/RR6.png')),
             pygame.image.load(os.path.join('D:/Python/Buttons/Programs/Pygame/game/RR7.png')),
             pygame.image.load(os.path.join('D:/Python/Buttons/Programs/Pygame/game/RR8.png')),
             pygame.image.load(os.path.join('D:/Python/Buttons/Programs/Pygame/game/RR9.png')),
             pygame.image.load(os.path.join('D:/Python/Buttons/Programs/Pygame/game/RR10.png')),
             pygame.image.load(os.path.join('D:/Python/Buttons/Programs/Pygame/game/RR11.png')),
             pygame.image.load(os.path.join('D:/Python/Buttons/Programs/Pygame/game/RR12.png')),
             pygame.image.load(os.path.join('D:/Python/Buttons/Programs/Pygame/game/RR13.png'))]

runLeft = [pygame.image.load(os.path.join('D:/Python/Buttons/Programs/Pygame/game/LR1.png')),
             pygame.image.load(os.path.join('D:/Python/Buttons/Programs/Pygame/game/LR2.png')),
             pygame.image.load(os.path.join('D:/Python/Buttons/Programs/Pygame/game/LR3.png')),
             pygame.image.load(os.path.join('D:/Python/Buttons/Programs/Pygame/game/LR4.png')),
             pygame.image.load(os.path.join('D:/Python/Buttons/Programs/Pygame/game/LR5.png')),
             pygame.image.load(os.path.join('D:/Python/Buttons/Programs/Pygame/game/LR6.png')),
             pygame.image.load(os.path.join('D:/Python/Buttons/Programs/Pygame/game/LR7.png')),
             pygame.image.load(os.path.join('D:/Python/Buttons/Programs/Pygame/game/LR8.png')),
             pygame.image.load(os.path.join('D:/Python/Buttons/Programs/Pygame/game/LR9.png')),
             pygame.image.load(os.path.join('D:/Python/Buttons/Programs/Pygame/game/LR10.png')),
             pygame.image.load(os.path.join('D:/Python/Buttons/Programs/Pygame/game/LR11.png')),
             pygame.image.load(os.path.join('D:/Python/Buttons/Programs/Pygame/game/LR12.png')),
             pygame.image.load(os.path.join('D:/Python/Buttons/Programs/Pygame/game/LR13.png'))]

jumpRight = [pygame.image.load(os.path.join('D:/Python/Buttons/Programs/Pygame/game/LJ1.png')),
             pygame.image.load(os.path.join('D:/Python/Buttons/Programs/Pygame/game/LJ2.png')),
             pygame.image.load(os.path.join('D:/Python/Buttons/Programs/Pygame/game/LJ3.png')),
             pygame.image.load(os.path.join('D:/Python/Buttons/Programs/Pygame/game/LJ4.png')),
             pygame.image.load(os.path.join('D:/Python/Buttons/Programs/Pygame/game/LJ5.png')),
             pygame.image.load(os.path.join('D:/Python/Buttons/Programs/Pygame/game/LJ6.png')),
             pygame.image.load(os.path.join('D:/Python/Buttons/Programs/Pygame/game/LJ7.png')),
             pygame.image.load(os.path.join('D:/Python/Buttons/Programs/Pygame/game/LJ8.png')),
             pygame.image.load(os.path.join('D:/Python/Buttons/Programs/Pygame/game/LJ9.png')),
             pygame.image.load(os.path.join('D:/Python/Buttons/Programs/Pygame/game/LJ10.png')),
             pygame.image.load(os.path.join('D:/Python/Buttons/Programs/Pygame/game/LJ11.png')),
             pygame.image.load(os.path.join('D:/Python/Buttons/Programs/Pygame/game/LJ12.png'))]

jumpLeft = [pygame.image.load(os.path.join('D:/Python/Buttons/Programs/Pygame/game/RJ1.png')),
             pygame.image.load(os.path.join('D:/Python/Buttons/Programs/Pygame/game/RJ2.png')),
             pygame.image.load(os.path.join('D:/Python/Buttons/Programs/Pygame/game/RJ3.png')),
             pygame.image.load(os.path.join('D:/Python/Buttons/Programs/Pygame/game/RJ4.png')),
             pygame.image.load(os.path.join('D:/Python/Buttons/Programs/Pygame/game/RJ5.png')),
             pygame.image.load(os.path.join('D:/Python/Buttons/Programs/Pygame/game/RJ6.png')),
             pygame.image.load(os.path.join('D:/Python/Buttons/Programs/Pygame/game/RJ7.png')),
             pygame.image.load(os.path.join('D:/Python/Buttons/Programs/Pygame/game/RJ8.png')),
             pygame.image.load(os.path.join('D:/Python/Buttons/Programs/Pygame/game/RJ9.png')),
             pygame.image.load(os.path.join('D:/Python/Buttons/Programs/Pygame/game/RJ10.png')),
             pygame.image.load(os.path.join('D:/Python/Buttons/Programs/Pygame/game/RJ11.png')),
             pygame.image.load(os.path.join('D:/Python/Buttons/Programs/Pygame/game/RJ12.png'))]

sit = pygame.image.load(os.path.join('D:/Python/Buttons/Programs/Pygame/game/LS6.png'))

clock = pygame.time.Clock()

x = 50
y = 150
width = 94
height = 3.9
vel = 5
isJump = False
jumpCount = 10
left = False
right = False
walkCount = 0


def redrawWindow():
    global walkCount
    win.blit(bg, (0,0))

    if walkCount + 1 >= 27:
        walkCount = 0
    if left:
        win.blit(walkLeft[walkCount//3], (x, y))
        walkCount += 1
    elif right:
        win.blit(walkRight[walkCount//3], (x, y))
        walkCount += 1
    else:
        win.blit(sit, (x, y))

    pygame.display.flip()
    pygame.display.update()


# main loop
run = True
while run:
    clock.tick(27)

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

    keys = pygame.key.get_pressed()

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

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

    redrawWindow()

pygame.quit()

The code looks to be processing the code for "jump" without having actually received the event for it. Read through the event loop:

while run:
    clock.tick(27)

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

    keys = pygame.key.get_pressed()

    if keys[pygame.K_LEFT] and x > vel:
       # do left
    elif keys[pygame.K_RIGHT] and x < W - width - vel:
        #do right
    else:
        # neither left nor right

    if not(isJump):
        y += vel                      # <--- THIS PART
        if keys[pygame.K_SPACE]:
            # start a new jump

If the jump is not in progress, y is increased by vel (5) every frame.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM