Разработка программного обеспечения проведения соревнований по программированию компьютерных игровых стратегий в среде MS Robotics Studio

 














Разработка программного обеспечения проведения соревнований по программированию компьютерных игровых стратегий в среде MS Robotics Studio


Введение


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

Интересный способ привлечения юных дарований к науке можно увидеть во многих ВУЗах мира. Например, преподаватель Университета Мэсси Гураб Сэн Губта сделал небольших роботов-футболистов для обучения программированию своих студентов четверокурсников. Комбинация электроники и программного обеспечения - это как раз то, что нужно. Во многих американских университетах соревнования роботов уже поставлены на поток [1].

В последние годы соревнования среди роботов стали популярными и в России. Открытый робототехнический турнир на Кубок Политехнического музея является ежегодными соревнованиями роботов, проводящимися в рамках научно-познавательной программы «Каникулы роботов в Политехническом». Турнир включает соревнования различной степени сложности, в которых могут принимать участие как простейшие узконаправленные конструкции, созданные начинающими, так и комплексные робототехнические устройства со сложной программной частью[2]. В 2011 году состоялся III Всероссийский робототехнический фестиваль. Победителем соревнований по профессиональной робототехнике по направлению «Промышленная автоматизация» стала команда из Саратова «MobRob», которая будет представлять Россию на престижных международных соревнованиях по робототехнике: Азиатско-Тихоокеанского региона ABU ROBOCON-2011 в Таиланде [3].

Наиболее популярными роботами для программирования являются роботы LEGO Mindstorms NXT. LEGO Mindstorms - это особая серия конструкторов, обладающих практически неограниченными возможностями. С помощью программного блока и различных датчиков можно создать робота, способного выполнять любые действия. Робот lego программируется подключенным по USB к компьютеру [4]. Цена таких роботов даже в базовой комплектации превышает 10000 рублей, что делает их недоступными большинству энтузиастов, желающих попробовать себя в области программирования роботов.

Альтернативным способом программирования роботов является программирования виртуальной модели, точной копии настоящего робота, в симуляционной среде, что позволяет сделать платформа Microsoft Robotics Developer Studio (MSRS). Среда разработки MSRS - это пакет разработчика для робототехники, ориентированный на программистов разных уровней. Визуальный язык программирования (VPL), входящий в состав MSRS, поможет писать простые программы начинающим энтузиастам. Симуляция виртуальных роботов позволит работать с техникой, которой еще нет, или выйти из положения, если использовать настоящего робота по каким-то причинам нельзя [5]. Важным фактором является то, что программа написанная на VPL для виртуального робота может исполняться и реальным роботом, оснащенным необходимыми приборами и сенсорами.

Целью дипломной работы является разработка программного обеспечения, предоставляющего возможность проведения соревнований по программированию компьютерных игровых стратегий на базе Microsoft Robotics Studio, включающего:

Обеспечение возможности проведения турниров между роботами;

Составление отчетов о проведенных турнирах;

Для достижения поставленной цели нужно решить следующие задачи:

)Регистрация участников в системе;

)Загрузка файлов участников на сервер;

)Сохранение результатов соревнования в БД;

)Формирование отчетов о турнирах;

)Предоставление участнику соревнования информации для программирования роботов;

)Запуск симуляции выполнения логики загруженных роботов.


1. Описание объекта управления


1.1 Структура объекта управления


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

Так как перед нами не стоит задача - автоматизировать какие-либо процессы, связанные со спецификой проведения соревнований, то нет необходимости анализировать их деятельность. Разработанная система предназначена для проведения студенческих соревнований по программированию компьютерных игровых стратегий на базе Microsoft Robotics Studio. Исходя из этого, можно сделать вывод, что нашей системой может пользоваться большое количество пользователей.

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


1.2 Функциональные особенности


Основные функции, которые необходимо чтобы предоставляла система её пользователям:

регистрация участников в системе;

загрузка проектов участников на сервер;

загрузка файлов с сервера;

выбор необходимой документации;

запуск на выполнение необходимых проектов участников;

сохранение результатов соревнований на сервере;

формирование отчетов о прошедших турнирах;

просмотр новостей о проекте, прошедших и предстоящих турнирах.


1.3 Пиковые нагрузки


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


2. Обзор существующих систем проведения соревнований роботов


2.1 Java Robocode


Robocode - это обучающая игра с открытыми исходными кодами, разработанная Mathew Nelson и Flemming Larsen. Ее единственной целью было облегчение изучения языка программирования Java. Основным движущим элементом в обучении должна была стать конкуренция. Каждый участник пишет код на Java, который управляет небольшим танчиком, и сражается с другими такими же танками [6].

Проект Robocode был начат в середине 2000 г. и по замыслу его создателя должен быть стать развитием игры Robot Battle, адаптированным под язык Java. По мере развития проекта и написания кода для своих первых танков, автору пришла в голову гениальная мысль - совместить игровой процесс с обучением. Доступность и открытость модели Robocode позволяет любому начинающему программисту за несколько минут создать простой танк и приступить к его совершенствованию [7].

Суть соревнования заключается в организации боев роботов-танков. Каждый робот представляет собой отдельный класс, который наследует свойства и методы класса Robot. Таким образом, каждый робот может быть запрограммирован игроком на определенное поведение. После того, как игроки создали свои классы роботов, можно создать бой и выставить их друг против друга. В процессе игры роботы-танки могут двигаться по игровому полю, стрелять, узнавать месторасположение друг в друга, врезаться в стены и в других роботов, узнавать где находятся летящие пули и использовать всю мощь языка Java. На рисунке 2.1 приведен скриншот программы Robocode во время проведения турнира.


Рис. 2.1. Проведение соревнования роботов в Robocode


Интеллектуальный бой заключается в написании программы для управления танком на Java. Из основных возможностей игры можно отметить создание роботов, программирование их на Java, компиляция, запуск нескольких роботов в схватке и пошаговый просмотр битвы. У робота есть три подвижные части. Это тело, пушка и радар. Радар движется быстрее всех частей и отправляет соответствующее событие при обнаружении противника. Пушка имеет возможность выстрела, но команда выстрела дается из главного класса. Тело может поворачиваться, двигаться, высылать событие об ударе о стену [8].


2.2 Pascal Robotwar


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

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

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

Pascal RobotWars является отличным тренажером начинающих программистов, для повышения навыков программирования на Паскале и удовольствия в то же время. Тем не менее, Pascal RobotWars предполагает, что программист роботов уже знает язык программирования Pascal. На рисунке 2.2 приведен скриншот программы Pascal Robot во время проведения турнира.

Версия P-ROBOTS 4.0 имеет ряд значительных улучшений по сравнению с предыдущими версиями, включая интегрированную среду разработки или IDE, которая может быть использована для создания, редактирования и тестирования созданных роботов. При тестировании / компиляции робота с использованием интегрированной среды разработки, компилятор определяет любые ошибки в исходном коде, и устанавливает положение курсора на соответствующую позицию в редакторе, где возникла ошибка в исходном коде. Что существенно облегчает исправление ошибок. IDE может также использоваться для изменения структуры «турниров. Можно устанавливать различные характеристики, например увеличить скорость воспроизведения анимации, установить неограниченное количество препятствий и т.д. [9].


Рис. 2.2. Проведение соревнования роботов в Pascal Robot


2.3 Snake Battle


Snake Battle - компьютерная игра, разработанная компанией Gamos, в которой игроки соревнуются в программировании змей.

Битва происходит на клетчатом поле. Каждая «живая» змея состоит из головы, туловища и хвоста. Весь змеиный «интеллект», включая датчики для сканирования окружающей обстановки, находится, разумеется, в голове, а хвост является наиболее уязвимым местом. Наличие головы и хвоста обязательно для каждой змеи, то есть минимальная живая змея имеет длину две клетки.

В ходе боя возможны всего лишь два варианта движения змеи. Если голова змеи перемещается на пустую клетку, то все тело змеи перемещается вслед за головой, так что первая клетка туловища оказывается там, где раньше была голова, а хвост оказывается там, где была последняя клетка туловища [10].

Если же змея производит атаку на противника, то ее голова окажется на той клетке, где был хвост другой змеи, а все тело останется на месте. Таким образом, длина укусившей змеи увеличивается на единицу, а длина укушенной - на единицу уменьшается.

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

Таким образом, суммарная длина участников боя остается постоянной, а длина отдельно взятой змеи является показателем того, насколько успешно воюет именно она. Задача-максимум для пользователя состоит в том, чтобы его змея полностью «съела» всех противников, задача-минимум - добиться того, чтобы его змея имела максимальную длину. На рисунке 2.3 приведен скриншот программы Snake Battle во время проведения турнира.

В самой битве одновременно участвует от двух до четырех змей. Бой с участием четырех змей гораздо интереснее и менее предсказуем, чем с участием пары. Бой заканчивается в одном из четырех случаев:

когда одна змея уничтожила всех противников;

когда ни одна из змей не имеет хода;

когда истекло время боя;

по прерыванию пользователя: «конец боя».


Рис. 2.3. Проведение соревнования роботов в Pascal Robot


Если раунд боя закончился естественным путем (то есть не по последней причине), то, можно снова выбрать опцию «начать бой» и продолжить сражение с участием тех же противников и с сохранением уже набранных очков. Так как фактор случайности играет существенную роль, результат однораундового боя не является особо показательным, так что стоит проводить не менее десяти раундов, для того чтобы достаточно объективно оценить силу противников [11].


