Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Министерство образования и науки Российской Федерации
Агентство по образованию
Тихоокеанский государственный экономический университет
Экономический институт
Курсовая работа
Допустимость хода шахматной фигуры
Выполнил: студент
Воронцов А.В.
Проверила: профессор
Л.И. Прудникова
Владивосток 2009
Содержание
Заключение
Список литературы
1. Неформальная постановка задачи
Определить допустимость хода шахматной фигуры на «пустой» доске. Задано: положение фигуры до и после хода, название фигуры и её цвет.
2. Формальная постановка задачи
Для программной реализации необходимо создать шахматное поле и фигуры.
Шахматное поле представляет собой массив {aij}, имеющий количество строк i=8 и количество столбцов j=8. В нём программа закрашивает клетки той фигуры, которая выбрана, ориентируясь по координатам.
Фигура на доске это объект bkl,имеющий координаты: k ширина, l высота. Программа показывает возможность одного хода, закрашивая клетки в массиве, на которые выбранный объект может переместиться. При этом программа учитывает расположение других объектов и, если таковые имеются, стирает те закрашенные клетки, на которых выбранный объект могут «срубить».
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 объектно-ориентированный подход для разработки интерфейса.
Назначение пунктов меню:
В области Выбор фигуры есть кнопка Начать она даёт возможность выбрать цвет фигуры, показав область Выбор цвета.
Выбор цвета содержит две кнопки Белый и Чёрный. Кнопка Белый показывает набор из шести белых фигур. Кнопка Чёрный набор из шести чёрных фигур.
Фигуры перемещаются по полю простым перетаскиванием мыши. Выделение ставится щелчком кнопки мыши по выбранной фигуре. Снимается выделение вторым щелчком мыши по фигуре.
Кнопка Начальное положение фиксирует положение выделенной фигуры на поле в данный момент. Если после нажатия этой кнопки перетащить выделенную фигуру на другую клетку, а затем нажать на кнопку Положение после хода, то программа скажет, правильно ли пользователь перетащил фигуру. Если правильно, в правом окошке области Результат появится сообщение, что ход допустим, а если нет то высветится сообщение об ошибке.
Тест программы это набор входных данных и результата: <входные данные; результат>.
Заключение
Результатом работы над курсовой работой создано приложение в среде Delphi, которое определяет в нем допустимость шахматного хода и визуализирует его на форме приложения.
Список литературы
Молчанова Л.А., Прудникова Л.И. Delphi в примерах и задачах: Учеб. пособие. Владивосток: Изд-во ТГЭУ, 2006. 92с.