Рух Короля в шахах

Автор работы: Пользователь скрыл имя, 02 Мая 2013 в 22:08, курсовая работа

Краткое описание

Розробка програм для аналізу шахових комбінацій представляє великий інтерес в дослідженнях з області штучного інтелекту. На сьогоднішній день існує дуже багато програмних засобів для повноцінної гри в шахи та, навіть, спеціалізовані шахові комп’ютери, призначені тільки для шахів.
Історія шахових машин старша, ніж історія комп'ютерів. Ідея створити машину, що грає в шахи, датується ще вісімнадцятим століттям. Близько 1769 р. з'явився шаховий автоматМеханічний турок. Він був призначений для розваги королеви Марії Терезії. Машина дійсно непогано грала — усередині неї сидів сильний шахіст, який і робив ходи.

Прикрепленные файлы: 1 файл

05. А та П (ПЗ).docx

— 792.46 Кб (Скачать документ)

 

Рисунок 4.3 – Фрагмент панелі фігур

На цій панелі також позначається черга ходу. Стовпець фігур, яким належить наступний хід знизу відмічається червоним кольором. На наступному рисунку зображено приклад позначення, коли ходять білі.

 

Рисунок 4.4 – Індикатор ходу

 

Було розроблено 3 стилі шахової  дошки. Всі вони були намальовані  за допомогою AdobePhotoshop. Їх фрагменти наведені на рисунку 4.5.

 

Рисунок 4.5 – Фрагменти стилів шахової  дошки

 

Крім головного вікна необхідно  розробити ще кілька вікон. Нариклад, обов’язкова в завданні «авторська заставка» повинна викликатись, якщо користувач обирає пункт «Про програму» з меню «Довідка». Вигляд цього вікна наведено на рисунку 4.6.

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


Рисунок 4.6 – Вигляд вікна «Про програму»

Рисунок 4.7 – Умовні позначення, прийняті в програмі

 

Слід відзначити, що вільні биті або  доступні для ходу поля на дошці  позначаються за допомогою тексту. Вільне, доступне для ходу поле позначається за допомогою символа з кодом 9679 (Unicode). Бите, але не доступне для ходу поле позначається символом з кодом 215 (Unicode). Биті і криті фігури змінюють власний фон на рамку зеленого або червоного кольору. Ця властивість задається для того ж об’єкта PictureBox, що зображує фігуру.

На цьому розробку інтерфейсу програми можна вважати завершеною.

4.4 Реалізація логіки

Весь вагомий програмний код  записаний в файлі головної форми, включаючи класи chess, actionі panel. Клас chessбув описаний в попередньому розділі.

Клаcaction. Оскільки всі биті і доступні для ходу поля позначаються за допомогою елементів Label, то їх потребується 64. Звертатись до кожного по імені не зручно і код стане більш громіздким, тому створено клас action, що містить масив текстових міток. Цей клас використовується для керування ними.

Панель фігур містить 12 контейнерів  малюнків (об’єктів класу PictureBox) для позначення фігур та 12 текстових міток для позначення їх кількості. Ці об’єкти є полями класу item, масив елементів якого є полем класу panel, через який і виконуєтья керування елементами панелі фігур.

Клас головної форми містить  ряд методів для керування  інтерфейсом:

  • voidboard_refresh() –розміщує фігури на дошці відповідно до їх координат, заданих в об’єкті chess1 класу chess;
  • voidpanel_refresh() – оновлює кількості фігур на панелі фігур відповідно до масиву figuresNumberв об’єкті chess1;
  • voidstatusRefresh(intstatus) – оновлює рядок стану, залежно від аргументу;
  • voidmanual(boolis_manual) – змінює вигляд вікна, залежно від того, чи увімкнений режим розстановки вручну;
  • voidchoseOnBoard() – задає червоний фон для обраної на дошці фігури, задає прозорий фон для всіх інших фігур;
  • voidchoseOnPanel() – аналогічна функція для панелі фігур;
  • voidsetOnBoard() – ставить фігуру в задане місце, при розстановці вручну;
  • voiddeleteFigure() – видаляє фігуру з дошки при подвійному кліку на ній в ручному режимі;
  • voidshowWays(int[,] matrix) – приймає цілочисельний двовимірний масив з позначеннями ходів фігур (ways[8,8] класу figures для конкретного елемента масиву figure[32]) і виводить їх на дошку, відповідно до прийнятих умовних позначень;
  • voidhideWays() – приховати всі ходи.

Лістинг програми наведений в додатку  Д.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5 РОЗРОБКА ІНСТРУКЦІЇ КОРИСТУВАЧА


 