2.4 Microsoft Robotics Developer Studio


Microsoft Robotics Developer Studio это среда моделирования и разработки программ управления роботами. Наибольший интерес в MSRS представляет среда визуального програмиирования (программа рисуется, а не пишется) и среда моделирования робота. MSRS очень удобен для изучения основ программирования роботов. Процесс создания программы управления роботом очень увлекателен и интересен. Данный продукт предназначен для академической, любительской или коммерческой разработки и поддерживает большое количество разнообразного аппаратного обеспечения роботов [12].® Robotics Studio (MSRS) позволяет создавать приложения для широкого спектра устройств на основе служб. Этот набор содержит среду выполнения, которая хорошо известна разработчикам Windows® Communication Framework (WCF). Кроме того, он содержит средство языка визуального программирования Visual Programming Language (VPL) и среду визуализации Visual Simulation Environment (VSE).использует среду выполнения, ориентированную на службы, а также программные средства, необходимые для создания и развертывания робототехнических приложений.

Среда выполнения MSRS состоит из двух частей более низкого уровня, которые основаны на CLR 2.0. Две указанные среды выполнения - служба DSS и среда CCR. DSS является облегченным вариантом ориентированной на службы среды выполнения, которая работает на принципах REST (Representation State Transfer), используемых в веб-технологиях. CCR является библиотекой Microsoft.NET Framework, поддерживающей асинхронную обработку процессов. Это особо важно для робототехнических приложений, в которых происходит постоянный обмен данными, поступающими к большому количеству датчиков и исполнительных механизмов и передаваемыми от них [13].

Основным компонентом для построения приложений Microsoft Robotics является служба DSS (DSS Service). По сути, службы DSS являются универсальной концепцией, которая может и должна применяться и вне контекста роботизации. DSS-службы имеют состояния, управляемые сообщениями. Эти сообщения поступают в службу через ее порты.

Сообщения, отправляемые службе, являются классами.NET, которые могут иметь содержательную часть, например, с информацией о том, изменять ли состояние и каким образом, или сведения о запрашиваемых параметрах состояния. Другие сообщения не оперируют с состоянием напрямую, но могут оказывать на него побочные эффекты. Службы обрабатывают такие сообщения, как CREATE, LOOKUP, UPDATE и др. Кроме того, вы сами можете определить сообщения, являющиеся расширениями базовых сообщений.

Порты являются средством взаимодействия служб с внешним миром. Они настраиваются на прием сообщений ограниченного числа типов, определяемых самими службами. Кроме того, порты применяются для внешних коммуникаций в таких случаях, как подписка на уведомления об определенных событиях, поступающие от службы [14].

Библиотека CCR была специально разработана для Microsoft Robotics Studio и входит в состав инсталляционного пакета MSRS.

Приложение, в контексте Robotics Studio, это композиция слабосвязанных параллельно выполняющихся компонент. Такой подход можно реализовать с помощью существующих примитивов многопоточного программирования. Сразу можно сказать, что процесс написание многопоточных приложений является далеко не тривиальным. Библиотек CCR создавалась с целью сделать многопоточное программирование гораздо более простым процессом. При использовании CCR нет необходимости вручную управлять потоками, блокировками, семафорами. Всё это используется в библиотеке, но просто скрыто от пользователя [15].

Наряду со средой исполнения, пакет MSRS содержит программу VPL, позволяющую создавать робототехнические приложения путем простого перетаскивания элементов в рабочую область.основан на программной модели потоков данных, которая хорошо подходит для программирования роботов и широко использует распределенные и параллельные вычисления. VPL состоит из блоков, которые обычно называют Activities. Потоки данных состоят из последовательно соединенных Activities. Блоки Activities могут обозначать различные вещи, например, содержать элементы контроля потоков данных, функции, созданный пользователем код и т.д. Написание программы в VPL заключается в соединении Activities. В VPL данные проходят через соединения Activities. На рисунке 2.4 приведен пример программы написанной на VPL.


Рис. 2.4. Пример программы на VPL


Еще одним важным модулем Robotics Studio является симуляционная среда (Visual Simulation environment - VSE). Microsoft Visual Simulation Environment (VSE) - среда визуализации в Microsoft Robotics Studio (MSRS), которая позволяет экспериментировать со сложными моделями, имеющими в своем составе большое количество роботов и объектов [16]. Она реализует потрясающую идею, а именно - о том, что для программирования роботов сами роботы, в принципе, и не нужны. На рисунке 2.5 приведен пример визуализации в VSE.

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


Рис. 2.5. Пример визуализации в VSE


Физические моменты настолько глубоко продуманы, что становится возможным даже моделирование переворотов роботов, отрыва роботов от земли, столкновения объектов - все что угодно. Одним из примеров использования симуляционной среды является моделирование ринга сумо-роботов (которые стараются вытолкнуть друг друга за пределы ринга) [17].


2.5 Сравнительный анализ


Сравнительная характеристика Java Robocode, Pascal Robot, Snake Battle и среды Microsoft Robotics Developer Studio представлена в сводной таблице «Сравнительная характеристика существующих аналогов» Знаком «+» в таблице отмечено присутствие характеристики, знаком «-» - отсутствие.


Таблица 1. Сравнительная характеристика существующих аналогов

RobocodePascal RobotSnake BattleMSRSПростота написания кода+--+Отображение действий в 3D---+Возможность проведения турниров+++-Составление отчетов по турнирам----Встроенный редактор++-+Действие законов физики---+Переносимость кода на реальные роботы---+Ускорение времени проведения турнира++--Возможность оценивания разработанных роботов+++-Использование большого количества сенсоров---+

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

Из сравнительной таблицы видно, что такие системы как Pascal Robot и Snake Battle являются давно устаревшими и обладают очень скудным функционалом. Процесс демонстрации компьютерных стратегий является малоинформативным и не тривиальным из-за качества изображения. Пользовательский интерфейс практически отсутствует.

Java Robotics является более приемлемой системой для проведения соревнований компьютерных игровых стратегий по сравнению с такими системами как Pascal Robot и Snake Battle. Улучшенная 2D графика, интуитивно понятный интерфейс, наглядность происходящих действий. Но данная система также не лишена недостатков. У роботов имеется незначительный набор приборов, используемый для программирования его поведения. В Java Robotics отсутствует возможность составления отчетов о проведенных турнирах, нет возможности отображения происходящего в 3D, на роботов не действуют законы физики и уж тем более программу, написанную для робота в среде Java Robotics нельзя применить к реально существующему роботу.

Сводная таблица явно демонстрирует, что платформа Microsoft Robotics Developer Studio представляет собой большой интерес создания программного обеспечения для проведения соревнований по программированию компьютерных игровых стратегий. Данная среда прекрасно подходит для программирования роботов, как реальных, так и виртуальных. Программа написанная для виртуального робота может применятся и к реальному роботу, оснащенным необходимым количеством сенсоров. Для этого необходимо только изменить манифест, указать новые порты для сервисов. Возможность демонстрации происходящих с роботами действий в формате 3D делает MSRS намного привлекательнее по сравнению с рассмотренными аналогами. Еще одной важной отличительной чертой среды Microsoft Robotics Developer Studio является наличие 3D physic-based движка, обеспечивающем реалистичность происходящего, все объекты симуляционного мира подчиняются физическим законам.

MSRS имеет ряд преимуществ над рассмотренными системами проведения соревнований компьютерных игровых стратегий, но в данной среде отсутствует главное, инфраструктура для проведения турниров между роботами, т.е. отсутствует внесение кода, разработанного участником в единую игровую среду, отсутствует возможность оценки разработанных роботов, по заданным критериям, Отсутствует возможность составления удобных отчетов о турнирах. Разработанное программное обеспечение в рамках данной дипломной работы решает эти проблемы, что делает платформу Microsoft Robotics Developer Studio лучшей системой для проведения соревнований, по отношению к рассмотренным аналогам.


3. Описание практической реализации по «проведение соревнований по программированию компьютерных игровых стратегий»


3.1 Функциональные особенности


Программное обеспечение «Проведение соревнований по программированию компьютерных игровых стратегий» является клиент-серверным приложением и обеспечивает выполнение следующих функций:

регистрация участников соревнований в системе;

аутентификация пользователей;

загрузка на сервер проектов участников;

возможность запуска на клиентской стороне собственных загруженных роботов;

сохранение результатов соревнований на сервере;

предоставление необходимой обучающей литературы;

формирование отчетов по проведенным турнирам;

предоставление пользователю новостей о проекте, предстоящих и прошедших турнирах;

загрузка необходимых ресурсов с сервера на локальный компьютер.

Серверная часть приложения предоставляет следующие возможности:

предоставление пользователю доступа к загруженным им проектам;

возможность предоставить общий доступ к загруженным документам администраторам соревнований;

надёжное хранение данных на сервере;

запуск на выполнение проектов участников;

сохранение результатов турнира в БД.

3.2 Входные и выходные данные


Входы:

1.Регистрация пользователя

Пользователь вводит следующие данные:)имя;)фамилия;)отчество;)контактный телефон;)город;)университет;)логин;)пароль.

.Аутентификация пользователя

Пользователь вводит следующие данные:)логин;)пароль;

3. Загрузка проектов на сервер

Проект должен быть предоставлен следующим образом:)уникальное название;)формат - обязательно txt;)путь к файлу в локальной дисковой подсистеме;

. Запуск проекта на выполнение

