Задать вопрос
@mcmikey

Почему вместо изображений черный экран в pygame?

Я написал код для управления спрайтом машинки на фоне города по гайду с ютуба. Но при запуске показывает черный экран. В комментариях советовали прописать drawWindow() в конце, но это тоже не помогло
Вот код -
import pygame
pygame.init()

win = pygame.display.set_mode((500, 500))
pygame.display.set_caption("Adventure")

walkRight = [pygame.image.load('car_right_1.png'), pygame.image.load('car_right_2.png')]
walkLeft = [pygame.image.load('car_left_1.png'), pygame.image.load('car_left_2.png')]
playerStand = [pygame.image.load('car_.png')]
bg = pygame.image.load('bg.jpg')

clock = pygame.time.Clock()

x = 50 
y = 450
width = 91
height = 67
speed = 5

isJump = False
JumpCount = 10

animCount = 0
left = False
right = False

def drawWindow():
    global animCount

    win.blit(bg,(0, 0))
    if animCount + 1 >= 30:
        animCount = 0

    if left:
        win.blit(walkLeft[animCount // 5], (x,y))
        animCount += 1
    elif right:
        win.blit(walkRight[animCount // 5], (x,y))
        animCount += 1
    else:
        win.blit(playerStand[animCount // 5], (x,y))
        animCount = 0

    pygame.display.update()

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()
    if keys[pygame.K_LEFT] and x > 5:
        x -= speed
        left = True
        right = False
    elif keys[pygame.K_RIGHT] and x < 500 - width - 5:
        x += speed
        left = False
        right = True
    else:
        left = False
        right = False
        animCount = 0
    if not(isJump):
        if keys[pygame.K_SPACE]:
            isJump = True
            left = False
            right = False
            animCount = 0
    else:
        if JumpCount >= -10:
            if JumpCount < 0:
                y += (JumpCount ** 2) / 2
            else:    
                y -= (JumpCount ** 2) / 2
            JumpCount -= 1
        else:
            isJump = False
            JumpCount = 10

drawWindow()
  • Вопрос задан
  • 596 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 2
@o5a
Отрисовка drawWindow() должна происходить внутри основного цикла игры (т.е. поправьте отступ).
Ответ написан
o5a, написал правильно! Но ваш код не рабочий!
Везде ошибки! Нужно учить что один кусочек означает, и учится писать его в разних формах, а не коди скачивать!
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы