Создание игры «Настольный теннис» (Creating a Ping-Pong Game with C#)
Сергей Александрович Евдокимов
© Сергей Александрович Евдокимов, 2023
ISBN 978-5-0059-9407-3
Создано в интеллектуальной издательской системе Ridero
Добро пожаловать в мир программирования!
Создание игры «Пинг-Понг» на C Sharp(Creating a Ping-Pong Game with C#)Учебная и научная литература
для начинающих программистов
Для достижения указанных целей было изучено литературу по компьютерным технологиям, по системам управления базами данных, особенности графических приложений, высокоуровневым языкам программирования. Считаю, что эта работа выполнена на достаточно высоком уровне и заслуживает продолжения
Ping Pong популярный проект для новичкови начинающих программистов, разработанныйна C SharpЕВДОКИМОВ Сергей АлександровичИзучаем высокоуровневое программирование на C Sharp!
Это первое издание книги© Сергей Евдокимов, 20152023ОПРЕДЕЛЕНИЕ, ОБОЗНАЧЕНИЕ И СОКРАЩЕНИЕ
ВВЕДЕНИЕ
Актуальность темы исследования. Развитие культуры в нашем столетии неуклонно идет вместе с развитием многообразных технологий, например компьютерных. Компьютерный рынок непрерывно заполняется более ранними, более совершенными программами, увеличивается скорость процессоров, объем носителей хранения памяти. В этой «технологической революции» не последнее место занимает событие, появившееся вместе с компьютерами, а именно: компьютерные игры [1]. Сейчас, хоть люди и стали деловыми, но время на развлечения они всегда находят. Кое-кто выбирает активный отдых (путешествие, спортивные игры, квесты), а кто-то предпочитает более пассивный отдых, к ряду которых можно отнести не только просмотр кинофильмов, но и компьютерные игры. В Украине ежегодно растет количество людей, покупающих подобные игры. Если для игроков это просто игрушка и шанс отдыха, то для разработчиков и распространителей целая сфера деятельности [2]. Все это, в совокупности с фактом роста количества компьютеров и увлечения людьми играми, говорит о том, что вопрос нуждается в исследовании по направлению ряда наук, и программированию в первую очередь.
Цель данной работы заключается исследование и разработка игры Пинг-Понг, язык написания игры будет служить в моем случае С Sharp, и написание игры подробно, в деталях, рассказав о различных элементах приложения, создавая программу.
Задания к данной работы:
Используя произвольный язык и среду программирования разработать программное приложение-игру «Пинг-понг»;
Объяснить детали и сущность частей программы;
исследовать процесс создания игры на платформе Microsoft Visual Studio 2022;
сформировать общий вывод работы.
Объект исследования программное приложение-игра «Пинг-понг».
Предмет исследования создание компьютерной игры в программной среде.
Платформа создания игры исследование игры и процесс написание будут оформлены таким ПС при разработке создания игр как Microsoft Visual Studio.
Язык написания игры C Sharp.
Структура данной работы обусловлена поставленными целями, задачами и характером исследования. Сама работа состоит из введения, четырёх глав, общего заключения, приложений, использованных сокращений, списка использованных источников, семи дополнений.
РАЗДЕЛ 1. АНАЛИТИЧЕСКАЯ ЧАСТЬ
1.1 Постановка задания
Используя произвольный язык и среду программирования разработать программное приложение-игру «Пинг-понг». Суть игры заключается в отражающем мячике игроку, отражающем его с помощью ракетки. Программа должна проверять, отбил ли игрок мяч и сообщать пользователю о результатах отбитых мячей во время игры.
Структура проекта:
модуль, отображающий главное меню игры;
модуль, отображаемый по окончании игры;
модуль, отображающий игровое поле;
модуль, отображающий результаты отбитых мячей;
модуль, отображающий справку пользователя;
модуль, отображающий состояние звука (Вкл./Выкл.).
Входные данные:
состояние звука (Вкл/Выкл);
соследующие действия (нажатая клавиша) по окончании игры.
Исходные данные:
количество «отбитых» мячей пользователем;
состояние звука (Вкл./Выкл.);
справка о дальнейших действиях по окончании игры;
интерфейс программы должен содержать следующие элементы: главное меню, форма с информацией о разработчике, состояние звука (Вкл./Выкл.);
приложение должно давать возможность изменять состояние звука в игре при включенном будет играть мелодия и будет работать звук в игре.
Во время игры программа должна разрешать:
выйти из игры;
перезапустить игру;
Выкл/Вкл. звук.
1.2 Анализ задания
Рассмотрение предметной области приложения «Пинг-понг» показало, что основной проблемой является реализация полета мячика и его реалистичное отражение от игрового поля и ракетки игрока, а также разработка такого интерфейса, который смог бы успешно конкурировать с подобными играми.
Для решения проблемы была выбрана работа с таймером и изменение направления полета мяча с помощью векторов.
Посреди аналогов были проанализированы следующие игры: 2D Ping Pong, Легенды Пинг Понга, Table Tennis Angry Birds, Настольный теннис 2D.
Полученная (после обработки данных) на экране монитора графическая информация очень удобна для анализа и описания сложных явлений на практике. Более того, эта графическая информация может использоваться в следующих вычислениях, на основании которых мы получим новые данные, которые снова можем предоставить в виде новой графической информации, которая может использоваться в новых расчетах и т. д. [5].
Высшим приоритетом можно считать удовлетворение работы данными ПО в определенные сроки. Программа, которая работает без ошибок это главный показатель прогресса и основное достижение в проекте. А в простоте искусство для достижения чего-то большего, при этом делая меньше, что является «Основа основ». Разработчики должны время от времени задумываться по эффективности, и соответственно редактировать и подстраивать свое поведение [6].
1.3 Выбор методов и способов решения задания
Для написания игрового приложения Пинг-понг была выбрана программа Visual Studio 2022 с интерфейсом Windows Forms (API), ориентированная на разработку привлекательного и удобного интерфейса (графического).
Microsoft Visual Studio это линейка инструментов и служб по созданию разных приложений для платформы Microsoft, а также для других. Независимо от используемого средства разработки, есть возможность более гибко работать, и главное где угодно [7].
Visual Studio 2022 это передовое решение для разработки, позволяющее командам любого размера проектировать и создавать привлекательные программы, которые удовлетворят требования заказчиков.
Windows Forms это такой интерфейс для программирования приложений (API), который отвечает за пользовательский интерфейс (графический), что является частью. NET Framework компанни Microsoft. Этот интерфейс значительно упрощает возможность для получения доступа к элементам интерфейса ОС Windows, так как за счет создания обвертки API для уже существующего в управляемом коде Win32 [8]. Учитывая то, что этот код это классы, которые реализуют API для библиотеки Windows Forms, не зависящие от языка разработки. То есть программист все равно использует Windows Forms в написании прогромного обеспечения на C Sharp, С++, также на VB.Net, J# и т. д.
Библиотека Windows Forms разрабатывалась как элемент к. NET Framework для облегчения разработки составляющих графического и пользовательского интерфейса [9]. Windows Forms построена на основе устаревшего Windows API и представляется как обвертка низкоуровневых компонентов ОС Windows.
С помощью библиотеки Windows Forms предоставляется возможность для разработки кроссплатформенных графических пользовательских интерфейсов. Но всё же, Windows Forms до сих пор является только обверткой для API-компонентов ОС Windows, и ряда ее методов, которые могут осуществлять прямой доступ к функциям Win32 и обратного вызова, что недоступны на других платформах [10].
Готовое приложение на Windows Forms представляет ориентированное программное обеспечение, поддерживающее. NET Framework. от компании Microsoft. Большая часть времени тратится на ожидания от пользователя любых действий, В отличие от пакетных программ. К напримеру, в текстовом поле ввод текста или по кнопке щелчок мышкой.
С одной стороны, библиотеку Windows Forms можно рассматривать как замену с более старой и сложной библиотекой MFC, которая первоначально была написана на C++. С другой же стороны, WF не предпочитает парадигму, что сравнима с MVC. Для исправлений в этой ситуации и реализации функциональности в WF есть посторонние библиотеки. Такой одной, которые больше всего используются является UIPAB, которая была выпущена отдельной группой компании Microsoft, что занималась рекомендациями и образцами для бесплатного распространение. Данная библиотека ещё содержит сам исходный код, исходящее образцы для большего ускорения в обучении [11].
Windows Forms (внутри пространства.NET Framework) реализуется как System.Windows.Forms.
Объектно-ориентированное программирование это парадигмаиз программирования, основу которой составляют три основные концепции: наследование, инкапсуляция и полиморфизм [9]. Инкапсуляция сокрытие деталей о работе классов от объектов, использующих или отправляющих им сообщения [11]; наследование позволяет создать новый класс в основе родительского (уже существующего), при этом свойства и функциональность родительского класса заимствуются новым классом [12]; полиморфизм означает зависимость поведения от класса, в котором это поведение вызывается, то есть два или более классов могут реагировать по-разному на одинаковые сообщения [10].
Важной деталью механизма ООП является абстракция. В объектно-ориентированном программировании, абстракция это придание объекту характеристик, отличающих его от всех остальных объектов, что четко определяются по его концептуальным границам [12].
1.4 Критерии при подготовке
Всегда хочется использовать что-то новое и модное, но стоит быть готовым к тому, что молодой продукт может иметь достаточно серьёзные баги. Существуют примеры, когда необходимые доработки Фреймворка ждут исправления месяцы, а то и годы. Не стоит также исключать, что в какой-то момент разработка Фреймворка может быть остановлена. На мой взгляд, всегда стоит отдавать предпочтение проверенным временем продуктам. В качестве примера можно привести C# и SQL. Это практически стандарт де-факто в разработке бизнес-сервисов. Огромная накопленная база знаний сводит почти к нулю вероятность столкнуться с неразрешимой проблемой.
Стоить отметить, что в современной архитектуре приложений всё больше используется микросервисный подход. Он позволяет разделить большое приложение на много маленьких сервисов. Это позволяет многократно снизить последствия от неправильно выбранного языка программирования или Фреймворка, и позволяет развязать руки в экспериментировании. Так как сервис мал, то в любой момент его можно достаточно быстро переписать. Всегда стоит сохранять прагматичный подход к решению проблемы. При выборе того или иного продукта взвешивать преимущества и возможные негативные последствия на дальнейшую разработку.
Размер и сложность проекта. Если это небольшой проект или MVP, когда стоят короткие сроки выполнение проекта, то можно выбирать тот язык и фреймворк, в которых есть знание у команды или легко найти специалистов на рынке. Очень часто, особенно на аутсорсе, решение принимается в зависимости от отдела, куда попадает проект.
Тип проекта. Разные типы проектов требуют различных технологий. К примеру, приложения с интенсивным использованием данных, системы бронирования, приложения для социальных сетей, потоковые приложения, CMS, IoT, приложения в банковской сфере, торговые площадки и простые MVP, скорее всего, потребуют различных языков программирования и Фреймворков.
Стоимость. Многие технологии, Фреймворки и среды разработки требуют лицензии, но есть и много бесплатных вариантов. На практике, скорее всего, у вас будет выбор между платными инструментами, но с большей функциональностью и поддержкой, или бесплатные, но с ограниченным набором функций.
Востребованность технологии. Насколько много вакансий на рынке, какие в среднем зарплаты. Причём лучше посмотреть по разным странам. Например, С# очень популярен на Западе и сильно обгоняет своего конкурента Java, а значит, работу на нём будет находить значительно проще. А вот Рефал имеет некоторую популярность только в России, да и вакансий то немного.
Порог входа. От этого зависит то, насколько быстро можно начать зарабатывать на этой технологии и решать реальные задачи. Например, у языка С# достаточно высокий порог входа, и даже если у вас за плечами несколько лет опыта в кодинге на другом языке программирования, не факт, что получится быстро перепрыгнуть в Java и сохранить уровень дохода.
Перспективность. Технологии могут устаревать и терять востребованность. Важно смотреть за динамикой роста популярности языков программирования и фреймворков. Например, C# держит позиции за счёт развивающегося направления машинного обучения, и вкладываться в него точно имеет смысл. Язык Go всё чаще используется для микросервисов в крупных компаниях, но нет гарантий, что этот тренд сохранится надолго.
Интерес. Конечно, нельзя добиться весомых результатов, работая с тем, что не драйвит и не вызывает интереса. Поэтому это очень важный пункт. Но учтите, что интересы со временем могут меняться и это нормально.
1.5 Требования к созданию 2D-приложений
Список требований, которые нужно стремительно развивать, совершенствовать, чтобы уметь создавать отличные 2D программы, игры, приложения:
усовить понятия: «переменные», «ветвления», «функции» и «циклы»;
изучить консоль и методы работы с ней, будет вводить и считывать данные, форматировать строки, обрабатывать файлы;
разобраться с синтаксическими конструкциями C#, вошедшего в пятерку самых популярных языков программирования;
познакомится с библиотеками и шаблонами, инструментами разработки и их возможностями;
читать коды и управлять ими;
создавать игровые объекты и классы, работать с ними, наделять их различными свойствами;
работать со структурированными документами формата XML;
добавлять в игру анимацию с графическим интерфейсом.
1.6 Анализ существующих аналогичных программных продуктов
Больше чем полвека тому назад, а имено 29 ноября 1972 года, в Саннивейле (штат Калифорния, США) совершилась премьера игры в классическом стиле под названием «Pong», которая выпускалась на монетные автоматы. Именно тогда PingPong (ранее Pong), наверное, смог сформировать такой жанр и сформировал успешную игровую индустрию, что по сей день считается одной из прибыльных в мире.
Многие люди, играли в «Pong», а сейчас играют в «Пинг-Понг» как минимум, в одну с его вариаций, а также ни один раз видели эту игру по фильмам 70-х годов. По сути игра «Пинг-Понг» является цифровой версией самого просто настольного тенниса. Игроки в попытках отбить этот мяч, в помощь ракетка, что отображается на экране управляется с помощью специальной ручки.