Изменение масштаба изображения
Часть раздела Спрайты и изображения путешествия по Pygame на Coddy. Урок 8 из 36.
Босс уровня должен выглядеть большим, а для счётчика жизней нужны маленькие корабли. Одни и те же файлы подойдут для обеих целей: масштабирование создаёт копию изменённого размера.
boss = pygame.transform.scale_by(boss, 2)
icon = pygame.transform.scale(ship, (32, 32))scale_by(image, 2) умножает обе стороны на 2: босс размером 64 на 64 становится размером 128 на 128. scale(image, (w, h)) задаёт точный размер в пикселях — w на h, даже если из-за этого изображение растянется.
Масштабирование медленнее, чем blit, а каждый новый экземпляр копии делает пиксели немного более размытыми или блочными. Масштабируй один раз, до цикла, исходный файл и каждый кадр рисуй масштабированную копию.
Создавай Rect после масштабирования. Rect, созданный для изображения размером 64 на 64, будет старого размера, а center=(320, 150) разместит большого босса не по центру.
Задание
Легко- Увеличь босса в 2 раза перед циклом, затем создай
boss_rectна основе масштабированного изображения, разместив его по центру в точке(320, 150). - Создай
icon: изображение корабля, масштабированное до(32, 32). - Нарисуй
iconтри раза, разместив его верхний левый угол в точках(10, 10),(50, 10)и(90, 10).
Попробуйте сами
import pygame
pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Boss Fight")
clock = pygame.time.Clock()
boss = pygame.image.load("assets/images/boss.png").convert_alpha()
boss_rect = boss.get_rect(center=(320, 150))
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(boss, boss_rect)
pygame.display.flip()
clock.tick(60)
pygame.quit()
Все уроки раздела Спрайты и изображения
1Загрузка изображений
Загрузить изображениеРазместить его с помощью RectПереместить изображениеЗамостить фонПрозрачные пиксели2Поворот, отражение, масштабирование
Вращение вокруг центраПовернись в направлении полётаИзменение масштаба изображенияВращение от исходного изображения5Пиксельно точные столкновения
Прямоугольники кажутся несправедливымиМаскиПиксельно точные спрайтыКруглые хитбоксы3Классы игровых объектов
Ваш первый классМетодыSelf — это объектСписок объектовОбъекты с изображениямиПодкласс6Анимация с помощью листов спрайтов
Разрезать лист спрайтовСчётчик кадровАнимация по времениОднократная анимация взрываПотренируйтесь самостоятельно: Песочница Pygame