Сообщения

Часть 5. Простой редактор карты.

Изображение
Рабочие файлы этого урока в ( Архиве .ZIP ) и на Github : Редактор карты Изменения в файлах: models.py → Добавлен класс GameWorld , изменен GameObject roguelike.py → Добавлена возможность запоминать положение объектов через вывод их в JSON формате в консоль. Более подробное описание урока Далее... Краткое описание изменений. Код игры переписан, для большего соответствия стандарту оформления кода Python - PEP8 , добавлен класс GameWorld и объект этого класса World , в котором хранятся различные свойства игрового мира. В GameObject добавлен словарь obj_props , в который можно поместить любое количество произвольных свойств объекта, чтобы не добавлять их каждый раз в программный код класса. Сделан режим Редактирования, который включается/выключается кнопкой [e] на клавиатуре, он позволяет двигать любые объекты и при отключении той же кнопкой, в консоль выводится строка в JSON- формате с описанием всех объектов игры. Она позволяет сохранить положение объектов при следующе

Часть 4. ДВИЖЕНИЕ ОБЪЕКТОВ МЫШКОЙ

Изображение
Рабочие файлы этого урока в ( Архиве .zip ), и на Github : Перемещение объектов мышкой Изменения в файлах: models.py → Класс объектов GameObject изменен и доработан roguelike.py → Добавлена функция захвата и перемещения объектов мышкой. Более подробное описание урока Далее... В этом уроке добавлена возможность перемещения объектов мышкой. Для этого доработан класс GameObject (ранее он назывался gameObj ) и вывод названия объекта теперь срабатывает на правую кнопку мыши. Для захвата объектов, в класс GameObject в скрипте models.py файле добавлен флаг self.followMouse , если он установлен в True , объект должен двигаться вместе с указателем мыши. В файле roguelike.py внутри кода определения объекта при клике мышкой, добавлены строки: if pygame.mouse.get_pressed()[ 2 ]: ### Если нажата правая кнопка мыши textObjectList.append(new_text_obj) # Добавляем новую надпись(текстовый объект) в список всех надписей curObj.followMouse = True ### устанавливаем флаг следо

Часть 3. ВЫВОД ТЕКСТА И ОТСЧЕТ ВРЕМЕНИ

Изображение
Рабочие файлы этого урока в ( Архиве .zip ) и на Github : Вывод текста и отсчет времени. Изменения в файлах: models.py → Добавлен новый класс для рисования надписей на экране. roguelike.py → Определение объекта под указателем мышки, вывод названия объекта по клику и появление текста на заданное время. Более подробное описание урока Далее... Поскольку писать уроки намного дольше и сложнее, чем писать код самой игры, я решил изменить форму написания уроков, сделав её поэтапной. Иначе написание уроков отнимает у меня сликшом много времени и не дает развивать сам код своего проекта... Теперь не будет сразу подробного и детального урока, а сначала будет краткое описание, потом со временем оно будет дорабатываться до более подробного и детального вида.. В начале каждого урока теперь будет ссылка на рабочие python -скрипты на Github на текущем этапе разработки, эти скрипты можно скачать, посмотреть код с детальными комментариями и сразу запустить, проверив работу. Итак,

Часть 2. ДОБАВЛЯЕМ ОБЪЕКТЫ.

Изображение
В первом уроке мы взяли примитивный рогалик, в котором есть только отрисовка карты, один персонаж и возможность ходить стрелками. Описав работу игры на PyGame вкратце, мы поменяли персонажа, серый пол сменили на траву, отредактировали карту. В этом уроке мы добавим свои объекты в игру, сделаем для них класс и алгоритмы, чтобы отрисовка объектов и персонажа выглядела правильно - нижние объекты перекрывают верхние. Начнем урок с добавления в скрипты roguelike.py и models.py строки, которая исключит ошибки из-за кириллицы(русских букв в коде). В самом начале файла models .py добавляем строку, выделенную черным фоном: # -*- coding: utf-8 -*- import pygame И в roguelike.py так же: #/usr/bin/env python # -*- coding: utf-8 -*- После этого комментарии в коде на русском языке, и вообще символы кириллицы перестанут вызывать любые ошибки и проблемы для любых версий Python. Для удобства ещё уберем с карты игры все тайлы, кроме травы, чтобы не мешались и не портили вид - пр