Запуск проекта на выполнение должен быть предоставлен следующим образом:)имя робота;)наименование карты;

Выходы:

1. Формирование отчетов по турнирам

Отчет можно представить следующим образом:)тип соревнования;)место;)имя робота;)наименование карты;)результат.

. Логирование результатов соревнования

Данные для логирования можно представить следующим образом:)имя робота;)наименование карты;)результат.

. Загрузка необходимых ресурсов на локальный компьютер

Результатом является загруженные на локальный компьютер в указанную директорию необходимые ресурсы.

Запросы:

1. запрос на запуск соревнования;

. запрос на загрузку проектов на сервер;

. запрос на загрузку необходимых ресурсов с сервера на локальный компьютер;

. запрос на просмотр обучающей литературы;

. запрос на просмотр новостей.


3.3 Функциональные диаграммы и схема потоков данных ПО


Для наглядного представления работы и информационных потоков следует составить необходимые диаграммы. При проектировании системы необходимо чётко представлять структуру предметной области, и в этом могут помочь диаграммы стандарта IDEF.

Построение модели предметной области начинается с создания контекстной диаграммы IDEF0 - диаграммы самого высокого уровня в модели. На контекстной диаграмме присутствует всего один функциональный блок, соответствующей основной функции, реализуемой моделируемой системой (рис. 3.1).


Рис. 3.1. Контекстная диаграмма разрабатываемого ПО


Цель моделирования: подготовка к внедрению системы проведения соревнований компьютерных игровых стратегий.

Точка зрения: пользователь.

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

Функцию, приведённую на контекстной диаграмме, можно разбить на более мелкие функции и описать их взаимодействие на диаграмме нижнего уровня (рис. 3.2).


Рис. 3.2. Декомпозиция контекстной диаграммы


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

Диаграммы IDEF0 и IDEF3 основное внимание уделяют описанию функционирования системы, и не учитывают информационные потоки, существующие в ней. Для дополнения модели системы описанием информационных потоков, используются диаграммы потоков данных (Data Flow Diagrams, DFD). Модель DFD описывает процесс переработки информации от поступления в систему до выдачи пользователю. На рисунке 3.4 представлена модель информационных потоков процесса поиска документов.

Рис. 3.3. Детализированная IDEF3-диаграмма работы системы


Рис. 3.4. Диаграмма модели потоков данных

3.4 Выбор программного обеспечения


.4.1 Платформа Microsoft.NET

Для разработки программного обеспечения «Robotics Championship» была выбрана платформа Microsoft.NET Framework, язык программирования - C#.

Microsoft.NET Framework - программная платформа, выпущенная компанией Microsoft. Фактически представляет собой операционную систему внутри операционной системы. Отличительной особенностью.NET Framework является способность выполнять программы, написанные на разных языках программирования [18].

Microsoft.NET Framework обладает следующими функциональными способностями:

Полноценная функциональная совместимость с существующим программным кодом;

Полная и тотальная интеграция языков. В.NET поддерживается межъязыковое наследование, межъязыковая обработка исключений и межъязыковая отладка кода;

Общий исполняющий механизм, разделяемый всеми поддерживающими.NET языками. Одним из аспектов этого механизма является наличие хорошо определенного набора типов, которые может понимать каждый поддерживающий.NET язык;

Обширная библиотека базовых классов. Эта библиотека позволяет избегать сложностей, связанных с выполнением прямых вызовов к API, и предлагает согласованную объективную модель, которую могут использовать все поддерживающие.NET языки [19].

Microsoft.NET Framework состоит из двух частей: общеязыковой исполняющей среды (common language runtime, CLR) и библиотеки классов (Framework Class Library, FCL). CLR предоставляет модель программирования, используемую во всех типах приложений. У CLR собственный загрузчик файлов, диспетчер памяти (сборщик мусора), система безопасности (безопасность доступа к коду), пул потоков и другое. Кроме того, CLR предоставляет объектно-ориентированную модель программирования, определяющую, как выглядят и ведут себя типы и объекты.

FCL предоставляет объектно-ориентированный API-интерфейс, используемый всеми моделями приложений. В ней содержатся определения типов, которые позволяют разработчикам выполнять ввод / вывод, планирование задач в других потоках, создавать графические образы, сравнивать строки и т.п. Естественно, что все эти определения типов соответствуют существующей CLR в модели программирования [20].

Как уже упоминалось, в каркасе Framework. Net можно выделить два основных компонента, это статический компонент (библиотека классов каркаса, FCL) и динамический компонент (общеязыковая исполнительная среда, CLR).

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

Важной частью библиотеки FCL являются классы, задающие примитивные типы - те типы, которые считаются встроенными в язык программирования. Типы каркаса покрывают все множество встроенных типов, встречающихся в языках программирования. Типы языка программирования проецируются на соответствующие типы каркаса. Тип, называемый в языке Visual Basic - Integer, а в языке C# - int, проецируется на один и тот же тип каркаса System. Int32. В каждом языке программирования, наряду с «родными» для языка названиями типов, разрешается пользоваться именами типов, принятыми в каркасе. Поэтому, по сути, все языки среды разработки могут пользоваться единой системой встроенных типов, что, конечно, способствует облегчению взаимодействия компонентов, написанных на разных языках.

Частью библиотеки стали не только простые встроенные типы, но и структурные типы, задающие организацию данных - строки, массивы, перечисления, структуры (записи). Это также способствует унификации и реальному сближению языков программирования.

Существенно расширился набор возможных архитектурных типов построения приложений. Помимо традиционных Windows- и консольных приложений, появилась возможность построения Web-приложений. Большое внимание уделяется возможности создания повторно используемых компонентов - разрешается строить библиотеки классов, библиотеки элементов управления и библиотеки Web-элементов управления. Популярным архитектурным типом являются Web-службы, ставшие сегодня благодаря открытому стандарту одним из основных видов повторно используемых компонентов. Для языков C#, J#, Visual Basic, поддерживаемых Microsoft, предлагается одинаковый набор из 12 архитектурных типов приложений. Несколько особняком стоит Visual С++, сохраняющий возможность работы не только с библиотекой FCL, но и с библиотеками MFC и ATL, и с построением соответствующих MFC и ATL-проектов. Компиляторы языков, поставляемых другими фирмами, создают проекты, которые удовлетворяют общим требованиям среды, сохраняя свою индивидуальность.

Число классов библиотеки FCL велико (несколько тысяч). Поэтому понадобился способ их структуризации. Логически классы с близкой функциональностью объединяются в группы, называемые пространством имен (Namespace). Для динамического компонента CLR физической единицей, объединяющей классы и другие ресурсы, является сборка (assembly).

Основным пространством имен библиотеки FCL является пространство System, содержащее как классы, так и другие вложенные пространства имен. Так, уже упоминавшийся примитивный тип Int32 непосредственно вложен в пространство имен System и его полное имя, включающее имя пространства - System. Int32.

В пространство System вложен целый ряд других пространств имен. Например, в пространстве System. Collections находятся классы и интерфейсы, поддерживающие работу с коллекциями объектов - списками, очередями, словарями. В пространство System. Collections, в свою очередь, вложено пространство имен Specialized, содержащие классы со специализацией, например, коллекции, элементами которых являются только строки. Пространство System. Windows. Forms содержит классы, используемые при создании Windows-приложений. Класс Form из этого пространства задает форму - окно, заполняемое элементами управления, графикой, обеспечивающее интерактивное взаимодействие с пользователем [21].

Среда CLR управляет памятью, выполнением потоков, выполнением кода, проверкой безопасности кода, компиляцией и другими системными службами. Эти средства являются внутренними для управляемого кода, который выполняется в среде CLR.

Среда выполнения обеспечивает управление доступом для кода. Например, пользователи могут доверить исполняемому приложению, внедренному в веб-страницу, воспроизведение анимации на экране или звукозаписи, не позволяя ему при этом получить доступ к личным данным, файловой системе или сети. Таким образом, средства безопасности CLR предоставляют подлинному развернутому в Интернете программному обеспечению исключительно богатые функции.

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

Среда выполнения разработана для повышения производительности. Хотя общеязыковая среда выполнения предоставляет многие стандартные службы времени выполнения, управляемый код никогда не интерпретируется. Средство компиляции по требованию (JIT) позволяет всему управляемому коду выполняться на машинном языке компьютера. Между тем диспетчер памяти устраняет возможность фрагментации памяти и увеличивает объем адресуемой памяти для дополнительного повышения производительности.

И наконец, среда выполнения может размещаться в высокопроизводительных серверных приложениях, таких как Microsoft® SQL Server™ и Internet Information Services (IIS). Такая инфраструктура позволяет использовать управляемый код для написания собственной логики программ, пользуясь при этом высочайшей производительностью лучших производственных серверов, которые поддерживают размещение среды выполнения [22].


3.4.2 Выбор языка программирования

Для реализации ПО был выбран язык программирования C#. Разработанное ПО взаимодействует со средой Microsoft Robotics Developer Studio. Написание сервисов для платформы MSRS возможно только с помощью языка C#.

