dl2 the game
Разбор основных частей кода игры "dl2" от группы независимых разработчиков, в которую входили: Игорь Лимов, Климентий Лещенко, Георгий Николаев, Вячеслав Васильев.
Ссылка на .msi установщик и исходный код с ресурсами:
игруля
Как и любой цивилизованный код среднестатистической программы, наш начинается с инициализации модулей(pygame.init() - общий, pygame.mixet.init() - для воспроизведения аудио) и импорта необходимых библиотек. Мы используем объективно-ориентированный язык пограммирования Python и модуль, специально предназначенный для создания компьютерных игр pygame. Также тут задаются параметры окна и в память компьютера необходимые ресурсы, такие как: музыка, шрифт, графика(картинки конечностей персонажа, тела, головы, оружия)
Код представлен не в полном объёме*
Также в начале определяются хитбоксы персонажа, при помощи которых будут фиксироваться столкновения со всех сторон. Хитбоксы имеют форму четыёхугольника с идеально параллельными противоположными сторонами.
Хитбоксы персонажа:
Далее создаются функии различных меню. Выбор необходимого пункта меню осуществляется нажатием стрелок вверх, вниз и клавиши пробел. При нажатии стрелок изменяется значение переменной "_k", что помогает определять выбранный пункт меню при помощи индекса пункта в списке.
Главное меню игры:
Меню паузы:
Меню настроек:
Следующим важным элементом кода является отрисовка локации, "стен", через которые персонаж не сможет пройти. В нашей игре мы используем список координат, собранных в .txt файле. С помощью циклов при запуске игры на основании этих координат создаются списки "стен".
Функции для создания "стен" и движущихся платформ:
А данный цикл фиксирует столкновения хитбоксов персонажа со "стенами" и задаёт значения таким переменным, как скорость персонажа и определение состояния анимации его конечностей.
Цикл:
На следующем скриншоте представлен класс, создающий объект "коробка", взаимодействие с которым может или прибавить, или даже отбавить очки жизни.
Класс "Коробка":
Затем, изображен класс, предназначенный для создания объекта внутриигравого противника. В этом классе определяется тип противника и его сложность.
Класс "Противник":
Сразу после того, как мы создали себе врагов, нам ровно в тот же момент захотелось поскорее их убить, по-этому необходим цикл, который будет проверять противников на столкновения с нашим оружием. В случае, если шальная пуля залетит в тушку противника, вызываются фунции класса противника, уменьшающие количество очков здоровья или вообще убирающие его из списка объектов противника из-за отсутствия таковых очков.
Цикл, проверяющий урон:
Далее необходимо упомянуть о том, что наш персонаж способен увеличевать значение переменной, отвечающей за его расположение по вертикали, т.е. прыгать. После пажатия кнопки пробел он взлетает на определленное количество пикселей и с отрицательным значением ускорения достигает пика высоты, после чего процесс действует в обратном порядке с положительным ускорением до тех пор, пока нижний хитбокс не ощутит прикосновения со "стеной"(полом).
Часть кода, отвечающая за прыжок:
Пришло время для инновационх решений в мире игростроения - анимаций. Может показаться, что в такой простой игре не нужны такие комплексные технологии, как анимация, но в нашей компании работают только выкооценённые профессионалы, которым под силу даже такое безумие.
Принцип анимации в нашей игре состаит в том, что размер изображения подобран так, что ось, вокруг которой она крутится распологается в ровно в центре картинки. С помощю класса анимации регулируются координаты картинки и угол, с поторым она вырисовывается на экран.
Расположение конечностей, когда персонаж смотрит направо:
С помощью переменных создается циклическая анимация.
Анимация персонажа, когда он стоих и бездействует:
Это были основные части кода нашей игры.
Спасибо за внимание!
