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

Пиковые нагрузки во время проведения турниров. Анализ существующих систем проведения соревнований роботов: Java Robocode, Pascal Robotwar, Snake Battle, Microsoft Robotics Developer Studio. Соревнования по программированию компьютерных игровых стратегий.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 06.03.2013
Размер файла 3,7 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

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

3.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 FileStream = new FileStream (string. Format(«{0}\\{1}», filePath, UploadFile. FileName), FileMode. Create);

FileStream. Write (UploadFile. File, 0, UploadFile. File. Length);

FileStream. 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;

fileDialog. Filter = «All Files|*.*»;

bool? retval = fileDialog. ShowDialog();

if (retval!= null && retval == true)

{

Stream strm = fileDialog. File. OpenRead();

byte[] Buffer = new byte [strm. Length];

strm. Read (Buffer, 0, (int) strm. Length);

strm. Dispose();

strm. Close();

FileUploadService. UploadFile file = new FileUploadService. UploadFile();

file. FileName = fileDialog. File. Name;

file. File = Buffer;

proxy. SaveFileAsync(file);

proxy. SaveFileCompleted += new EventHandler<System. ComponentModel. AsyncCompletedEventArgs>(proxy_SFCompleted);

}

else

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

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

{

if (e. Error == null)

WarningMessege. Text=fileDialog. File. Name+» Успешно загружен на сервер!»;

else

WarningMessege. Text=fileDialog. File. Name+» не загружен на сервер!»;

}

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

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

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

[ServiceContract]

public interface IGetSetNews

{

[OperationContract]

List<AppCode. New> GetNews();

}

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

public class GetSetNews: IGetSetNews

{

public List<AppCode. New> GetNews()

{

AppCode.DBclassesDataContext db = new AppCode.DBclassesDataContext();

var news = from prod in db. News select prod;

return news. ToList();

}

}

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

NewsReferences. GetSetNewsClient webSrvc = new NewsReferences. GetSetNewsClient();

webSrvc. GetNewsCompleted += new EventHandler<GetNewsCompletedEventArgs>

(webSrvc_GetNewsCompleted);

webSrvc. GetNewsAsync();

private void webSrvc_GetNewsCompleted (object sender, GetNewsCompletedEventArgs e)

{

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

}

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

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

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

private void txtOpenProgram_Click (object sender, RoutedEventArgs e)

{

using (dynamic shell =

ComAutomationFactory. CreateObject («WScript. Shell»))

{

shell. Run (@ «C:\windows\VPL.exe»);

shell. SendKeys({F5});

}

}

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

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

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

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

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

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

public void LaunchProject (string fileName)

{

Process MyProc = new Process();

MyProc. StartInfo. FileName = filename;

MyProc. Start();

string procName = MyProc. ProcessName;

MyProc. WaitForInputIdle(20000);

Thread. Sleep(20000);

SendKeys. SendWait(«{F5}»);

Proc. WaitForExit();

return;

}

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

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

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

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

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

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

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

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

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

using System. Security. Cryptography;

string GetHashString (string password)

{

byte[] bytes = Encoding. Unicode. GetBytes(password);

MD5CryptoServiceProvider CSP =

new MD5CryptoServiceProvider();

byte[] byteHash = CSP. ComputeHash(bytes);

string hash = string. Empty;

foreach (byte b in byteHash)

hash += string. Format(«{0:x2}», b);

return hash;

}

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

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

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

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

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

public VideoPage()

{

InitializeComponent();

C_Media. Source = new Uri (AppCode. StaticsParameters.videoSource, UriKind. Relative);

btnPlayPause. Checked += new RoutedEventHandler (btnPlayPause_Checked);

btnPlayPause. Unchecked += new RoutedEventHandler (btnPlayPause_Unchecked);

btnMute. Checked += new RoutedEventHandler (btnMute_Checked);

btnMute. Unchecked += new RoutedEventHandler (btnMute_Unchecked);

C_Media. CurrentStateChanged += new RoutedEventHandler (C_Media_CurrentStateChanged);

sliderScrubber. MouseLeftButtonUp += new MouseButtonEventHandler (sliderScrubber_MouseLeftButtonUp);

sliderScrubber. MouseLeftButtonDown += new MouseButtonEventHandler (sliderScrubber_MouseLeftButtonDown);

sliderScrubber. MouseMove +=new MouseEventHandler (sliderScrubber_MouseMove);

sliderVolume. ValueChanged += new RoutedPropertyChangedEventHandler<double>(sliderVolume_ValueChanged);

timer = new DispatcherTimer();

timer. Interval = TimeSpan. FromMilliseconds(50);

timer. Tick += new EventHandler (timer_Tick);

}

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

void timer_Tick (object sender, EventArgs e)

{

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

{

sliderScrubber. Value = C_Media. Position. TotalSeconds /

C_Media. NaturalDuration. TimeSpan. TotalSeconds;

txtVideoPosition. Text = string. Format(«{0:00}: {1:00}»,

C_Media. Position. Minutes, C_Media. Position. Seconds);

}

}

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

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

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

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

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

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

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

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

[ServiceHandler (ServiceHandlerBehavior. Exclusive)]

public void WriteMessageHandler (WriteMessage writeMessage, string filePath, string robotName, string mapName)

