Допустимість ходу шахової фігури

[ виправити ] текст може містити помилки, будь ласка перевіряйте перш ніж використовувати.

скачати

Міністерство освіти і науки Російської Федерації

Агентство з освіти

Тихоокеанський державний економічний університет

Економічний інститут

Курсова робота

Допустимість ходу шахової фігури

Виконав: студент

Воронцов А.В.

Перевірила: професор

Л.І. Пруднікова

Владивосток 2009

Зміст

  1. Неформальна постановка задачі

  2. Формальна постановка задачі

  3. Розробка і пошук алгоритму розв'язання задачі

  4. Специфікація вихідних даних програми

  5. Специфікація функції програми

  6. Текст програми

  7. Керівництво користувача

  8. Проектування програми

  9. Тестування програми

Висновок

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

1. Неформальна постановка задачі

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

2. Формальна постановка задачі

Для програмної реалізації необхідно створити шахове поле і фігури.

Шахове поле являє собою масив {a ij}, що має кількість рядків i = 8 і кількість шпальт j = 8. У ньому програма зафарбовує клітини тієї фігури, яка обрана, орієнтуючись по координатах.

Фігура на дошці - це об'єкт b kl, що має координати: k - ширина, l - висота. Програма показує можливість одного ходу, зафарбовуючи клітини в масиві, на які вибраний об'єкт може переміститися. При цьому програма враховує розташування інших об'єктів і, якщо такі є, стирає ті зафарбовані клітини, на яких вибраний об'єкт можуть «зрубати».

3. Методи вирішення задачі

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

  1. Спочатку потрібно визначити, яка з фігур виділена і чи є ще інші фігури на дошці.

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

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

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

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

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

  7. Програма перевіряє, яка з фігур виділена, перебираючи всі фігури (тобто всі 12). Якщо програма знайшла таку фігуру, то застосовує до тієї вище викладений алгоритм.

4. Специфікація вихідних даних програми

Вихідними даними в задачі є:

  1. Масив {a ij} (шахове поле), що має стандартний розмір: i = 8, j = 8.

  2. Об'єкт b kl (фігура).

  3. Параметри k, l - координати об'єкта.

  1. Специфікація функції програми

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

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

  2. Якщо потрібні клітини зафарбовані, програма дивиться, які ще фігури знаходяться на дошці.

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

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

6. Текст програми

У даному пункті наводяться тексти окремих найбільш значущих розроблених класів програми та їх ключових методів.

TForm1 = class (TForm)

private

{Private declarations}

public

{Public declarations}

end;

var {опис змінних}

Form1: TForm1;

x1, y1, k, l, code, w, s, q, k1, l1, i: integer;

t, d: string;

Вихід з програми:

procedure TForm1.N3Click (Sender: TObject);

begin

close;

end;

Зафарбовування клітин, що показує допустимість ходу:

procedure TForm1.N5Click (Sender: TObject);

begin

if (image14.Left = image7.Left) and (image14.top = image7.top) then begin {для білої пішаки}

if (image7.left> = 0) and (image7.left <= 448)

and (image7.Top> = 0) and (image7.Top <= 448) then begin

k: = image7.left; l: = image7.Top;

paintbox1.canvas.brush.Color: = clgreen;

paintbox1.Canvas.rectangle (k +64, l +64, k, l +128); end;

if (image8.left> = 0) and (image8.left <= 448)

and (image8.Top> = 0) and (image8.Top <= 448) then begin

image15.Show; image15.Left: = image8.Left; image15.Top: = image8.Top; image15.Hide; end;

if (image9.left> = 0) and (image9.left <= 448)

and (image9.Top> = 0) and (image9.Top <= 448) then begin

image15.Show; image15.Left: = image9.Left; image15.Top: = image9.Top; image15.Hide; end;

if (image10.left> = 0) and (image10.left <= 448)

and (image10.Top> = 0) and (image10.Top <= 448) then begin

image15.Left: = image10.Left; image15.Top: = image10.Top; image15.Show; end;