Довідка в програмі реалізована  у вигляді html-сторінки. Такий підхід дозволяє розробляти довідку незалежно від коду програми, наповнювати її гіпертекстом, включаючи зображення та посилання. Крім того це дозволяє робити он-лайн довідку, якщо замість шляху на файл вказати адресу ресурсу в Інтернеті.Довідка складається з файлу help.htmта директорії imgз необхідними зображеннями. Вигляд довідки наведено на рисунку 5.1.

Рисунок 5.1 – Вигляд довідки в  браузері

 

Для запуску її в стандартному браузері з програмного коду в обробник події вибору меню «Довідка» вписаний наступний код:

System.Diagnostics.Process.Start("help\\help.html");

Крім того там присутній обробник виключення, на випадок якщо файл з  довідкою не буде знайдено.

Сторінка довідки розмічена  мовою HTMLз використанням таблиць стилів CSSдля налаштування зовнішнього вигляду. Код файлу help.htmlнаведено в додатку В, інструкцію – в додатку Б.

  1. ТЕСТУВАННЯ РОЗРОБЛЕНОЇ ПРОГРАМИ

 

6.1 Тестування генерації випадкових  комбінацій

Випадкові комбінації можна генерувати натиснувши кнопку «Генерувати комбінацію»  або однойменний пункт меню «Керування».

Було проведено кілька десятків генерацій випадкових комбінацій, серед  яких не виявлено помилкових чи некоректних. Черга ходу, кількість фігур та їх розташування цілком довільні, немає повторень. Приклад випадково згенерованої комбінації наведено на рисунку 6.1.

 

Рисунок 6.1 – Приклад випадкової комбінації

 

Як видно з рисунку кількість  фігур, балів та черга ходу відображається коректно. Будь які дії в програмі супроводжуються відповідною підказкою  в рядку стану.

 

6.2 Розстановка вручну

При натисканні кнопки «Розставити  шахи вручну» або однойменного пункту меню «Керування» програма переходить у відповідний режим.

Кнопка «Розставити шахи вручну»  перейменована на «Застосувати розташування». Це ж стоується і відповідного пункту меню.

Подвійний клік на фігурі видалає  фігур з дошки. Подвійний клік на дошці очищає її. Щоб поставити  нову фігуру на дошку її потрібно обрати на панелі, клікнути на цільову клітинку на дошці. Фігури на дошці можна переставляти.

Якщо спробувати натиснути на кнопку «Застосувати розташування» не поставивши хоча б одного короля, то програма виведе помилку в рядку стану  (рисунок 6.2).

Рисунок 6.2 – Помилка при спробі застосувати комбінацію без королів

 

Контроль за тим, щоб король, який не ходить не стояв на битому полі також  здійснюється. Рисунок 6.3 ілюструє рядок  стану при спробі поставити під  шах короля, який не ходить.

Рисунок 6.3 – Спроба поставити під  шах короля, що не ходить

 

Усі можливості розстановки вручну перевірені. Під час тестування виявлено кілька помилок та ліквідовано.

 

6.3 Зберігання та завантаження  збережених комбінацій

Комбінації можна зберігати  в файл з розширенням *.comb. При цьому в файл записується масив boardта поле moveWhiteSideкласу chess та спеціальний заголовок для контролю формату.

Щоб зберегти комбінацію необхідно  обрати відповідний пункт в меню «Файл». Після цього з’явиться  діалог збереження файлу, де потрібно обрати розташування та ввести ім’я файлу.

Щоб завантажити комбінацію з файлу  потрібно обрати пункт «Відкрити  комбінацію» меню «Файл» та обрати необхідний файл. Коли файл відкриєтья комбінація буде автоматично проаналізована.

Контроль за можливістю відкриття  файлу чи його запису проводять самі діалогові вікна.

Також в програмі ведеться контроль цілісності файлу (за вмістом) та відповідноті формату (за заголовком). В разі виявлення  помилок програма виводить повідомлення (рисунок 6.4).

Рисунок 6.4 – Помилка в файлі

 

Зберігання і завантаження комбінацій добре відлагоджено і протестовано. Помилок не виявлено.

 

6.4 Визначення ходів фігур

Якщо на дошці обрати якусь фігуру, то відобразяться всі можливі  її ходи. Нариклад, рисунок 6.5 ілюструє всі контрольовані поля чорного  слона. Умовні позначення цих полів  можна подивитись, натиснувши кнопку позначення, в  довідці або на рисунку 4.9

 

Рисунок 6.5 – Контрольовані поля за фігурою

 

6.5 Визначення ходів короля

Головним призначенням  програми є визначення всіх можливих ходів  короля. Їх визначити складніше, ніж  для інших фігур, адже потрібно враховувати  биті поля інших фігур. При чому деякі  поля можуть стати битими тільки після  ходу короля. Усе це враховано. Визначення можливих ходів короля працює коректно в усіх випадках. Приклад наведено на рисунку 6.6.

 


 