Из-за того, что платформа.NET так радикально отличается от предыдущих технологий, Microsoft разработала специально под нее новый язык программирования C#. В него входит много полезных особенностей - простота, объектная ориентированность, типовая защищенность, «сборка мусора», поддержка совместимости версий и многое другое. Данные возможности позволяют быстро и легко разрабатывать приложения, особенно COM приложения и Web сервисы. При создании C#, его авторы учитывали достижения многих других языков программирования: C++, C, Java, SmallTalk, Delphi, Visual Basic и т.д. По причине того, что C# разрабатывался с чистого листа, у его авторов была возможность оставить в прошлом все неудобные и неприятные особенности любого из предшествующих ему языков. В результате получился простой, удобный и современный язык, по мощности не уступающий С++, но существенно повышающий продуктивность разработок.

Ввиду очень удобного объектно-ориентированного дизайна, C# является хорошим выбором для быстрого конструирования различных компонентов - от высокоуровневой бизнес логики до системных приложений, использующих низкоуровневый код. Также следует отметить, что C# является и Web ориентированным - используя простые встроенные конструкции языка разрабатываемы компоненты могут быть легко превращены в Web сервисы, к которым можно будет обращаться из Internet посредством любого языка на любой операционной системе. Дополнительные возможности и преимущества перед другими языками приносит в C# использование передовых Web технологий, таких как: XML (Extensible Markup Language) и SOAP (Simple Object Access Protocol). Среда разработки Web сервисов позволяет программисту смотреть на существующие сегодня Web приложения, как на родные C# объекты, что дает возможность разработчикам соотнести имеющиеся Web сервисы с их познаниями в объектно-ориентированном программировании [23].

Ниже приведен частичный перечень базовых функциональных возможностей языка C#, которые присутствуют во всех его версиях:

Не требует никаких указателей;

Автоматическое управление памятью посредством сборки мусора;

Формальные синтаксические конструкции для классов, интерфейсов, структур, перечислений и делегатов;

Аналогичная С++ возможность перегружать операции для пользовательских типов, но без лишних сложностей;

Поддержка программирования на базе атрибутов. Это направление в технологиях разработки позволяет снабжать типы и их членов аннотациями и тем самым еще больше уточнять их поведение.

С выходом версии.NET 2.0 язык программирования C# был обновлен так, чтобы он мог поддерживать все новые возможности. Наиболее заметные добавления перечислены ниже:

Возможность создания обобщенных типов и обобщенных членов;

Поддержка для анонимных методов, которые позволяют предоставить встраиваемую функцию везде, где требуется тип делегата;

Многочисленные упрощения в модели «делегат-событие»;

Возможность определения одного типа в нескольких файлах кода с помощью ключевого слова partial.

В NET 3.5 язык программирования C# был оснащен еще большим количеством дополнительных функциональных возможностей, наиболее важные из которых перечислены ниже:

Поддержка запросов LINQ;

Возможность расширять функциональные возможности существующего типа с помощью методов расширения;

Возможность использовать ламбда-операцию;

Новый синтаксис для инициализации объектов [24].


3.4.3 Выбор СУБД

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

При выборе СУБД необходимо обратить внимание на следующие показатели:

Производительность и масштабируемость;

Максимальное количество пользователей, одновременно обращающихся к БД;

Серверная операционная система;

Надежность;

Производительность труда разработчиков.

Сравнительная характеристика наиболее распространенных СУБД представлена в сводной таблице «Сравнительная характеристика СУБД».


Таблица 2. Сравнительная характеристика СУБД

AccessMS SQLMySQLOracleПоддержка многопользовательского подключениянетдададаСкорость работынизкаявысокаявысокаявысокаяМеханизмы доступа к даннымOLE/ADO DB, ODBCODBC, OLE DB/ADO, ADO.NET, LINQ to SQLODBC, OLE DB/ADO, ADO.NET, LINQ to SQLODBC, JDBC и ADO/OLE DBСтоимость администрированияНизкаяПриемлемаяПриемлемаяВысокаяТребования к аппаратной платформеНизкиеПриемлемыеПриемлемыеВысокие

Из сравнительной таблицы видно, что такие СУБД как Microsoft SQL Server 2008 и MySQL отвечают всем необходимым требованиям, а именно:

Поддержка многопользовательского подключения;

Высокая скорость работы;

Низка трудоемкость поддержания работоспособности СУБД;

Поддержка использования технологии LINQ To SQL;

Высокая надежность хранения данных.

Выбор сделан в пользу MS SQL Server 2008, так как Microsoft SQL Server 2008 превосходит MySQL как платформу данных во всех существенных областях. Он обеспечивает доступ к обширным ресурсам, ведущую в отрасли производительность и масштабируемость корпоративного класса, высочайший уровень безопасности, высочайший уровень доступности, комплексную платформу бизнес-аналитики (BI) - и все при довольно низкой совокупной стоимости владения (TCO) [25].


3.4.4 Microsoft SQL Server 2008

Microsoft SQL Server - система управления реляционными базами данных (СУБД), разработанная корпорацией Microsoft. Основной используемый язык запросов - Transact-SQL, создан совместно Microsoft и Sybase. Transact-SQL является реализацией стандарта ANSI/ISO по структурированному языку запросов (SQL) с расширениями. Используется для работы с базами данных размером от персональных до крупных баз данных масштаба предприятия; конкурирует с другими СУБД в этом сегменте рынка [26].

Система SQL Server 2008 отталкивается от концепции платформы данных Майкрософт: она упрощает управление любыми данными в любом месте и в любой момент времени. Она позволяет хранить в базах данных информацию, полученную из структурированных, полуструктурированных и неструктурированных источников, таких как изображения и музыка. В SQL Server 2008 имеется большой набор интегрированных служб, расширяющих возможности использования данных: вы можете составлять запросы, выполнять поиск, проводить синхронизацию, делать отчеты, анализировать данные. Все данные хранятся на основных серверах, входящих в состав центра обработки данных. К ним осуществляется доступ с настольных компьютеров и мобильных устройств. Таким образом, вы полностью контролируете данные независимо от того, где вы их сохранили.

Система SQL Server 2008 позволяет обращаться к данным из любого приложения, разработанного с применением технологий Microsoft.NET и Visual Studio, а также в пределах сервисно-ориентированной архитектуры и бизнес-процессов - через Microsoft BizTalk Server. Сотрудники, отвечающие за сбор и анализ информации, могут работать с данными, не покидая привычных приложений, которыми они пользуются каждый день, например приложений выпуска 2007 системы Microsoft Office. SQL Server 2008 позволяет создать надежную, производительную, интеллектуальную платформу, отвечающую всем требованиям по работе с данными [27].


3.4.5 Microsoft Silverlight

Microsoft Silverlight - это программная платформа, включающая в себя плагин для браузера, который позволяет запускать приложения, содержащие анимацию, векторную графику и аудио-видео ролики, что характерно для RIA (Rich Internet application) [28].

Silverlight позволяет создавать насыщенные, визуально привлекательные веб-страницы, работающие в различных обозревателях, устройствах и настольных операционных системах (например Apple Macintosh). Ключом к возможностям Silverlight, как и ко всей технологии представления WPF (Windows Presentation Foundation) платформы Microsoft.NET Framework 3.0, является XAML (eXtensible Application Markup Language, расширяемый язык разметки приложений).

Технология ASP.NET стала вехой на пути разработчика к быстрому созданию качественных веб-приложений с помощью парадигмы разработки на стороне сервера и оптимально подобранных инструментов серии Visual Studio. Самым большим барьером для веб-приложений стал интерфейс пользователя, где технические ограничения помешали предоставить то же удобство, что и клиентские приложения для ПК, работающие с локальными данными.

Объект XMLHttpRequest, выпущенный Майкрософт в составе Internet Explorer 5 в 2000 г., открыл дорогу для технологии Asynchronous JavaScript и XML (AJAX), позволившей веб-приложениям более динамично реагировать на действия пользователя, обновляя небольшие части веб-страницы и не требуя ее полной перезагрузки. Инновационные решения, построенные на основе AJAX, например карты Windows Live Local, приблизили веб-приложения к уровню удобства обычных клиентских программ.

Технология Silverlight - следующий шаг на пути расширения возможностей, которые разработчики и дизайнеры могут предоставить потребителям. Она дает дизайнерам возможность выразить свои творческие идеи и сохранить результат в том формате, который можно сразу же публиковать в Интернете. Дизайнеры могли и раньше проектировать веб-страницы, предоставляющие богатые возможности пользователю, но программисты, реализующие их замыслы, были вынуждены считаться с ограничениями веб-платформ. В рамках модели Silverlight любое созданное дизайнерами решение сохраняется в виде XAML. Этот XAML-документ впоследствии автоматически встраивается в веб-страницу с помощью среды выполнения Silverlight. В результате дизайнер и программист могут работать над конечным результатом более слаженно, чем когда-либо ранее.

Поскольку технически XAML - это XML, он представляет собой простой текст, а значит, не вызывает конфликтов с брандмауэрами, легко доступен для просмотра, и при этом описывает различное содержимое. Некоторые технологии - Java, ActiveX, Flash - в настоящее время широко применяются в дополнение к языкам DHTML, CSS и JavaScript и расширяют содержимое веб-страниц, но их роднит один недостаток - данные передаются в обозреватель в двоичном виде. Такую информацию сложно проверить на предмет безопасности, не говоря уже о сложности ее обновления - для реализации любых изменений требуется переустановка всего приложения, что неудобно для пользователя и зачастую приводит к торможению веб-страниц. При изменении содержимого страницы средствами Silverlight новый XAML-файл создается на стороне сервера. При следующем просмотре страницы происходит загрузка этого файла, а значит, потребность в переустановке отпадает.

