Замостить фон
Часть раздела Спрайты и изображения путешествия по Pygame на Coddy. Урок 4 из 36.
Однотонный цвет делает небо скучным. assets/backgrounds/sky.png — это изображение размером 72 на 72 пикселя, созданное для повторения: поставьте копии рядом, и края соединятся без шва. Покрытие окна копиями одного небольшого изображения называется замощением.
Два цикла задают каждый верхний левый угол, проходя по одной строке сетки за раз:
for x in range(0, 640, 72):
for y in range(0, 480, 72):
screen.blit(tile, (x, y))range(0, 640, 72) задаёт числа 0, 72, 144 и так далее до 576. Копия в позиции 576 доходит до 648, то есть выходит за край: pygame рисует часть внутри окна и пропускает остальное, поэтому последний столбец аккуратно обрезается.
Плитки покрывают всё окно, поэтому они заменяют screen.fill: сначала нарисуйте их, затем всё остальное поверх. На этом изображении нет прозрачных пикселей, поэтому загрузите его с помощью .convert() — версии convert_alpha() для непрозрачных изображений.
Задание
Легко- После
set_modeзагрузитеassets/backgrounds/sky.pngс помощью.convert()в переменную с именемtile. - Замените
screen.fill(...)двумя циклами, которые выводятtileв каждой точке(x, y), где x принимает значения изrange(0, 640, 72), а y — изrange(0, 480, 72). - Продолжайте рисовать корабль после плиток.
Попробуйте сами
import pygame
pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Sky Tiles")
clock = pygame.time.Clock()
ship = pygame.image.load("assets/images/ship.png").convert_alpha()
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
screen.fill((20, 22, 40))
screen.blit(ship, (288, 360))
pygame.display.flip()
clock.tick(60)
pygame.quit()
Все уроки раздела Спрайты и изображения
1Загрузка изображений
Загрузить изображениеРазместить его с помощью RectПереместить изображениеЗамостить фонПрозрачные пиксели2Поворот, отражение, масштабирование
Вращение вокруг центраПовернись в направлении полётаИзменение масштаба изображенияВращение от исходного изображения5Пиксельно точные столкновения
Прямоугольники кажутся несправедливымиМаскиПиксельно точные спрайтыКруглые хитбоксы3Классы игровых объектов
Ваш первый классМетодыSelf — это объектСписок объектовОбъекты с изображениямиПодкласс6Анимация с помощью листов спрайтов
Разрезать лист спрайтовСчётчик кадровАнимация по времениОднократная анимация взрываПотренируйтесь самостоятельно: Песочница Pygame