<MyRusakov.ru />

Профессия Web-разработчик

Профессия Web-разработчик

Этот комплект за 8 месяцев превратит Вас в Web-разработчика с нуля. Учиться достаточно 1 час в день.

Начнёте Вы с HTML, CSS и вёрстки сайтов. Потом перейдёте к программированию и JavaScript. Затем изучите PHP, MySQL, SQL, Python. Изучите Web-фреймворки Laravel и Django. Создадите 5 своих сайтов для портфолио.

Комплект содержит:

- 540 видеоуроков

- 110 часов видео

- 1205 заданий для закрепления материала из уроков

- 5 финальных тестов

- 7 сертификатов

- 12 Бонусных курсов

Подробнее
Подписка

Подпишитесь на мой канал на YouTube, где я регулярно публикую новые видео.

YouTube Подписаться

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Какая тема Вас интересует больше?

Создаем игру с Pygame и Python. Часть 3

Создаем игру с Pygame и Python. Часть 3

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

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

По мере роста вашей игры важно, чтобы она сохраняла правильную структуру. Итак, начните с создания папки под названием assets и внутри нее еще одной, называемой sprites. Там вы разместите все спрайты, используемые в вашей игре. Папку assets можно создать внутри space_rock.

Затем загрузите изображение космического фона и поместите его в папку assets/sprites.

Кроме того, поскольку изображения будут загружаться в вашу программу много раз, рекомендуется извлечь эту функциональность в отдельный метод в отдельном файле. Создайте файл с именем space_rocks/utils.py, который сохранит все многоразовые методы. Затем реализуйте загрузку изображений:



from pygame.image import load

def load_sprite(name, with_alpha=True):
    # в зависимости от места запуска space_rock можно и не указывать
    path = "space_rock/assets/sprites/{0}.png".format(name)
    loaded_sprite = load(path)

    if with_alpha:
        return loaded_sprite.convert_alpha()
    else:
        return loaded_sprite.convert()

В первой строке мы импортирует метод load (), который будет необходим для последующего чтения изображений.

В строке path создаем путь к изображению, предполагая, что оно хранится в каталоге space_rock/assets/sprites и что это файл PNG. Таким образом, вам нужно будет только указать имя спрайта позже. В случае ошибки в загрузке, следует удалить часть пути.

Строка loaded_sprite загружает изображение с помощью функции load(). Этот метод возвращает поверхность, которая является объектом, используемым Pygame для представления изображений. Позже вы можете нарисовать его на экране (или на другой поверхности, если хотите).

Конструкция if-else преобразуют изображение в формат, который лучше подходит для экрана, чтобы ускорить процесс рисования. Это делается с помощью функции convert_alpha() или convert(), в зависимости от того, хотите ли вы использовать прозрачность.

Структура нашего проекта будет выглядеть следующим образом:



game_project/
|
├── space_rocks/
    ├── __main__.py
    ├── game.py
    └── utils.py
    |_
     assets/
     |
     └── sprites/
         └── space.png

Теперь, когда ваша программа может загружать изображения, пришло время изменить синий фон на что-то более интересное. Отредактируйте space_rocks/game.py файл:


import pygame

# импорт загрузчика
from utils import load_sprite

class SpaceRocks:
    def __init__(self):
        self._init_pygame()
        self.screen = pygame.display.set_mode((800, 600))
        # добавленный код
        self.background = load_sprite("space", False)

    ..........................

    def _draw(self):
        # добавленный код
        self.screen.blit(self.background, (0, 0))
        pygame.display.flip()

Чтобы отобразить одну поверхность на другой в Pygame, Метод blit() нужно вызвать на поверхности, на которой вы хотите рисовать. Этот метод принимает два аргумента:

Поверхность, которую вы хотите нарисовать - self.background. Точка, в которой вы хотите ее нарисовать - (0, 0).

Запустим проект:

# запуск проекта
(my_progect)>>>python space_rock

И мы должны увидеть экран с изображением:


Изображение

Таким образом, мы добавили нашей игре красивое фоновое изображение.

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

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

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так: Как создать свой сайт

  2. Текстовая ссылка:

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

Комментарии (0):

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.