#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
varredrawGameWindow
— никогда не используйте неявные глобальные переменные (если это должно быть global, используйте ключевое слово global)2. И если он должен быть глобальным, все равно не делайте его глобальным, а вместо этого создайте класс Game, который содержит соответствующие атрибуты (
self.screen
например).