Поиск по сайту:

Рисование объектов и фигур в Pygame


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

PyGame — мощная и популярная библиотека разработки игр на Python. Он предоставляет набор инструментов и функций, упрощающих создание игр и других интерактивных приложений. Одной из полезных особенностей PyGame является возможность рисовать объекты и фигуры.

Модуль pygame.draw

В PyGame рисование объектов и фигур — простой процесс. Вы можете использовать модуль pygame.draw для рисования таких фигур, как прямоугольники, круги, линии и т. д.

Прежде чем начать, убедитесь, что на вашем устройстве установлен pip, а затем используйте эту команду для установки модуля PyGame:

pip install pygame

Рисование основных фигур

Модуль pygame.draw предоставляет несколько функций, позволяющих рисовать базовые фигуры. Каждая функция принимает набор параметров для определения формы и ее положения.

  • rect(): с помощью этой функции можно нарисовать прямоугольник. Это одна из наиболее часто используемых фигур в играх. Вы можете создавать платформы, стены и другие объекты с помощью прямоугольников. Функция принимает четыре параметра: поверхность (поверхность, на которой будет рисоваться прямоугольник), цвет, прямоугольник (объект Rect) и ширина (толщина линии).

    pygame.draw.rect(surface, color, rect, width)
  • circle(): нарисуйте круг. Он принимает четыре параметра: поверхность, цвет, положение (центр круга) и радиус.

    pygame.draw.circle(surface, color, pos, radius)
  • polygon(): нарисовать многоугольник. Он принимает четыре параметра: поверхность, цвет, точки (список точек, определяющих форму многоугольника) и ширину.

    pygame.draw.polygon(surface, color, points, width) 
  • line(): нарисовать линию. Он принимает четыре параметра: поверхность, цвет, start_pos и end_pos.

    pygame.draw.line(surface, color, start_pos, end_pos) 

Полный список функций и их параметров вы можете найти в официальной документации PyGame для модуля draw.

Рисование сложных фигур

Помимо основных фигур, PyGame также позволяет рисовать сложные формы, такие как дуги, эллипсы и прямые линии.

  • arc(): эта функция рисует дугу на поверхности. Дуга – это часть круга. Он принимает шесть параметров: поверхность, цвет, прямоугольник, начальный_угол, конечный_угол и ширина. Укажите углы в градусах, при этом 0 градусов указывает вправо и увеличивается по часовой стрелке. Параметр ширины определяет толщину дуги.

    pygame.draw.arc(surface, color, rect, start_angle, end_angle, width)
  • ellipse(): нарисуйте эллипс на поверхности. Эллипс – это вытянутая окружность. Он принимает четыре параметра: поверхность, цвет, прямоугольник и ширину.

    pygame.draw.ellipse(surface, color, rect, width)
  • aaline(): используется для рисования на поверхности одной сглаженной линии. Сглаживание — это метод, используемый для сглаживания краев фигуры, чтобы она выглядела более естественно. Он принимает четыре параметра, которые отражают функцию line(): поверхность, цвет, start_pos и end_pos.

    pygame.draw.aaline(surface, color, start_pos, end_pos) 

Создание вложенных фигур в PyGame

Еще одна интересная особенность PyGame — возможность рисовать фигуры внутри другой фигуры. Вы можете сделать это, используя комбинацию основных функций рисования фигур в PyGame.

Чтобы нарисовать фигуру внутри другой фигуры, вы можете сначала нарисовать внутреннюю фигуру, а затем поверх нее нарисовать внешнюю фигуру. Внутренняя форма может быть любой базовой формой, например прямоугольником или кругом.

Например, чтобы нарисовать прямоугольник внутри круга, вы можете использовать функцию pygame.draw.circle(), чтобы нарисовать круг, а затем использовать pygame.draw.rect()< функция для рисования прямоугольника поверх нее.

Вы можете найти следующие примеры кода в этом репозитории GitHub.

Вот пример фрагмента кода, демонстрирующий, как нарисовать прямоугольник внутри круга:

import pygame
# Initialize pygame
pygame.init()
# Create a window
window = pygame.display.set_mode((800, 600))
# Create a circle
circle_rect = pygame.draw.circle(window, (255, 255, 255), (400, 300), 100)
# Create a surface for the rectangle
rectangle_surface = pygame.Surface((50, 50))
rectangle_surface.set_colorkey((0, 0, 0))
# Draw the rectangle on the surface
pygame.draw.rect(rectangle_surface, (255, 0, 0), (0, 0, 50, 50))
# Blit the surface onto the circle
window.blit(rectangle_surface, (375, 275))
# Main loop
while True:
    # Quitting the game
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            exit()
    # Update the display
    pygame.display.update()

Это создает эффект прямоугольника внутри круга. Вы можете использовать эту технику для создания более сложных фигур и игровых элементов, комбинируя несколько фигур.

Рисование изображений

PyGame также позволяет рисовать изображения. Вы можете использовать функцию pygame.image.load() для загрузки изображения из файла и функцию pygame.image.blit() для рисования изображения на экране. .

Синтаксис pygame.image.load() выглядит следующим образом:

pygame.image.load(filename) 

А вот синтаксис pygame.image.blit():

pygame.image.blit(image, rect) 

Помимо загрузки и рисования изображений, PyGame также предоставляет несколько других функций, связанных с изображениями. Эти функции позволяют манипулировать изображениями различными способами, например масштабировать, вращать, переворачивать и обрезать.

Добавление расширенных функций

PyGame также предоставляет некоторые расширенные функции для рисования объектов и фигур. Например, вы можете использовать функцию pygame.mouse.get_pos(), чтобы получить положение мыши, и функцию pygame.mouse.get_pressed(), чтобы получить состояние кнопки мыши. . С помощью этих функций вы можете создать функцию рисования щелчком мыши, которая позволит вам рисовать фигуры, щелкая мышью.

import pygame 
# Initialize pygame 
pygame.init() 
# Create a window 
window = pygame.display.set_mode((800, 600)) 
# Main loop 
while True: 
    # Get the mouse position 
    mouse_position = pygame.mouse.get_pos() 
    # Get the mouse button state 
    mouse_pressed = pygame.mouse.get_pressed() 
    # Quitting the game
    for event in pygame.event.get(): 
        if event.type == pygame.QUIT: 
            pygame.quit() 
            exit() 
    # Drawing a circle when mouse is pressed 
    if mouse_pressed[0] == 1: 
        pygame.draw.circle(window, (255, 0, 0), mouse_position, 20) 
    # Update the display 
    pygame.display.update()

Ниже приведен результат:

Легко создавайте игровые спрайты в PyGame

PyGame также предоставляет мощный набор инструментов для легкого создания игровых спрайтов и объектов. С помощью модуля pygame.draw вы можете легко создавать спрайты, которые можно использовать в своих играх. Вы можете легко создавать персонажей, объекты и другие игровые элементы.

Статьи по данной тематике: