Курсовая работа: Кратчайший путь передвижения короля по шахматному полю

Курсовая работа: Кратчайший путь передвижения короля по шахматному полю




👉🏻👉🏻👉🏻 ВСЯ ИНФОРМАЦИЯ ДОСТУПНА ЗДЕСЬ ЖМИТЕ 👈🏻👈🏻👈🏻




























































Министерство образования и науки Российской Федерации
Тихоокеанский государственный экономический университет
«Кратчайший путь передвижения короля по шахматному полю»

Условие решаемой задачи дословно по заданию звучит следующим образом: «найти кратчайший путь передвижения короля по заданному клеточному полю, соединяющих два заданных поля доски»
Целью представленной работы является разработка приложения “Поиск кратчайшего пути”, которое создает шахматную доску, находит кратчайший путь передвижения короля и отображает его.
Перед началом вычисления пользователь должен указывать в программе следующую информацию:
- установить слона на начальную позицию и указать конечную (при помощи мыши)
После этого программа должна показать кратчайший путь (пути) движения короля, выделяя его другим цветом.
Задачу ставит заказчик, а принимает разработчик. Между разработчиком и заказчиком должен состояться диалог, цель которого выяснить, одинаково ли они понимают задачу. Диалог может длиться день, месяц… В моей ситуации требуется написать программу, чтобы она могла найти кратчайший путь передвижения короля по заданному клеточному полю, соединяющих два заданных поля доски. Причём начальная и целевая клетки указываются при помощи мыши в запущенной программе.
Разработка или поиск алгоритма решения задачи
Проверим, чтобы король и его местоположение должны находиться на полях одного цвета.
Образуем матрицу для расчёта пути размерности n+1.
С помощью полученной матрицы во избежание выхода за шахматное поле заполним окаймляющие элементы значениями false.
Выберем все возможные клетки, когда король из начального местоположения и точки назначения, используя ранее полученную матрицу.
В появившемся при вызове программы окне вводим размерность поля.
а) если мы вводим размерность поля меньше или больше указанного диапазона, то выводится сообщение
В главном окне отмечаем расположение короля и цели. Отметив на поле короля, мы делаем проверку, чтобы пользователь не мог отметить клетку-цель на поле, не совпадающее цвету, поля короля, а также на поле где расположен сам король.
Тем самым указываются все случаи, которые могут возникнуть при решении задачи на компьютере. Каждый такой случай оформляется как некоторая функция (в смысли достижения цели)
При разработке приложения применялся принятый в среде Delphi объектно-ориентированный подход реализации интерфейса. При реализации алгоритмов обработки данных использовался структурный подход при проектировании к написании программ приложения.
В появившемся при вызове программы окне вводим размерность поля.
В главном окне отмечаем расположение слона и цели. Отметив на поле короля, мы делаем проверку, чтобы пользователь не мог отметить клетку-цель на поле, не совпадающее цвету, поля короля, а также на поле где расположен сам короля.
Если мы вводим размерность поля меньше или больше указанного диапазона, то выводится сообщение
Все предшествующие этапы необходимы для сбора информации, используемой для проектирования программы. Проект программы это не сама программа, а её эскиз, в котором чётко зафиксированы все функции задачи, как некоторые её подзадачи.
procedure TForm1.Button1Click(Sender: TObject);
var code: integer; // Сюда функция val запишет ошибку, в случае ее возникновения
val (edit2.text, razmerY, code); // Получаем размер поля
val (edit1.text, razmerX, code); // из текстовых полей
// В случае возникновения введенного числа возможному размеру поля надо выдать ошибку и завершить выполнение процедуры
if ((razmerX<4) or (razmerX>25)) then begin application.MessageBox('Неправильная циферка!', 'Шахматы', MB_APPLMODAL); exit; end;
Form2.execute(razmerX, razmerY); // Передаем данные на Form 2
form2.ShowModal; // Показываем Form 2
procedure TForm1.Edit1Change(Sender: TObject);
edit2.text:=edit1.text; // Поле - квадрат
procedure TForm1.FormPaint(Sender: TObject);
if unit2.tf=true then self.Close; // Если пользователь нажимает Выход на Form 2, нужно завершить работу проги
function max(x, y:integer):integer;
procedure procClick(sender: tobject);
procedure dda_line(x1, y1, x2, y2:integer);
img: array[1..20, 1..20] of timage;
procedure TForm2.dda_line(x1,y1, x2, y2: integer);
// Процедура получает координаты конца и начала и «рисует» линию между ними по алгоритму ДДА
i, L, xstart, ystart, xend, yend: integer;
L:=max(abs(xend-xstart), abs(yend-ystart));
// В клетки, где проходит линия, загрузим голубую картинку
img[round(x[i]), round(y[i])].Picture.LoadFromFile('put.bmp');
// В мемо запишем текущую информацию для пользователя
memo1.Lines.Add('Вам требуется' + inttostr(L) + ' ходов:))');
// Изменим внешний вид и функцию кнопки под мемо
procedure TForm2.procClick(sender: tobject);
// Процедура постановки короля на поле и указания клетки - цели
// Если это постановка короля, загрузить «короля» в выбранную клетку
if ((x +y) mod 2)=0 then (sender as timage).Picture.LoadFromFile('krch.bmp')
(sender as timage).Picture.LoadFromFile('krbl.bmp');
etap:=selectPlace; // Теперь переходим к указанию места назначения
memo1.Lines.add('Укажите целевую клетку');
// Если аккурат в этой клетке стоит король, выходим из процедуры, пользователь должен выбрать другое место
if ((korolX=x) and (korolY=y)) then exit;
(sender as timage).Picture.LoadFromFile('zel.bmp');
// Изменим значение переменой etap, чтобы больше ничего нельзя было делать: ни расставлять короля, ни выбирать клетку
// И прочертим линию от короля до клетки – назначения – это и будет кратчайший путь
dda_line(korolX, korolY, nadoX, nadoY);
procedure TForm2.Execute(x, y: integer);
// Процедура вызывается, когда от пользователя получена информация о размерах X и Y поля
etap:=postanovka; // Сейчас пользователь будет ставить короля, развернем окно на весь экран
// Высчитываем размер клетки исходя из размеров окна и количества клеток
img[i,j]:=timage.create(self); // Выделяем память
img[i,j].Parent:=self; // Указываем родителя, чтобы клетка была именно на Form 2, а не где - то
img[i,j].Stretch:=true; // Чтоб весь рисунок помещался
// В зависимости от координат поля загружаем то черный, то белый фоны для клеток
img[i,j].picture.loadfromfile('ch.bmp') //:=inttostr(x+y);
img[i,j].picture.loadfromfile('bl.bmp');//:=inttostr(x+y);
// Устанавливаем обработчик нажатия на клетку
// Снабдим мемо текущей информацией
memo1.Lines.Add('Укажите начальное место расположения короля');
memo1.Font.Name:='Times New Roman';
memo1.Width:=round(form2.width /2.5);
// Придадим кнопке под мемо соответствующий вид
bitbtn1.top:=memo1.Top+memo1.Height;
procedure TForm2.Button1Click(Sender: TObject);
procedure TForm2.FormCreate(Sender: TObject);
procedure TForm2.BitBtn1Click(Sender: TObject);
// Если tag=1, то выходим из программы
if (sender as tbitbtn).tag=1 then begin self.close; tf:=true; end;
// Иначе вновь загружаем Form 1 для указания размеров
Рис.1. Рабочее окно приложения – ставим короля
Рис.2. Рабочее окно приложения – нахождение кратчайшего пути шахматного короля
Результатом работы над курсовой работой создано приложение среде Delphi, которое находит в нем кратчайший путь и визуализирует его на форме приложения. Приложение является полупрофессиональным. Выполненные многочисленные тестовые примеры позволяют утверждать, что надежность программного обеспечения проекта довольно высока.
1. Иванов Б.Н. Дискретная математика. Алгоритмы и программы: Учеб. Пособие. – Владивосток: Изд - во ДВГТ, 2000. – 288с.
2. Молчанова Л.А., Прудникова Л.И. Delphi в примерах и задачах: Учеб. пособие. Владивосток: Изд - во ТГЭУ, 2006. – 92с.