Сердцем технологии Silverlight является модуль расширения для обозревателя, который обрабатывает XAML и отображает итоговое изображение в поле обозревателя. Загрузочный файл невелик (менее 2 MБ), и может быть установлен при посещении пользователем узла с содержимым, создававшимся с использованием Silverlight. Модуль предоставляет разработчикам доступ к функциям XAML-страницы на языке JavaScript, таким образом, становится возможным взаимодействие с содержимым на уровне страницы и разработчик может, например, создать обработчики событий или управлять содержимым XAML-страницы с помощью JavaScript-кода [29].


3.4.6 Visual Programming Language (VPL)

Программирование роботов в среде Microsoft Robotics Developer Studio осуществляется с помощью визуального языка программирования Visual Programming Language (VPL).

Microsoft Visual Programming Language - язык визуального и поточного программирования, разработанный корпорацией Microsoft для платформы Microsoft Robotics Developer Studio. Microsoft Visual Programming Language выделяется среди прочих языков программирования Microsoft, таких как например, Visual Basic и C#, тем, что он единственный является настоящим языком визуального программирования.

VPL основан на программной модели потоков данных, которая хорошо подходит для программирования роботов и широко использует распределенные и параллельные вычисления. VPL состоит из блоков, которые называют Activities (Активность). Потоки данных состоят из последовательно соединенных Activities. Блоки Activities могут обозначать различные вещи, например, содержать элементы контроля потоков данных, функции, созданный пользователем код и т.д. Написание программы в VPL заключается в соединении Activities. В VPL данные проходят через соединения Activities. На рисунке 3.5 приведен пример потока данных.


Рис. 3.5. Пример потока данных в VPL


Блоки Activities соединяются через кружки и треугольники. Они называются соединительными разъемами (connection pins). Разъемы слева - входные, справа - выходные. Когда подключается входной разъем, то необходимо выбрать действие / оператор к которому происходит обращение. Когда Activities получает входное сообщение, оно активируется, обрабатывает входные данные и запускает код.

У Activities два выходных разъема. Треугольный разъем предназначен для вывода результатов. Выводимый результат дается как ответ на специальный запрос (наподобие вызова функции и возвращения значения или отправки письма и получения ответа на него). Круглый разъем предназначен для отправки сообщений. Сообщения обычно отправляются в результате изменения внутреннего состояния или каких-то событий. Activities также позволяют отправлять сообщения в ответ на входящие сообщения. Важно отметить, что вывод результата происходит один раз, а сообщения отправляются неоднократно [30].

Для составления программы в VPL используется два типа блоков Activities: Basic Activities и Services. Блоки Basic Activities служат для организации алгоритмической части программы. Это блоки циклов, ветвления, объединения, коллекций и другие. Блоки Services - это DSS сервисы, они позволяют взаимодействовать с аппаратной частью робота. Также можно писать свои собственные блоки DSS Services.

3.4 Функциональные возможности ПО


.4.1 Загрузка файлов на сервер

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

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

При использовании технологии Silverlight, работая с файлами можно читать выбранный пользователем в диалоге файл по произвольному смещению буфера произвольного размера. При этом размер файла в Silverlight ограничен 64-битным числом, т.е. можно загружать файлы практически бесконечного размера (теоретически до 16 384 ПБ) [31].

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

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

Затем клиент посылает кусок файла, указывая диапазон посланных байт в заголовке X-Content-Range (из-за ограничений Silverlight используется этот заголовок вместо стандартного для HTTP заголовка Content-Range, хотя серверный модуль поддерживает оба заголовка [32]) и идентификатор сессии в заголовке Session-ID. При этом в теле запроса посылаются чисто бинарные данные, т.е. содержимое куска.

В заголовке Range-ответа от сервера приходит список диапазонов байт этого файла, которые уже загружены на сервер. Также этот список продублирован в теле ответа.

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

Для сохранения файлов на сервере используется Windows Communication Foundation (WCF) сервис. Ниже приведен код метода сервиса, для сохранения файла:


public void SaveFile (UploadFile UploadFile, string filePath)

{FileStream = new FileStream (string. Format(«{0}\\{1}», filePath, UploadFile. FileName), FileMode. Create);. Write (UploadFile. File, 0, UploadFile. File. Length);. Close();

}


После создания WCF-сервиса, необходимо поменять тип «биндинга», который указан в файле Web.config. Причиной этому служит то, что Silverlight приложения могут работать только с basicHttpBinding «биндингом». В итоге получился следующий код:


<services>

<service behaviorConfiguration= «ReceiverBehavior» name= «Receiver»>

<endpoint address=«» binding= «basicHttpBinding» contract= «IReceiver»>

<identity>

<dns value= «localhost»/>

</identity>

</endpoint>

<endpoint address= «mex» binding= «mexHttpBinding» contract= «IMetadataExchange»/>

</service>

</services>


Также в файле web.config необходимо указать максимальные размеры передаваемых файлов:


<bindings>

<basicHttpBinding>

<binding name= «ServicesBinding» maxReceivedMessageSize= «2000000» maxBufferSize= «2000000»>

<readerQuotas maxArrayLength= «2000000» maxStringContentLength= «2000000»/>

</binding>

</basicHttpBinding>

</bindings>

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


fileDialog = new OpenFileDialog();

fileDialog. Multiselect = false;. Filter = «All Files|*.*»;? retval = fileDialog. ShowDialog();(retval!= null && retval == true)

{strm = fileDialog. File. OpenRead();[] Buffer = new byte [strm. Length];. Read (Buffer, 0, (int) strm. Length);. Dispose();. Close();. UploadFile file = new FileUploadService. UploadFile();. FileName = fileDialog. File. Name;. File = Buffer;. SaveFileAsync(file);. SaveFileCompleted += new EventHandler<System. ComponentModel. AsyncCompletedEventArgs>(proxy_SFCompleted);

}. Text = «Не был выбран файл для загрузки на сервер!»;

void proxy_SFCompleted (object sender, System. ComponentModel. AsyncCompletedEventArgs e)

{(e. Error == null). Text=fileDialog. File. Name+» Успешно загружен на сервер!»;. Text=fileDialog. File. Name+» не загружен на сервер!»;

}


3.4.2 Взаимодействие клиентской части с БД

В отличие от технологии ASP.NET, при использовании Silverlight, взаимодействие с базой данных не может происходить напрямую из клиентской части. Для взаимодействия с БД необходимо использовать Windows Communication Foundation (WCF) сервис.

На серверной части приложения создается WCF сервис. В интерфейсе прописывается контракт взаимодействия с методами сервиса. Все необходимые методы для вызова из клиентской части должны бить помечены атрибутом OperationContract, а сам интерфейс - атрибутом ServiceContract. Атрибуты DataContract и DataMember будут использоваться WCF для сериализации и передачи данных. Данными атрибутами помечаются классы и их объекты, учавствующие в передаче данных. Ниже приведен пример интерфейса, получения из БД информации из таблицы новостей:


[ServiceContract]interface IGetSetNews

{

[OperationContract]<AppCode. New> GetNews();

}


В методе класса, который подписан на данный интерфейс, формируется и выполняется необходимый запрос к БД. Данный класс, и его объекты никакими атрибутами не описываются:


public class GetSetNews: IGetSetNews

{List<AppCode. New> GetNews()

{.DBclassesDataContext db = new AppCode.DBclassesDataContext();news = from prod in db. News select prod;news. ToList();

}

}


После того, как WCF описан, необходимо в проекте Silverlight добавить сервисную ссылку содержащую необходимый метод. Чтобы в классе Silverlight приложения получить возможность работать с добавленным сервисом, необходимо программно установить ссылку с помощью ключевого слова using. После чего необходимо описать обработчик события, взаимодействия с созданным сервисом:


NewsReferences. GetSetNewsClient webSrvc = new NewsReferences. GetSetNewsClient();. GetNewsCompleted += new EventHandler<GetNewsCompletedEventArgs>

(webSrvc_GetNewsCompleted);. GetNewsAsync();

…void webSrvc_GetNewsCompleted (object sender, GetNewsCompletedEventArgs e)

{<GetPersonsInfo. New> textsNews = e. Result. ToList();

}


3.4.3 Тестовый запуск загруженного проекта

Для того, чтобы пользователь мог тестировать загруженные проекты, ему необходимо запустить визуализацию выполнения логики робота. Для этой цели участнику соревнований необходимо запустить стороннюю программу MSRS. Используя WScript. Shell API можно выполнить любую команду, и запустить любую программу с клиентской стороны проекта Silverlight.

Ниже приведен программный код, демонстрирующий запуск приложения, написанного на визуальном языке программирования, и передачи команды выполнения проекта:


private void txtOpenProgram_Click (object sender, RoutedEventArgs e)

{(dynamic shell =. CreateObject («WScript. Shell»))

{. Run (@ «C:\windows\VPL.exe»);. SendKeys({F5});

}

}

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


3.4.4 Запуск турнира

Запуск турнира заметно отличается от тестового запуска проекта. Тестовый запуск производится участником соревнования, на клиентской машине. Во время теста запускается всего один проект. Совсем иначе, происходит запуск турнира. Запуск турнира происходит на сервере, запускается подряд сразу несколько проектов, правами на запуск обладают только администраторы системы.

После запуска администратором турнира, происходит последовательный запуск зарегистрированных на конкретном соревновании проектов участников. Благодаря последовательному запуску, нагрузки на сервер во время проведения турнира увеличиваются не на много, чего нельзя было бы избежать при параллельном запуске.

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

