Сделай Сам Свою Работу на 5

Реализация программного обеспечения





ВВЕДЕНИЕ

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

Данную игру предложено реализовать на языке программирования С++ и в среде MS Visual Studio 2008. Microsoft Visual Studio — линейка продуктов компании Майкрософт, включающих интегрированную среду разработки программного обеспечения и ряд других инструментальных средств. Visual Studio - интегрированная среда, упрощающая создание, отладку и развертывание приложений. Интегрированная поддержка разработки через тестирование и новые инструменты отладки позволяют быстро и без труда находить и устранять ошибки, обеспечивая высокое качество решений.



АНАЛИЗ ИСХОДНЫХ ДАННЫХ

1.1 Характеристика требований на разработку

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

Анализ предметной области

Приложение должно функционировать согласно правилам, которые предусматривает выбранный вариант игры. Единственной, на данный момент, реализованной игрой является “Собери двойку”. Побеждает тот игрок, кто первый откроет всё поле. Поле представляет собой 16 ячеек. Соответственно всего 8 пар одинаковых символов.

Специальное и общесистемное программное обеспечение

Согласно исходным данным средой разработки проекта будет являться MS VS 2008. Данная среда программирования была выбрана из ряда других согласно указанному техническому заданию. Visual Studio, в первую очередь, считается универсальной и многофункциональной средой программирования. Согласно техническому заданию разработка должна вестись на языке программирования C++, а также с использованием функций работы с сокетами.



Как вариант, данный курсовой проект можно было предложить реализовать в среде Adobe Flash, используя язык программирования Action Script 2.0/3.0, однако данный язык в некоторой степени является более высокоуровневым, и в меньшей мере способствует развитию навыков на начальном этапе в работе с сокетами.

 

 

ПРОЕКТИРОВАНИЕ ПРОГРАММЫ

Информационное обеспечение

Диаграмма прецедентов

Это диаграмма, на которой отражены отношения, существующие между актерами и прецедентами. Основная задача — представлять собой единое средство, дающее возможность заказчику, конечному пользователю и разработчику совместно обсуждать функциональность и поведение системы. На диаграмме отражены действия, которые может совершать пользователь. Диаграмма представлена в приложении А.

 

Диаграмма классов

Это статическая структурная диаграмма, описывающая структуру системы, она демонстрирует классы системы. Диаграмма представлена в приложении B.

 

Диаграмма компонентов

Диаграмма компонентов - статическая структурная диаграмма, показывает разбиение программной системы на структурные компоненты и связи (зависимости) между компонентами. В качестве физических компонент могут выступать файлы, библиотеки, модули, исполняемые файлы, пакеты и т. п. Диаграмма представлена в приложении С.

 

Диаграмма композитной/составной структуры



Диаграмма композитной/составной структуры - статическая структурная диаграмма, демонстрирует внутреннюю структуру классов и, по возможности, взаимодействие элементов (частей) внутренней структуры класса. Диаграмма представлена в приложении D

 

Диаграмма развёртывания

Служит для моделирования работающих узлов. В данном случае используется сервер и 3 клиента. Диаграмма представлена в приложении Е.

 

Диаграмма объектов

Демонстрирует полный или частичный снимок моделируемой системы в заданный момент времени. На диаграмме объектов отображаются экземпляры классов (объекты) системы с указанием текущих значений, их атрибутов и связей между объектами. Диаграмма представлена в приложении F.

 

Диаграмма деятельности

Диаграмма, на которой показано разложение некоторой деятельности на её составные части. Диаграмма представлена в приложении G.

Диаграмма коммуникации и последовательности

Выражает взаимодействие между тремя клиентами и сервером. Диаграмма представлена в приложении H.

 

Диаграмма обзора взаимодействия

Разновидность диаграммы деятельности, включающая фрагменты диаграммы последовательности и конструкции потока управления. Диаграмма представлена в приложении I.

 

Диаграмма синхронизации

Альтернативное представление диаграммы последовательности, явным образом показывающее изменения состояния на линии жизни с заданной шкалой времени. Может быть полезна в приложениях реального времени. Диаграмма представлена в приложении J.

Математическое описание

Функциональная структура

Приложение должно предоставлять гостю выбор, к какому серверу подключиться, какое имя будет у сервера/клиента, когда начнётся игра. Алгоритм работы следующий:

1.Старт работы сервера

2.Старт работы клиента(-ов)

3.Выбор подключения к игре либо создание своей.

4.Выбор имени.

5.Ожидание игроков и старт игры

Алгоритмическое обеспечение

Описание алгоритма работы программы выглядит следующим образом. При запуске приложения (а именно клиента) можно будет выбрать, кем будет являться таковой: создающим игру либо подключающимся. Создатель игры указывает своё имя (имя игры) и оно отображается на сервере. Затем у него же появляется диалоговое окно со списком клиентов, в котором отображаются имена клиентов, подключившихся к этой игре. Создатель игры может начать игру в любой момент по нажатию кнопки “Start”, либо отменить игру и отключить всех подключившихся именно к этой игре пользователей по нажатию кнопки “Cancel”. После нажатия кнопки “Start” диалоговое окно со списком пользователей будет автоматически закрыто и появится игровое поле.

На стороне клиентов ситуация следующая. При входе клиент указывает своё имя. Затем он может выбрать список игр, которые ожидают старта, после чего появится диалоговое окно с именем игры и кнопкой “Cancel”, нажатие на которую отменит ожидание и вход в игру. Как только на клиенте, который создал игру, будет нажата кнопка “Start” данное окно автоматически закроется и появится игровое поле. Тот, кто первый откроет поле получит сообщение о победе. Остальные клиенты получат сообщение о проигрыше в игре, а также имя победителя.

Программная реализация

Детальная реализация функциональных частей программного обеспечения

Реализация программного обеспечения

Реализация шла на языке программирования C++ в среде Microsoft Visual Studio 2010. Использовались только стандартные функции и библиотеки. Структура классов находится в приложении Г.

Структура приведена только для классов, реализованных на сервере т.к. на клиенте потребовалось реализовать всего один класс, который, по сути, является формой. В таблице 1 приведено описание классов сервера.

 

Таблица 1.Описание классов.

Элемент массива игр. ref class game { public: game(System::String^ name); System::String^ host; System::String^ winner; bool visible; bool hostReady; array<System::String^>^ Users; void Add(System::String^ name); void Delete(System::String^ name); int Count; };
Массив игр. Удаление, элементов,их количество. ref class GameList { public: GameList(int k); void Add(System::String^ name); void Delete(System::String^ name); array<game^>^ Items; int Count; };
Элемент массива пользователей.     ref class Record { public: Record(void); Record(System::String^ username, System::String^ name); System::String^ username; System::String^ name;};  

Продолжение таблицы 1.

Класс описания пользователя. Используется для обращения к конкретному пользователю. Элемент массива пользователей ref class User { public: User(System::String^ nam, SOCKET sok); System::String^ name; SOCKET sock; };
Массив пользователей ref class UserList { public: UserList(int k); void Add(System::String^ name, SOCKET sok); void Delete(System::String^ name); SOCKET GetSock(System::String^ name); array<User^>^ Items; int Count; };

 

 








Не нашли, что искали? Воспользуйтесь поиском по сайту:



©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.