Рисунок 6.6 – Визначення ходів короля

 

6.5 Підсумки тестування

Програму також протестовано на коректність роботи рядка стану, на правильніть виклику форм «Про програму» та «Умовні позначення», а також довідки. Протестовано зміну  стилю дошки.

На панель фігур виводиться кількість  фігур кожного виду та індикатор  ходу. Якщо кількість якогось виду фігур досягла свого максимуму, то ця кількість позначається сірим (неактивним) кольором (наприклад королі, ферзі, чорні тури і коні на рисунку 6.5).

Усі вузли програми працюють коректно. Швидкість роботи програми відповідає вимогам.

ВИСНОВКИ


 

В результаті курсового проектування створено програму, яка визначає можливі  ходи кожної фігури на дошці, кількість  фігур кожного виду.

Програма може генерувати коректні комбінації випадково, дозволяє розставляти  шахи користувачу, а також зберігати  комбінації в файл та завантажувати  їх.

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

Додатково є можливість змінювати  стиль шахової дошки серед  трьох доступних.

 

 

 

 
 
  
 

 

ПЕРЕЛІК ПОСИЛАНЬ


 

  1. Биллиг В. А. Основы программирования на C#. — М.: Изд-во «Интернет-университет информационных технологий — ИНТУИТ.ру», 2006. — 488 c.
  2. Брукс Ф. Мифический человеко-месяц, или как создаются программные комплексы. — М: «Символ-Плюс», 2000 г. — 304 с.
  3. Ватсон К. C#. — М.: Лори, 2004. — 880 с.
  4. Вирт Н. Алгоритмы и структуры данных. — Спб: Невский диалект, 2001 г. — 352 с.
  5. Гиббонз П. Платформа .NET для Java-программистов. — СПб.: Питер, 2003. — 336 с.
  6. Голуб А. И. С и С++. Правила программирования. — М: БИНОМ, 1996 г. — 272 с.
  7. Гуннерсон Э. Введение в C#. Библиотека программиста. — СПб.: Питер, 2001. — 304 с.
  8. Кораблев В. Самоучитель VisualC++ .NET. — СПб.: Питер; Киев: Издательская группа BHV, 2004. — 528 с.
  9. Либерти Д. Программирование на C#. — СПб.: Символ-Плюс, 2003. — 688 с.
  10. Майо Д. C#. Искусство программирования. Энциклопедия программиста. — Киев: «ДиаСофт», 2002. — 656 с.
  11. Майо Дж.C# Builder. Быстрый старт. — М.: Бином, 2005. — 384 с.
  12. Микелсен К. Язык программирования C#. Лекции и упражнения. Учебник. — Киев: «ДиаСофт», 2002. — 656 с.
  13. Оньон Ф. Основы ASP.NET с примерами на C#. — М.: Издательский дом «Вильямс», 2003. — 304 с.
  14. Павловская Т. А. С/С++. Программирование на языке высокого уровня. Учебник для вузов. — СПб.: Питер, 2001. — 464 с.
  15. Павловская Т. А. Паскаль. Программирование на языке высокого уровня. Учебник для вузов. — СПб.: Питер, 2003. — 393 с.
  16. Паппас К., Мюррей У. Эффективная работа: VisualC++ .NET. — СПб.: Питер, 2002. — 816 с.
  17. Петцольд Ч. Программирование для MS Windows на C#. Том 1. — М.: Издательско-торговый дом «Русская Редакция», 2002. — 576 с.
  18. Петцольд Ч. Программирование для MS Windows на C#. Том 2. — М.: Издательско-торговый дом «Русская Редакция», 2002. — 624 с.
  19. Понамарев В. А. Программирование на C++/C# в Visual Studio .NET 2003. Серия «Мастер программ». — СПб.: БХВ-Петербург, 2004. — 352 с.
  20. Прайс Д., Гандэрлой М. Visual C#.NET. Полное руководство. — Киев: «Век», 2004. — 960 с.
  21. Робинсон С., Корнес О., Глинн Дж. и др. C# для профессионалов. В двух томах. — М.: Лори, 2003. — 512 с.
  22. Робисон У. C# без лишних слов. — М.: ДМК Пресс, 2002. — 352 с.
  23. Секунов Н. Разработка приложений на C++ и C#. Библиотека программиста. — СПб.: Питер, 2003. — 608 с.
  24. Секунов Н. Самоучитель C#. Серия "Самоучитель". — СПб.: БХВ-Петербург, 2001. — 576 с.
  25. Смайли Д. Учимся программировать на C# вместе с Джоном Смайли. — Киев: «ДиаСофт», 2003. — 528 с.
  26. Тай Т., Лэм Х. К. Платформа .NET. Основы. — СПб.: Символ-Плюс, 2003. — 336 с.

Информация о работе Рух Короля в шахах