<MyRusakov.ru />

Программирование на C++ с Нуля до Гуру

Программирование на C++ с Нуля до Гуру

Данный курс научит Вас программировать на языке C++, который, несмотря на свой почтенный возраст, необычайно сильно востребован. Курс состоит из 6 разделов, посмотрев которые и выполнив все упражнения, Вы с нуля освоите этот язык и сможете создавать самые разные проекты любой сложности на C++.

Для закрепления материала из уроков к ним идёт множество упражнений.

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

Также вместе с курсов Вы получаете Бонус "Программирование на C++ в Unreal Engine", в котором Вы научитесь создавать игры на C++ с использованием этого движка.

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

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

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

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

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

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

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

Зачем Вы изучаете программирование/создание сайтов?

Создаем игру с Pygame и Python

Создаем игру с Pygame и Python

Если вы задумываетесь над созданием собственной игры, но не хотите переходить на другой язык ради карьеры разработчика игр, то для этого есть решение! С помощью модуля Pygame вы можете использовать навыки Python для создания игр, от базовых до очень сложных. В сегодняшней статье вы узнаете, как использовать Pygame, сделав клон игры Asteroids! Для начала создадим главный класс нашей игры, в который входят: обработка пользовательского ввода, логика игры, отрисовка игровых объектов.

Для правильной организации проекта создадим новую директорию и перейдем в нее:


>>> mkdir game_project
>>> cd game_project

Далее создадим виртуальную среду и установим нужную версию pygame:

(my_progect)>>> pip install pygame==2.0.0

В папке game_project создадим файл game.py Далее импортируем модуль pygame для получения доступа ко всем его функциям

import pygame

Следующим шагом создаем класс игры, c конструктором класса где инициализируем pygame, так как это идеальное место для размещения любых методов, необходимых для инициализации Pygame.


class SpaceRocks:
    
    def __init__(self):
        
        # Фактическая инициализация Pygame происходит в _init_pygame().
        self._init_pygame()
        self.screen = pygame.display.set_mode((800, 600))

Изображения в Pygame представлены поверхностями. Поверхности можно рисовать друг на друге, что позволяет создавать сложные сцены из простых картинок. В каждом проекте Pygame есть одна специальная поверхность. Эта поверхность представляет собой экран и является той, которая в конечном итоге будет показана игрокам. Все остальные поверхности должны быть нарисованы на этой в какой-то момент. В противном случае они не будут показаны. Чтобы создать поверхность отображения, программа использует pygame.display.set_mode(). Единственный аргумент, который вы передаете этому методу, - это размер экрана, представленный кортежем из двух ширина и высота. В этом случае Pygame создаст экран шириной 800 пикселей и высотой 600 пикселей.


# продолжение вышеописанного класса
        
    def main_loop(self):
        while True:
            self._handle_input()
            self._process_game_logic()
            self._draw()

    def _init_pygame(self):
        pygame.init()
        pygame.display.set_caption('Космические преключения')

    def _handle_input(self):
        pass

    def _process_game_logic(self):
        pass

    def _draw(self):
        self.screen.fill((0, 0, 255))
        pygame.display.flip()

Функция main_loop() - это игровой цикл. Он содержит три шага для каждого кадра: _handle_input содержит обработку входных данных. _process_game_logic содержит игровую логику. _draw содержит чертеж. В методе _init_pygame() происходит одноразовая инициализация Pygame. Метод делает две вещи: Вызывает pygame.init(). Эта единственная строка кода отвечает за настройку удивительных функций Pygame. Каждый раз, когда мы работаем с Pygame, мы должны вызывать pygame.init() в начале нашей программы, чтобы убедиться, что фреймворк будет работать правильно. Следующая строка устанавливает заголовок программы Pygame с помощью pygame.display.set_caption(). В этом случае надписью будет название вашей игры: Космические приключения. Методы _handle_input() и _process_game_logic() обрабатывают действия игрока и задают игровую логику. Пока они пусты, но в следующей статье мы добавим некоторый код.

Метод _draw() уже имеет некоторый код. Он вызывается каждый кадр, чтобы нарисовать содержимое экрана, и делает это в два этапа: заполняет экран цветом с помощью функции screen.fill(). Метод принимает кортеж с тремя значениями, представляющими три базовых цвета: красный, зеленый и синий. Каждое значение цвета колеблется от 0 до 255, представляя его интенсивность. В этом примере кортеж (0, 0, 255) означает, что цвет будет состоять только из синего, без следов красного или зеленого. Далее обновляет содержимое экрана с помощью pygame.display.flip(). Поскольку ваша игра в конечном итоге будет отображать движущиеся объекты, метод будет вызываться каждый кадр, чтобы обновить дисплей. Из-за чего необходимо заполнять экран цветом каждый кадр, так как метод очистит содержимое, сгенерированное во время предыдущего кадра. Теперь наш код хорошо структурирован и имеет методы с описательными именами. В следующий раз, когда нам нужно будет изменить что-то, связанное с графикой, мы будете знать, что нужно использовать _draw(). Чтобы добавить обработку ввода, вы измените функцию _handle_input() и так далее.

Таким образом мы создали класс, который будет отображать основные игровые объекты и отвечать за логику игры. В следующей статье мы применим его и реализуем обработку пользовательского ввода.

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

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

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

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

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

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

  1. Кнопка:

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

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

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

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

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

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