Для каждой карты соревнований имеется максимально придельное время прохождения. Данный показатель необходим для того, чтобы робот, который не смог справится с задачей, не мог «подвесить» проведение турнира. Как только выполнение роботом программы превышает максимально допустимое время, в БД заносится информация о том, что робот не выполнил задачу и происходит запуск на выполнение следующего робота из списка зарегистрированных проектов. Если же робот достиг поставленных целей, то его результат заносится в БД и происходит запуск следующего робота. Ниже приведен программный код запуска выбранного проекта на сервере:


public void LaunchProject (string fileName)

{MyProc = new Process();. StartInfo. FileName = filename;. Start();procName = MyProc. ProcessName;. WaitForInputIdle(20000);. Sleep(20000);. SendWait(«{F5}»);

Proc. WaitForExit();;

}


Администратор запускает турнир, также пользуясь разработанным ПО. Т.к. клиентская часть реализована на Silverlight, то для запуска проектов на сервере необходимо использовать Windows Communication Foundation (WCF) сервис.


3.4.5 Регистрация пользователя в системе

Получить доступ к ресурсам сайта могут только авторизованные пользователи. Поэтому новые участники соревнований обязаны пройти регистрацию в системе.

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

При регистрации нового пользователя происходит присвоение соответствующей роли: обычного пользователя, либо администратора системы. Поле «роль» заполняется автоматически, в зависимости от типа регистрации. Нового администратора может добавить только уже зарегистрированный в системе администратор. Участники соревнований регистрируются в системе самостоятельно, без обращения к администратору проекта.

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

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

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

Для шифрования паролей хорошо подходит алгоритм MD5. По данному алгоритму, возвращается значение в виде 32-разрядной шестнадцатеричной строки. Т.е. имея любой длины набор символов (строку) и применив к ней алгоритм шифрования MD5, на выходе получается строка в 32 символа, причем в 16-ричном представлении. Ниже приведен программный создания хеша пароля, с применением алгоритма MD5:


using System. Security. Cryptography;GetHashString (string password)

{[] bytes = Encoding. Unicode. GetBytes(password);CryptoServiceProvider CSP =MD5CryptoServiceProvider();[] byteHash = CSP. ComputeHash(bytes);hash = string. Empty;(byte b in byteHash)+= string. Format(«{0:x2}», b);

return hash;

}


Расшифровке зашифрованные по MD5 данные не поддаются, а потому проверка пароля зарегистрированного пользователя при попытке входа в систему также приводится путем вычисления хеш-значения вводимого пароля и только после этого сравнивается со значением находящимся в БД.


3.4.6 Видеоплеер для страницы обучения

Среда программирования роботов Microsoft Robotics Developer Studio и визуальный язык программирования, входящий в состав среды, являются новыми разработками и существенно отличаются от предыдущих продуктов. Изначально пользователю может быть непонятно как взаимодействовать со средой, руководствуясь предоставленными инструкциями. Поэтому в целях упрощения обучения участников соревнований, авторизованным пользователям предоставлен ряд видео уроков, для более наглядного предоставления данной среды. Для возможности отображения видео, а также управления просмотром, был написан видеоплеер.

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

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


public VideoPage()

{();_Media. Source = new Uri (AppCode. StaticsParameters.videoSource, UriKind. Relative);. Checked += new RoutedEventHandler (btnPlayPause_Checked);. Unchecked += new RoutedEventHandler (btnPlayPause_Unchecked);. Checked += new RoutedEventHandler (btnMute_Checked);. Unchecked += new RoutedEventHandler (btnMute_Unchecked);_Media. CurrentStateChanged += new RoutedEventHandler (C_Media_CurrentStateChanged);. MouseLeftButtonUp += new MouseButtonEventHandler (sliderScrubber_MouseLeftButtonUp);. MouseLeftButtonDown += new MouseButtonEventHandler (sliderScrubber_MouseLeftButtonDown);. MouseMove +=new MouseEventHandler (sliderScrubber_MouseMove);. ValueChanged += new RoutedPropertyChangedEventHandler<double>(sliderVolume_ValueChanged);= new DispatcherTimer();. Interval = TimeSpan. FromMilliseconds(50);. Tick += new EventHandler (timer_Tick);

}


Ниже приведен программный код, позволяющий изменять ползунок воспроизведения видео, и отображающий время с момента начала воспроизведения:


void timer_Tick (object sender, EventArgs e)

{(C_Media. NaturalDuration. TimeSpan. TotalSeconds > 0 &&! IsVideoScrubberLocked)

{. Value = C_Media. Position. TotalSeconds /_Media. NaturalDuration. TimeSpan. TotalSeconds;. Text = string. Format(«{0:00}: {1:00}»,_Media. Position. Minutes, C_Media. Position. Seconds);

}

}


3.4.7 Составление отчетов

Для составления отчетов в разработанном программном обеспечении используется стандартный элемент управления DataGrid. Данный элемент предоставляет гибкий способ для отображения коллекции данных в виде строк и столбцов.

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

Для удобства просмотра содержимого таблицы, имеется возможность сортировки данных. Для сортировки данных таблицы по какому-либо атрибуту, необходимо кликнуть на заголовок соответствующего столбца. Также имеется возможность изменения положения столбцов. Для этого необходимо выбрать атрибут и перенести его в новое положение.


3.4.8 DSS сервис «FileWriter» для VPL

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

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

Ниже приведен программный код разработанного сервиса:


[ServiceHandler (ServiceHandlerBehavior. Exclusive)]void WriteMessageHandler (WriteMessage writeMessage, string filePath, string robotName, string mapName)

{fileName = filePath;message = writeMessage. Body. Message;(message == «start»)

{sw = new StreamWriter (fileName, false);t = (DateTime. UtcNow - new DateTime (1970, 1, 1));dateTimeNow = t. TotalMilliseconds. ToString();. Write(dateTimeNow);. Close();

}(message == «stop»)

{sw = new StreamWriter (fileName, true);t = (DateTime. UtcNow - new DateTime (1970, 1, 1));dateTimeNow =. Format («\n{0}\n{1}\n{2}», t. TotalMilliseconds. ToString(),, mapName);. Write(dateTimeNow);. Close();

}}


Как только робот совершает свое первое движение, запускается сервис «FileWriter», на вход подается ключевое слово «start», происходит запись в указанный файл время начала запуска робота. При достижении роботом цели, снова вызывается разработанный сервис, но на вход подается ключевое слово «stop». В этом случае происходить дополнение файла, заносится время завершения выполнения роботом задачи, а также дописываются данные о роботе и название карты, на которой происходило соревнование.

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

При удачном выполнении поставленной перед роботом задачи, в файл записывается время начала и завершения работы. В этом случае разница конечного и начального времени получается положительной и в БД записывается итоговый результат для данного робота. Если же работа среды VSE была аварийно завершена, либо робот не смог справиться с поставленной задачей, время завершения выполнения не заносится в файл. В этом случае разница времени будет отрицательной и в базу данных заносится информация о неудаче попытки выполнения поставленных перед роботом задач.


3.5 Описание веб-интерфейса клиентской части


Клиентская часть разработанного ПО написана с помощью технологии Silverlight. Silverlight - это программная платформа, включающая в себя плагин для браузера, который позволяет запускать приложения, содержащие анимацию, векторную графику и аудио-видео ролики, что характерно для RIA (Rich Internet application). Плагин совместим с разными браузерами, которые используют операционные системы Mіcrosoft Wіndows и Mac OS X.

Основными страницами клиентской части являются следующие:

.Страница регистрации (RegistrPage.xaml). Все пользователи сайта должны быть зарегистрированы в системе. Переход на данную страницу возможен при неверном входе.

.Страница авторизации (FailureLogin.xaml). Пользователи не могут просматривать страницы сайта, пока не пройдут авторизацию. При попытке зайти на какую-либо страницу неавторизованный пользователь будет перенаправлен на страницу авторизации. Также пользователь будет перенаправлен на страницу авторизации, если он нажал кнопку выхода.

.Домашняя страница (HomePage.xaml). Является единственной страницей сайта, доступ к которой имеют неавторизованные пользователи. На данной странице содержится информации описания проекта «Robotics Championship».

.Странница новостей (NewsPage.xaml). Данная страница предоставляет пользователям информацию о прошедших и предстоящих турнирах, а также об изменениях в самом проекте.

.Страница ресурсов (LinksPage.xaml). Предоставляет возможность получения пользователями всех необходимых ресурсов для принятия участия в соревнованиях.

.Страница обучения (LiteraturePage.xaml). Предоставляет авторизованным пользователям доступ к ресурсам обучения, таким как текстовые файлы, а также присутствует возможность просмотра видео.

.Страница результатов (ResultsPage.xaml). На данной странице пользователи могут составлять отчеты по прошедшим турнирам.

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

.Страница загрузки файлов на сервер (UploadFileStep1.xaml). Позволяет загрузить на сервер проекты участников.

.Страница регистрации роботов на турнир (RegRobotsPage.xaml). Позволяет участникам соревнований зарегистрировать своих роботов на один из предложенных турниров.

.Страница запуска (RunProject.xaml). Позволяет участникам соревнования произвести тестовый запуск своего проекта. Администраторам предоставляется возможности запуска турнира соревнования.

.Страница изменения данных (EditPersonalInfo.xaml). Позволяет изменить личные данные, если были допущены ошибки при регистрации.