if (image11.left> = 0) and (image11.left <= 448)

and (image11.Top> = 0) and (image11.Top <= 448) then begin

image15.Show; image15.Left: = image11.Left; image15.Top: = image11.Top; image15.Hide; end;

if (image12.left> = 0) and (image12.left <= 448)

and (image12.Top> = 0) and (image12.Top <= 448) then begin

image15.Show; image15.Left: = image12.Left; image15.Top: = image12.Top; image15.Hide; end;

if (image1.left> = 0) and (image1.left <= 448)

and (image1.Top> = 0) and (image1.Top <= 448) then begin

image16.Left: = image1.Left; image16.Top: = image1.Top; image16.Show; image16.hide;

k: = image1.left; l: = image1.Top;

image16.left: = k +64; image16.Top: = l-64; image16.show; image16.hide;

image16.left: = k-64; image16.Top: = l-64; image16.show; image16.hide; end;

if (image2.left> = 0) and (image2.left <= 448)

and (image2.Top> = 0) and (image2.Top <= 448) then begin

image16.Left: = image2.Left; image16.Top: = image2.Top; image16.Show; image16.hide;

k: = image2.left; l: = image2.Top;

image16.left: = k +64; image16.Top: = l-128; image16.show; image16.hide; image16.left: = k-64; image16.Top: = l-128; image16.show; image16. hide; image16.left: = k +64; image16.Top: = l +128; image16.show; image16.hide;

image16.left: = k-64; image16.Top: = l +128; image16.show; image16.hide; image16.left: = k +128; image16.Top: = l +64; image16.show; image16. hide; image16.left: = k-128; image16.Top: = l +64; image16.show; image16.hide;

image16.left: = k +128; image16.Top: = l-64; image16.show; image16.hide; image16.left: = k-128; image16.Top: = l-64; image16.show; image16. hide; end;

if (image3.left> = 0) and (image3.left <= 448)

and (image3.Top> = 0) and (image3.Top <= 448) then begin

image16.Left: = image3.Left; image16.Top: = image3.Top; image16.Show; image16.hide;

k: = image3.left; l: = image3.Top;

for i: = 1 to 8 do begin

image16.left: = k +64 * i; image16.Top: = l +64 * i; image16.show; image16.hide; image16.left: = k-64 * i;

image16.Top: = l-64 * i; image16.show; image16.hide; image16.left: = k-64 * i; image16.Top: = l +64 * i;

image16.show; image16.hide; image16.left: = k +64 * i; image16.Top: = l-64 * i; image16.show; image16.hide; end; end;

if (image4.left> = 0) and (image4.left <= 448)

and (image4.Top> = 0) and (image4.Top <= 448) then begin

image16.Left: = image4.Left; image16.Top: = image4.Top; image16.Show; image16.hide;

k: = image4.left; l: = image4.Top;

for i: = 1 to 8 do begin

image16.left: = k +64 * i; image16.Top: = l; image16.show; image16.hide; image16.left: = k-64 * i; image16.Top: = l;

image16.show; image16.hide; image16.left: = k; image16.Top: = l +64 * i; image16.show; image16.hide;

image16.left: = k; image16.Top: = l-64 * i; image16.show; image16.hide; end; end;

if (image5.left> = 0) and (image5.left <= 448)

and (image5.Top> = 0) and (image5.Top <= 448) then begin

image16.Left: = image5.Left;

image16.Top: = image5.Top; image16.Show; image16.hide; k: = image5.left; l: = image5.Top;

for i: = 1 to 8 do begin

image16.left: = k +64 * i; image16.Top: = l +64 * i; image16.show; image16.hide; image16.left: = k-64 * i;

image16.Top: = l-64 * i; image16.show; image16.hide; image16.left: = k-64 * i; image16.Top: = l +64 * i;

image16.show; image16.hide; image16.left: = k +64 * i; image16.Top: = l-64 * i; image16.show; image16.hide; end;

for i: = 1 to 8 do begin

