Top.Mail.Ru
Ответы

Наложение текстуры на прямоугольник pygame

Мне нужно сделать прямоугольник на который надо наложить квадратную текстуру, но не растягивать её и не увеличивать

По дате
По рейтингу
Аватар пользователя
Новичок

Вы можете использовать метод blit() в Pygame для наложения текстуры на прямоугольник. Вот пример кода, который вы можете использовать:

12345678910111213141516171819202122232425262728293031323334
 import pygame 
 
# Инициализация Pygame 
pygame.init() 
 
# Установка размера окна 
screen = pygame.display.set_mode((800, 600)) 
 
# Загрузка текстуры 
texture = pygame.image.load('texture.png') 
 
# Создание прямоугольника 
rect = pygame.Rect(50, 50, 200, 200) 
 
# Главный цикл игры 
running = True 
while running: 
    for event in pygame.event.get(): 
        if event.type == pygame.QUIT: 
            running = False 
 
    # Очистка экрана 
    screen.fill((0, 0, 0)) 
 
    # Наложение текстуры на прямоугольник 
    for x in range(rect.left, rect.right, texture.get_width()): 
        for y in range(rect.top, rect.bottom, texture.get_height()): 
            screen.blit(texture, (x, y)) 
 
    # Обновление дисплея 
    pygame.display.flip() 
 
pygame.quit() 
 

В этом коде мы создаем прямоугольник и накладываем на него текстуру. Текстура повторяется по горизонтали и вертикали в пределах прямоугольника. Пожалуйста, замените 'texture.png' на путь к вашему файлу с текстурой.

Обратите внимание, что этот код не обрабатывает случай, когда размеры текстуры не делятся нацело на размеры прямоугольника. В таком случае вам потребуется дополнительная логика для обработки остатка текстуры.

Аватар пользователя
Просветленный

Для наложения текстуры на прямоугольник в Pygame можно использовать следующий алгоритм:
Загрузить изображение текстуры с помощью функции pygame.image.load().
Создать поверхность прямоугольника с помощью функции pygame.Surface().
Наложить текстуру на поверхность прямоугольника с помощью функции blit().
Отобразить поверхность на экране с помощью функции pygame.display.flip().
Пример кода:

123456789101112131415161718192021222324
 import pygame 
 
pygame.init() 
 
# Загрузка изображения текстуры 
texture = pygame.image.load('texture.png') 
 
# Создание поверхности прямоугольника 
rect_surface = pygame.Surface((100, 100)) 
 
# Наложение текстуры на поверхность прямоугольника 
rect_surface.blit(texture, (0, 0)) 
 
# Отображение поверхности на экране 
screen = pygame.display.set_mode((640, 480)) 
screen.blit(rect_surface, (100, 100)) 
pygame.display.flip() 
 
# Ожидание закрытия окна 
while True: 
    for event in pygame.event.get(): 
        if event.type == pygame.QUIT: 
            pygame.quit() 
            quit() 

В данном примере текстура загружается из файла texture.png, создается поверхность прямоугольника размером 100x100 пикселей, на которую накладывается текстура с помощью функции blit(). Затем поверхность отображается на экране с помощью функции blit() и pygame.display.flip(). В конце кода добавлен бесконечный цикл ожидания закрытия окна.

Чтобы не было ошибки нужно установить библиотеку pygame

1
 pip install pygame 

а также в где размещается код python должен находиться файл texture.png