.Страница добавления новостей (AddNews.xaml). Предоставляет администраторам системы возможность добавления новых новостей.

.Страница создания турнира (AddNewContent.xaml). Позволяет администраторам системы создавать новые турниры, а также загружать карты к ним.

.Страница запуска турнира (StartContents.xaml). Предоставляет возможность запуска турнира.

Навигация по страницам сайта осуществляется с помощью вертикальной и горизонтальной панелей навигации. Данные панели содержат кнопки, которые дублируют друг друга. Панели навигации являются объектами страницы MainPage.xaml, которая является глобальной. Все остальные страницы открываются внутри нее, поэтому доступ к панелям навигации является постоянным.


3.5.1 Описание веб-интерфейса главной страницы (MainPage.xaml)

Главная страница служит для перехода между основными разделами сайта с помощью кнопок на вертикальной и горизонтальной панелей навигации. Также пользователям предоставляется возможность быстрого входа в систему с помощью панели аутентификации. Все страницы сайта будут открываться внутри главной в области просмотра страниц.

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

При переходе между страницами используется анимация, написанная на языке разметки xml. Страница с которой осуществляется переход выцветает, становясь невидимой, а страница на которую переходит пользователь, наоборот, из невидимой становится видимой, также с применением анимации.

Также с использованием Expression Blend была создана анимация для кнопок панелей навигации. При наведении курсора мыши на кнопки вертикальной панели навигации круг, находящийся слева от ссылки разворачивается, слава направо, становясь фоном надписи. Цвет текста ссылки меняется на обратный, тип начертания шрифта становится жирным. При наведении курсора мыши на кнопки горизонтальной панели навигации прямоугольник, находящийся под ссылкой разворачивается, снизу вверх, становясь фоном надписи. Цвет текста ссылки меняется на обратный, тип начертания шрифта становится жирным.

При удачной авторизации пользователь перенаправляется на страницу новостей (NewsPage.xaml), если же пользователь ввел неверные логин / пароль, то он перенаправляется на страничку авторизации (FailureLogin.xaml) с сообщением об ошибке «Были введены неверные логин / пароль!». Если же пользователь пытается перейти на другие страницы, предварительной не пройдя авторизацию, то пользователь будет перенаправлен на страницу авторизации с сообщением об ошибке «Только зарегистрированные пользователи могут получить доступ к ресурсам сайта!».


3.5.2 Описание веб-интерфейса страницы авторизации FailureLogin.xaml

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

Также на данную страницу посетитель сайта перенаправляется при попытке получить доступ к ресурсам проекта, предварительно не пройдя авторизацию.

Если повторный ввод данных оказался также неверен, то пользователь остается на этой же странице. При удачной авторизации, при нажатии на кнопку вход, пользователь переходит на страницу новостей, после чего ему становятся доступными все ссылки.

Если же посетитель сайта еще не зарегистрирован в системе, то он может перейти на страницу регистрации при нажатии на кнопку «Регистрация».


3.5.3 Описание веб-интерфейса страницы регистрации RegistrPage.xaml

C помощью страницы RegistrPage.xaml пользователь регистрируется в системе, заносит личные данные, а также логин / пароль с помощью которых он в дальнейшем будет проходить авторизацию на сайте.

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

При успешной регистрации, при нажатии на кнопку «Зарегистрироваться» пользователь перенаправляется на страницу авторизации FailureLogin.xaml, на которой необходимо будет ввести зарегистрированные значения логин / пароля для входа в систему.


3.5.4 Описание веб-интерфейса страницы новостей NewsPage.xaml

При удачной авторизации посетителя сайта, он перенаправляется на страницу новостей. На данной странице отображаются последние четыре новости проекта. При количестве новостей больше четырех, можно переходить по страницам новостей с помощью кнопок навигации, находящимся внизу страницы. Каждая новость отображается в виде блока, содержащего тему новости, краткое содержание, дату добавления и тематическую картинку для данной новости. Если картинка не была добавлена при создании новости, то вместо изображения появляется надпись «NO IMAGE».

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

При нажатии на блок конкретной новости, пользователь переходит на страницу подробного описания.


3.5.5 Описание веб-интерфейса страницы ресурсов LinksPage.xaml

Для того, чтобы принять участие в соревнованиях, зарегистрированный пользователь должен предоставить свой проект. При написании программы для роботов требуется соответствующее ПО. Пользователю необходимо на своем компьютере установить Microsoft Robotics Developer Studio, SPLX Launcher Tool а также последний SPL Service Pack.

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


3.5.6 Описание веб-интерфейса страниц обучения

По среде разработки Microsoft Robotics Developer Studio практически отсутствует обучающая литература на русском языке, но имеется несколько англоязычных книг, с описанием данной среды, в частности, с описанием визуального языка программирования - Visual Programming Language.

В рамках данной дипломной работы были переведены на русский язык часть англоязычных ресурсов и составлена программа для обучения данной среде программирования. Данная программа обучения использовалась в «летней школе программирования 2010» для школьников десятых, одиннадцатых классов с целью ознакомления со средой MSRS. После окончанию курса, обучающиеся успешно выполнили практические задания. Это свидетельствует о том, что данный курс обучения является вполне достаточным. После ознакомления с предоставленной теорией, «новички» в данной области, смогут самостоятельно программировать роботов.

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

Среда программирования роботов Microsoft Robotics Developer Studio и визуальный язык программирования, входящий в состав среды, являются новыми разработками и существенно отличаются от предыдущих продуктов. Изначально пользователю может быть непонятно как взаимодействовать со средой, руководствуясь предоставленными инструкциями. Поэтому в целях упрощения обучения участников соревнований, авторизованным пользователям предоставлен ряд видео уроков, для более наглядного предоставления данной среды.

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


3.5.7 Описание веб-интерфейса страницы «личный кабинет»

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


3.5.8 Описание веб-интерфейса страницы загрузки файлов на сервер

Для того, чтобы пользователи смогли принять участие в соревнованиях им необходимо загрузить файлы своих проектов на сервер. Чтобы загрузить проект на сервер пользователь должен из личного кабинета прейти на страницу загрузки нажав кнопку «Загрузить».

На странице загрузки файлов на сервер пользователю необходимо ввести имя загружаемого робота. Имя робота должно быть уникальным, в противном случае, загрузка файла на сервер не произойдет. Загрузка файла на сервер становится доступной только после проверки уникальности имени. Для этого необходимо нажать на кнопку «Проверка». Если такое имя уже зарегистрировано в системе, то пользователю необходимо изменить имя и повторить проверку на уникальность. Если же такого имени робота в системе не существует, то пользователю будет выведено сообщение об успешной проверке и представится возможность загрузки файла на сервер.

После того, как пользователь указал имя робота нужно загрузить сам файл проекта. Для этого нужно нажать на кнопку «Загрузить» после чего откроется диалоговое окно выбора файлов. Если пользователь не выберет файла и нажмет кнопку «ОК», то в заголовке страницы загрузки файлов на сервер выведется соответствующее сообщение об ошибке «Не был выбран файл для загрузки на сервер!». Многофайловый выбор невозможен, данная опция отключена программно. Если пользователем был выбран необходимый файл, то при нажатии на кнопку «ОК» возможны два варианта:

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

Файл не удалось загрузить на сервер. В заголовке страницы выведется сообщение о неудаче проделанной операции.

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


3.5.9 Описание веб-интерфейса страницы тестового запуска

После удачной загрузки проекта на сервер, пользователь может проверить его пригодность для проведения соревнований. Для этого он может перейти на страницу тестового запуска своих проектов со страницы «Личный кабинет», нажав кнопку «Запустить».

На данной странице в двух выпадающих списках пользователь выбирает какого робота запустить на тест, и выбрать одну из карт, на которой провести запуск. В первом выпадающем списке пользователю предоставляется выбор только загруженных им роботов. Во втором выпадающем списке пользователь может выбрать только тестовые варианты карт, предложенные организаторами соревнований.

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

После того, как были выбраны робот и карта, пользователь может начать тестовый прогон, нажав кнопку «Запустить». Для того, чтобы пользователь мог наблюдать картину происходящего, на локальном компьютере должна быть установлена среда Microsoft Robotics Developer Studio.

После того, как робот отработает свою программу, можно нажать кнопку «Просмотреть» для того, чтобы увидеть, какой результат показал выбранный робот на данной тестовой карте. Если робот успешно отработал программу, то пользователю будет выведено сообщение с результатом прохождения карты. Если же робот отработал программу некорректно, не смог выполнить целей, поставленных перед ним, то на экран выведется сообщение об ошибке: «Робот не справился с задачей!».


3.5.10 Описание веб-интерфейса страницы регистрации робота на турнир

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

На странице «регистрация на турнир» описана инструкция пошаговых действий для участников соревнований. Для того, чтобы зарегистрироваться, необходимо в первом выпадающем списке выбрать турнир, во втором выпадающем списке выбрать одного из своих роботов, который будет принимать участие в этом турнире.

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

После того, как были выбраны турнир и робот, пользователь нажимает кнопку «Регистрация», для регистрации выбранного робота на выбранном турнире.

После нажатия на кнопку «Регистрация» пользователю на экран выводится текстовое сообщение об успешности операции. Если пользователь правильно указа и робота и турнир, то пользователь увидит сообщение: «Робот имя_робота успешно зарегистрирован на турнир имя_турнира!». Если пользователь не выбрал робота или турнир из выпадающих списков, то пользователю на экран выведется сообщении об ошибке. Также пользователь увидит сообщение об ошибке, если он попытается на один турнир зарегистрировать второго робота.