Название: Кратчайший путь передвижения короля по шахматному полю
Раздел: Рефераты по информатике
Тип: курсовая работа
Добавлен 23:54:54 15 октября 2010 Похожие работы
Просмотров: 67
Комментариев: 15
Оценило: 3 человек
Средний балл: 5
Оценка: неизвестно   Скачать

Нахождение кратчайшего пути передвижения короля от начальной позиции до целевой клетки
Размерность поля (n), начальное месторасположение короля, целевая клетка
Срочная помощь учащимся в написании различных работ. Бесплатные корректировки! Круглосуточная поддержка! Узнай стоимость твоей работы на сайте 64362.ru
Привет студентам) если возникают трудности с любой работой (от реферата и контрольных до диплома), можете обратиться на FAST-REFERAT.RU , я там обычно заказываю, все качественно и в срок) в любом случае попробуйте, за спрос денег не берут)
Да, но только в случае крайней необходимости.

Курсовая работа: Кратчайший путь передвижения короля по шахматному полю
Бесплатно Реферат По Гинекологии
Сочинение Поучение Стилизованное Под Поучение Мономаха
Муравьев Собрание Сочинений
Реферат: Социально-педагогическая деятельность по формированию здорового образа жизни среди учащихся. Скачать бесплатно и без регистрации
Реферат: Роль маркетинга в современной деятельности аптечной организации. Скачать бесплатно и без регистрации
Реферат На Тему Виды Конфликтов
Реферат: Субъекты трудового права. Скачать бесплатно и без регистрации
Почему Важно Изучать Этикет Сочинение
Лабораторная Работа Тетрадь Химии 7 Класс
Курсовая работа: Игровые технологии в учебно-воспитательном процессе современной школы
Реферат по теме Демографический анализ Ханты-Мансийского АО
Дипломная работа по теме Интродукция и сортоизучение перспективных сортов голубики
Реферат: Ціноутворення у сфері зовнішньоекономічної діяльності
Курсовая работа по теме Бальнеологические курорты Восточной Европы
Реферат: Порядок разрешения коллективных трудовых споров. Скачать бесплатно и без регистрации
Реферат: Криминалистическая тактика и методика расследования отдельных преступлений. Скачать бесплатно и без регистрации
Дипломная работа: Федеральный законодательный процесс
Описание Хохломы Сочинение 6 Класс
Политика Безопасности Курсовая Работа
Формат Курсовых Работ
Дипломная работа: Особливості функціонування авіакомпаній
Реферат: Правовое положение третейского суда в РФ
Реферат: Западноевропейский предромантизм

Report Page