Для программистов, которые хотят возиться с разработкой игр.

Если вы все еще читаете это на носителе, я переместил свой блог на http://yvanscher.com/blog.html

Установка pygame

Если вы используете Windows или Linux, обычная установка pygame, вероятно, будет работать нормально. Однако если у вас Mac, вам необходимо выполнить следующие действия:

Установите homebrew и python3 через homebrew:

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew install python3

это установит python3 в / usr / local / bin / python3. Если у вас есть анаконда, вам нужно будет использовать этот полный путь для запуска этой установки python.

Установите pygame с помощью:

/usr/local/bin/pip3 install pygame

это установит pygame, и вы можете запустить что-то вроде:

/usr/local/bin/python3 game.py

Есть и другие способы сделать это, например, используя venv с homebrew python. Я придерживаюсь этого, поскольку это работает, и поверьте, вы не хотите тратить 5 часов на чтение стопки сообщений о том, почему ваша игра не может зарегистрировать ключ; это проще и поможет вам двигаться дальше.

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

Создайте персонажа и игровой цикл.

Создайте файл с именем game.py:

Запустите игру с помощью:

/usr/local/bin/python3 game.py

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

У нас пустой мир пустоты. У нас есть персонаж-волшебник (40x40 png). Несмотря на то, что на самом деле это выглядит статичным, программа нашей игры работает и перерисовывает этот мир и нашего персонажа каждые несколько миллисекунд. Тем не менее, эта игра не особенно интересна, поскольку мы не можем двигать нашего персонажа, смотреть на красивую карту или многое другое. Давайте изменим это в следующем разделе. Вы можете ctrl-c программу, которую мы запускаем на терминале, чтобы выйти из этой игры.

Регистрация событий для вашего персонажа.

Если вы испортили шаг «Установка pygame», события, вероятно, не будут регистрироваться на вашем Mac. Это может произойти, если вы используете virtualenv или anaconda python. Снова вернитесь и установите python3 и pygame, как указано выше. В этом разделе мы собираемся регистрировать нажатия клавиш со стрелками, чтобы наш персонаж перемещался по нашему пустому миру.

Это должно создать игровой мир, в котором вы можете перемещаться влево, вправо, вверх и вниз и нажимать красную кнопку выхода в верхнем левом углу окна, чтобы выйти, вот видео этого:

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

Давайте сделаем мир немного интереснее, добавив карту.

Наша карта будет состоять из плиток, и каждая плитка будет ресурсом в нашей игре.

Теперь у вас должна быть красивая карта ресурсов:

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

Добавление инвентаря для отслеживания ваших ресурсов.

В этом разделе мы добавим инвентарь и способ собирать ресурсы с помощью клавиши пробела.

Теперь вы можете перемещаться, собирать ресурсы и видеть, как они увеличиваются в вашем инвентаре. Вы могли заметить, что можно собирать бесконечное количество грязи. Хотя это не было полностью задумано, похоже, все работает нормально, так что это круто. Вот изображение, на котором я очищаю угол карты, и вы можете увидеть ресурсы в моем инвентаре:

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

Добавление системы крафта.

Наша система крафта будет работать так: если вы нажмете цифровую клавишу, соответствующую ресурсу, и вы нажмете кнопку мыши, и у вас есть ингредиенты в вашем инвентаре, он создаст этот ресурс. Так, например, чтобы развести огонь, нам понадобится 1 дрова. Нажатие клавиши «6» и щелчка левой кнопкой мыши и наличие 1 дерева в нашем инвентаре вызовет 1 огонь. В этом разделе мы также добавим способ размещения ресурсов на земле (замена всего, что есть на земле, в наш инвентарь). Чтобы разместить ресурс, мы нажмем цифровую клавишу, представляющую этот ресурс, поэтому, чтобы потушить созданный нами огонь, мы просто нажимаем «6».

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

Добавление элементов окружающей среды в ваш мир.

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

Обычно для птицы мы использовали бы что-то, называемое спрайтом, но я хотел, чтобы этот урок был простым, поэтому я создал свой собственный небольшой метод, который сообщает нам, какое изображение птицы нужно анимировать. Если вы подождете достаточно долго, то увидите 2 облака и птицу, добавляющую немного жизни в нашу игру. Проверить это:

Заключение

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

Этот туториал основан на другом туториале (его фактически уже нет!). Я пошел по тому же общему пути, но хотел двигаться в другом порядке и сохранить код более согласованным, а также решить общие проблемы в pygame. Все шаги в этом посте и ресурсы, которые я использовал для создания этой игры, находятся здесь, на github.

Найдите здесь вторую часть этого руководства.