3.5.11 Описание веб-интерфейса страницы добавления новостей

Страница добавления новостей является доступной только администраторам системы. Участники соревнования не могу получить доступ к данной странице из страницы «Мой кабинет», так как для них она является недоступной.

Для добавления новости, администратор обязан заполнить поля «Заголовок новости», «Краткое описание новости» и «Текст новости». При попытке добавления данных при незаполненных полях будет выведено предупреждение, о некорректности заполнения, и добавление информации станет недоступным до момента устранения ошибки.

Также для каждой новости администратор может выбрать тематическую картинку, нажав на кнопку «Выбрать изображение». Данное действие является необязательным, поэтому даже при невыбранной картинке можно произвести добавление.

Если все действия были выполнены, то пользователю будет выведено сообщение об удачном добавлении, и данная информация будет отображаться на странице новостей.


3.5.12 Описание веб-интерфейса страницы создания турнира

Создание новых турниров соревнований администраторами системы осуществляется из личного кабинета на странице создания турнира.

При создании нового турнира необходимо указать имя турнира, которое должно быть уникальным. Уникальность имени проверяется с помощью кнопки «Проверить», при нажатии на которую администратору выведется сообщение подтверждающее или отрицающее наличие такого имени в системе. Создать новый турнир без проверки на уникальности имени невозможно, создание также невозможно, если имя турнира уже зарегистрировано в системе.

Для каждого турнира должен быть добавлен свой набор карт, на которых будут проходить соревнования. Количество карт должно быть больше нуля. Если не выбрана ни одна карта, то, при попытке создания турнира, выведется сообщение об ошибке, и создание будет невозможным до тех пор, пока не будет добавлена карта.

Если были учтены все необходимые условия создания турнира, то при нажатии на кнопку «Создать», информация о турнире будет добавлена в систему и на данный турнир пользователи смогут производить регистрацию роботов для принятия участия в соревнованиях.


3.5.13 Описание веб-интерфейса страницы запуска турнира

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

Для запуска турнира необходимо выбрать имя турнира, из выпадающего списка, и нажать на кнопку «Запустить». Если из выпадающего списка не был выбран турнир, то будет выведено предупреждение, о некорректности запуска, и запуск становится недоступным до момента устранения ошибки. Если же необходимый турнир был выбран, то при нажатии на кнопку «Запустить» запустится симуляция выполнения программ загруженных роботов.

3.6 Программное и аппаратное обеспечение, необходимое для внедрения разработанного ПО


Как на клиентской, так и на серверной стороне должна быть установлена платформа Microsoft Robotics Developer Studio, которая требует весьма высоких технических характеристик машин, в основном из за среды визуализации Visual Simulation Enviroment.

Для внедрения ПО «Проведение соревнований компьютерных игровых стратегий» необходимо следующее аппаратное обеспечение:

Минимальные технические характеристики сервера:

Процессор - P4 2.6 ГГц;

Объем оперативной памяти - не менее 2 Гб;

Дисковая подсистема - не менее 60 Гб;

Сетевой адаптер - Fast Ethernet 100;

Видеосистема - разрешающая способность не ниже 1024x768 точек, объем памяти - 256 Мб;

«мышь»;

Клавиатура;

Монитор - диагональ не менее 15».

Рекомендуемые технические характеристики сервера:

Процессор - P4 3.5 ГГц;

Объем оперативной памяти - не менее 4 Гб;

Дисковая подсистема - не менее 200 Гб;

Сетевой адаптер - Fast Ethernet 100;

Видеосистема - разрешающая способность не ниже 1024x768 точек, объем памяти не меньше 512 Мб;

«мышь»;

Клавиатура;

Монитор - диагональ не менее 19».

Минимальные технические характеристики клиентских ПК:

Процессор - не ниже P4 2 ГГц;

Объем оперативной памяти - не менее 512 Мб;

Дисковая подсистема - не менее 8 Гб;

Сетевой адаптер - Fast Ethernet 100;

Видеосистема - разрешающая способность не ниже 1024x768 точек, объем памяти 256 Мб;

«мышь»;

Клавиатура;

Монитор - диагональ не менее 15».

Рекомендуемые технические характеристики клиентских ПК:

Процессор - не ниже P4 2,6 ГГц;

Объем оперативной памяти - не менее 1,5 Гб;

Дисковая подсистема - не менее 20 Гб;

Сетевой адаптер - Fast Ethernet 100;

Видеосистема - разрешающая способность не ниже 1024x768 точек, объем памяти 512 Мб;

«мышь»;

Клавиатура;

Монитор - диагональ 19».

Для внедрения ПО «Проведение соревнований компьютерных игровых стратегий» необходимо следующее программное обеспечение:

Программное обеспечение сервера:

Операционная система - Microsoft Windows 2000 Server SP4 или Microsoft Windows 2003 Server SP2;

СУБД - MS SQL Server 2008;

Microsoft Robotics Developer Studio R3.

Программное обеспечение клиентских ПК:

операционная система - выбор ОС не критичен;

web-браузер;

Microsoft Robotics Developer Studio R3;

Плагин Silverlight.


Заключение


В результате выполнения дипломной работы было разработано программное обеспечение «Проведение соревнований по программированию компьютерных игровых стратегий». Реализованное программное обеспечение отвечает всем предъявленным требованиям по функциональности, надежности и безопасности.

Для создания ПО «Проведение соревнований по программированию компьютерных игровых стратегий» было применено современное средство разработки Visual Studio 2010 Ultimate, язык программирования. Net C#, позволяющее оформлять приложения соответственно всем парадигмам объектно-ориентированного программирования. В качестве платформы использовалась система управления базами данных MS SQL Server 2008, предоставляющая возможности многопользовательского подключения, гибкого администрирования и жесткого контроля за состоянием системы. Для программирования роботов использовалась платформа Microsoft Robotics Developer Studio. Созданное ПО представляет из себя клиент-серверную модель.

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

Разработанное программное обеспечение может быть использовано для проведения студенческих соревнований по программированию компьютерных игровых стратегий.


Список литературы


1.Современные тренажерные технологии. [Электронный ресурс]. - Режим доступа:

#"justify">2.Открытый робототехнический турнир на Кубок Политехнического музея. [Электронноый ресурс]. - Режим доступа:

#"justify">.Всероссийский робототехнический фестиваль. [Электронный ресурс]. - Режим доступа: #"justify">4.LEGO Mindstorms. [Электронный ресурс]. - Режим доступа: #"justify">5.Sara Morgan Programming Microsoft Robotics Studio. - Microsoft Press, 2008. - 5-9 c.

6.Robocode. [Электронный ресурс]. - Режим доступа: #"justify">.Еще раз о Robocode. [Электронный ресурс]. - Режим доступа: #"justify">.Объектно-ориентированное программирование с явным выделением состояний. [Электронный ресурс]. - Режим доступа: #"justify">9.P-ROBOTS v4.0 - Pascal Programmed Robots. [Электронный ресурс]. - Режим доступа: #"justify">10.Snake Battle. [Электронный ресурс]. - Режим доступа: #"justify">.Змеиный бой (Snake Battle). [Электронный ресурс]. - Режим доступа: #"justify">12.Microsoft Robotics. [Электронный ресурс]. - Режим доступа: #"justify">.Моделирование мира с помощью Microsoft Robotics Studio. [Электронный ресурс]. - Режим доступа: #"justify">.Автоматизация в доме с помощью Microsoft Robotics Developer Studio 2008. [Электронный ресурс]. - Режим доступа: #"justify">15.Microsoft Robotics Studio. [Электронный ресурс]. - Режим доступа: #"justify">.Visual Simulation Environment. [Электронный ресурс]. - Режим доступа:

#"justify">.Microsoft Robotics Studio. [Электронный ресурс]. - Режим доступа: #"justify">18.NET Framework. [Электронный ресурс]. - Режим доступа: #"justify">.Эндрю Троелсен Язык программирования C# 2008 и платформа.NET3.5. - СПб: Питер, 2010 - 48 с.

.Рихтер Дж. CLR via C# Программирование на платфоркме. Net Framework 2.0 на языке C#. - СПб: Питер, 2007 - 15 с.

.Лекция: Visual Studio. Net, Framework. Net. [Электронный ресурс]. - Режим доступа: #"justify">.Общие сведения об основных понятиях платформы.NET Framework. [Электронный ресурс]. - Режим доступа:

#"justify">.Введение в C#. [Электронный ресурс]. - Режим доступа: #"justify">24.Эндрю Троелсен Язык программирования C# 2008 и платформа.NET3.5. - СПб: Питер, 2010 - 50-51 с.

.Сравнение SQL Server с MySQL. - [Электронный ресурс]. - Режим доступа: #"justify">.Microsoft SQL Server. - [Электронный ресурс]. - Режим доступа: #"justify">.Обзор Microsoft SQL Server. - [Электронный ресурс]. - Режим доступа: #"justify">.Silverlight. - [Электронный ресурс]. - Режим доступа: #"justify">.Знакомство с Silverlight. - [Электронный ресурс]. - Режим доступа: #"justify">30.Johns K., Taylor T. Professional Microsoft Robotics Studio. - 2008. - W. 471-476.

соревнование компьютерный турнир стратегия


Разработка программного обеспечения проведения соревнований по программированию компьютерных игровых стратег

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