neljapäev, 7. juuni 2018

Minu arvutitunne paevik

dl2 the game
Разбор основных частей кода игры "dl2" от группы независимых разработчиков, в которую входили: Игорь Лимов, Климентий Лещенко, Георгий Николаев, Вячеслав Васильев.


Ссылка на .msi установщик и исходный код с ресурсами:
игруля

Как и любой цивилизованный код среднестатистической программы, наш начинается с инициализации модулей(pygame.init() - общий, pygame.mixet.init() - для воспроизведения аудио) и импорта необходимых библиотек. Мы используем объективно-ориентированный язык пограммирования Python и модуль, специально предназначенный для создания компьютерных игр pygame. Также тут задаются параметры окна и в память компьютера необходимые ресурсы, такие как: музыка, шрифт, графика(картинки конечностей персонажа, тела, головы, оружия)

Код представлен не в полном объёме*



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

Хитбоксы персонажа:

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

Главное меню игры:


Меню паузы:


Меню настроек:


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

Функции для создания "стен" и движущихся платформ:


А данный цикл фиксирует столкновения хитбоксов персонажа со "стенами" и задаёт значения таким переменным, как скорость персонажа и определение состояния анимации его конечностей.

Цикл:


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

Класс "Коробка":


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

Класс "Противник":


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

Цикл, проверяющий урон:


Далее необходимо упомянуть о том, что наш персонаж способен увеличевать значение переменной, отвечающей за его расположение по вертикали, т.е. прыгать. После пажатия кнопки пробел он взлетает на определленное количество пикселей и с отрицательным значением ускорения достигает пика высоты, после чего процесс действует в обратном порядке с положительным ускорением до тех пор, пока нижний хитбокс не ощутит прикосновения со "стеной"(полом).

Часть кода, отвечающая за прыжок:


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

Расположение конечностей, когда персонаж смотрит направо:


С помощью переменных создается циклическая анимация.

Анимация персонажа, когда он стоих и бездействует:


Это были основные части кода нашей игры.

Спасибо за внимание!

Minu arvutitunne paevik

dl2 the game Разбор основных частей кода игры "dl2" от группы независимых разработчиков, в которую входили: Игорь Лимов, Климен...