Нужна помощь с функцией blit

#python #pygame

#python #pygame

Вопрос:

Я создаю новую игру в pygame, и функция blit просто не работает для меня, это должно быть просто, но я просто не знаю, что не так.

 import pygame
import sys
pygame.init()
clock = pygame.time.Clock()
game = True
WIDTH = 160
HEIGHT = 144
screen = pygame.display.set_mode((WIDTH, HEIGHT), pygame.FULLSCREEN)
level = pygame.image.load('RBYG/Level.png')
def redrawGameWindow():
    screen.blit(level, (0, 0))
    
while game:
    screen.blit(level,(0, 0))
    for event in pygame.event.get():
        print(event)
        if event.type == pygame.QUIT:
            sys.exit()
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_ESCAPE:
                sys.exit()
    redrawGameWindow()
    clock.tick(60)
  

Ответ №1:

Вы что-то упускаете pygame.display.flip() , вы должны сделать это после выполнения blit, иначе ничего не произойдет. Ваша redrawGameWindow() функция должна перевернуть дисплей. Кроме того, вы вызываете screen.blit(level, (0, 0)) дважды в своем основном цикле, что может оказаться ненужным; попробуйте просто сохранить один из них (просто убедитесь flip() , что после).

Комментарии:

1. Также не забудьте передать методу screen var redrawGameWindow — никогда не используйте неявные глобальные переменные (если это должно быть global, используйте ключевое слово global)

2. И если он должен быть глобальным, все равно не делайте его глобальным, а вместо этого создайте класс Game, который содержит соответствующие атрибуты ( self.screen например).