{

string fileName = filePath;

string message = writeMessage. Body. Message;

if (message == «start»)

{

StreamWriter sw = new StreamWriter (fileName, false);

TimeSpan t = (DateTime. UtcNow - new DateTime (1970, 1, 1));

string dateTimeNow = t. TotalMilliseconds. ToString();

sw. Write(dateTimeNow);

sw. Close();

}

if (message == «stop»)

{

StreamWriter sw = new StreamWriter (fileName, true);

TimeSpan t = (DateTime. UtcNow - new DateTime (1970, 1, 1));

string dateTimeNow =

string. Format («\n{0}\n{1}\n{2}», t. TotalMilliseconds. ToString(),

robotName, mapName);

sw. Write(dateTimeNow);

sw. Close();

}}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

15. Страница запуска турнира (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. Современные тренажерные технологии. [Электронный ресурс]. - Режим доступа:

http://www.traintech.ru/ru/public/index.php? path=robots03.

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

http://myrobot.ru/sport/index.php? n=Tournament. Info.

3. Всероссийский робототехнический фестиваль. [Электронный ресурс]. - Режим доступа: http://robosport.ru/info/maininfo/maininfo_119.html.

4. LEGO Mindstorms. [Электронный ресурс]. - Режим доступа: http://ru.wikipedia.org/wiki/LEGO_Mindstorms.

5. Sara Morgan Programming Microsoft Robotics Studio. - Microsoft Press, 2008. - 5-9 c.

6. Robocode. [Электронный ресурс]. - Режим доступа: http://habrahabr.ru/blogs/subconsciousness/59784/.

7. Еще раз о Robocode. [Электронный ресурс]. - Режим доступа: http://is.ifmo.ru/aboutus/5/.

8. Объектно-ориентированное программирование с явным выделением состояний. [Электронный ресурс]. - Режим доступа: http://is.ifmo.ru/download/robocode2.pdf.

9. P-ROBOTS v4.0 - Pascal Programmed Robots. [Электронный ресурс]. - Режим доступа: http://pascal.sources.ru/gamestxt/probots4.htm.

10. Snake Battle. [Электронный ресурс]. - Режим доступа: http://almanzor.chat.ru/snake/snake.html.

11. Змеиный бой (Snake Battle). [Электронный ресурс]. - Режим доступа: http://ioesoftware.narod.ru/svodchtire.htm.

12. Microsoft Robotics. [Электронный ресурс]. - Режим доступа: http://robotics.ivolga.tv/.

13. Моделирование мира с помощью Microsoft Robotics Studio. [Электронный ресурс]. - Режим доступа: http://msdn.microsoft.com/ru-ru/magazine/cc546547.aspx.

14. Автоматизация в доме с помощью Microsoft Robotics Developer Studio 2008. [Электронный ресурс]. - Режим доступа: http://blogs.msdn.com/b/ rucoding4fun/archive/2008/05/23/microsoft-robotics-developer-studio-2008.aspx.

15. Microsoft Robotics Studio. [Электронный ресурс]. - Режим доступа: http://ru.vlab.wikia.com/wiki/Microsoft_Robotics_Studio.

16. Visual Simulation Environment. [Электронный ресурс]. - Режим доступа:

http://cadprofi.ru/wiki/index.php/Visual_Simulation_Environment.

17. Microsoft Robotics Studio. [Электронный ресурс]. - Режим доступа: http://insiderobot.blogspot.com/2008/01/microsoft-robotics-studio.html.

18. NET Framework. [Электронный ресурс]. - Режим доступа: http://ru.wikipedia.org/wiki/.NET_Framework.

19. Эндрю Троелсен Язык программирования C# 2008 и платформа.NET3.5. - СПб: Питер, 2010 - 48 с.

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

21. Лекция: Visual Studio. Net, Framework. Net. [Электронный ресурс]. - Режим доступа: http://www.intuit.ru/department/pl/csharp/1/1.html.

22. Общие сведения об основных понятиях платформы.NET Framework. [Электронный ресурс]. - Режим доступа:

http://msdn.microsoft.com/library/zw4w595w.aspx.

23. Введение в C#. [Электронный ресурс]. - Режим доступа: http://www.c-help.net/3.html.

24. Эндрю Троелсен Язык программирования C# 2008 и платформа.NET3.5. - СПб: Питер, 2010 - 50-51 с.

25. Сравнение SQL Server с MySQL. - [Электронный ресурс]. - Режим доступа: http://www.microsoft.com/sqlserver/2008/ru /compare-mysql.aspx.

26. Microsoft SQL Server. - [Электронный ресурс]. - Режим доступа: http://ru.wikipedia.org/wiki/Microsoft_SQL_Server.

27. Обзор Microsoft SQL Server. - [Электронный ресурс]. - Режим доступа: http://www.microsoft.com/sqlserver/2008/ru/ru/overview.aspx.

28. Silverlight. - [Электронный ресурс]. - Режим доступа: http://ru.wikipedia.org/wiki/Silverlight.

29. Знакомство с Silverlight. - [Электронный ресурс]. - Режим доступа: http://msdn.microsoft.com/ru-ru/library/bb404300.aspx.

30. Johns K., Taylor T. Professional Microsoft Robotics Studio. - 2008. - W. 471-476.

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

Размещено на Allbest.ru


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.