image16.left: = k +64 * i; image16.Top: = l; image16.show; image16.hide; image16.left: = k-64 * i; image16.Top: = l;

image16.show; image16.hide; image16.left: = k; image16.Top: = l +64 * i; image16.show; image16.hide;

image16.left: = k; image16.Top: = l-64 * i; image16.show; image16.hide; end; end;

if (image6.left> = 0) and (image6.left <= 448) and (image6.Top> = 0) and (image6.Top <= 448) then begin

image16.Left: = image6.Left; image16.Top: = image6.Top; image16.Show; image16.hide;

k: = image6.left; l: = image6.Top; image16.left: = k +64; image16.Top: = l-64; image16.show; image16.hide;

image16.left: = k-64; image16.Top: = l-64; image16.show; image16.hide; image16.left: = k +64; image16.Top: = l +64; image16.show; image16. hide; image16.left: = k-64; image16.Top: = l +64; image16.show; image16.hide; end;

image15.Show; image15.Left: = image7.Left; image15.Top: = image7.Top; image15.Hide; end;

{Для інших 11 фігур - аналогічно}

7. Керівництво користувача

Рис.1. Робоче вікно програми - визначення допустимості ходу для білої тури

При розробці програми застосовувався прийнятий в середовищі Delphi об'єктно-орієнтований підхід для розробки інтерфейсу.

Призначення пунктів меню:

  1. Запуск - містить 2 вкладки:

  • Нове - запуск програми наново;

  • Вихід - вихід з програми;

  1. Дія - Показати допустимий хід - показує допустимий хід для виділеної фігури.

В області Вибір фігури є кнопка Почати - вона дає можливість вибрати колір фігури, показавши область Вибір кольору.

Вибір кольору містить дві кнопки Білий і Чорний. Кнопка Білий показує набір з шести білих фігур. Кнопка Чорний - набір з шести чорних фігур.

Фігури переміщуються по полю простим перетягуванням миші. Виділення ставиться клацанням кнопки миші з обраної фігурі. Знімається виділення другого клацанням миші по фігурі.

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

  1. Проектування програми

  1. Вхідні дані: вибір кольору фігур, вибір самих фігур, визначення положення фігур до і після ходу.

  2. Основні функції: визначити допустимість ходу виділеної фігури, враховуючи при цьому положення інших фігур на дошці і зафарбовуючи, таким чином, тільки ті клітини, де обрану фігуру не зможуть «зрубати» інші фігури.

  3. Вихідні дані: програма показує допустимий хід, зафарбовуючи відповідні клітини шахової дошки.

  1. Тестування програми

Тест програми - це набір вхідних даних та результату: <вхідні дані; результат>.

  1. <Жодна фігура не виділена, дії не відбувається>

  2. <Немає ні однієї фігури на дошці, дії не відбувається>

  3. <Одна з фігур на дошці виділена, відбувається визначення допустимого ходу>

  4. <Всі можливі ходи виділеної фігури перекриваються фігурами іншого кольору, допустимий хід відсутній>

Висновок

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

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

Молчанова Л.А., Пруднікова Л.І. Delphi в прикладах і завданнях: Навч. посібник. Владивосток: Вид-во ТДЕУ, 2006. - 92с.

Додати в блог або на сайт

Цей текст може містити помилки.

Програмування, комп'ютери, інформатика і кібернетика | Курсова
52.1кб. | скачати


Схожі роботи:
Програма для оцінки шахової ситуації
Належність і допустимість доказів та зміст судового рішення
Навіювання зміненого ходу часу
Відеозапис як засіб фіксації ходу розслідування
Велика Вітчизняна війна 2 Вивчення ходу
Самохідний гірничо-шахтний транспорт на пневмоколісному ходу
Механізоване відділення в наступі з ходу на противника що обороняється
Механізоване відділення в наступі з ходу на противника що обороняєт
Проектування і попередній розрахунок точності полігонометричних ходу при створенні геодезичного
© Усі права захищені
написати до нас