50151 (Створення програми "Шаховий кінь")

2016-07-30СтудИзба

Описание файла

Документ из архива "Створення програми "Шаховий кінь"", который расположен в категории "". Всё это находится в предмете "информатика" из 1 семестр, которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "курсовые/домашние работы", в предмете "информатика, программирование" в общих файлах.

Онлайн просмотр документа "50151"

Текст из документа "50151"

Міністерство освіти і науки України

Полтавський національний технічний університет

імені Юрія Кондратюка

Факультет інформаційних та телекомунікаційних технологій і систем

Кафедра комп’ютерних та інформаційних технологій і систем

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

з дисципліни "Основи програмування та алгоритмічні мови"

Розробив cтудент

групи 101-ТН101-ТН

Захарченко О.П.

Керівник роботи

д. т. н. Ляхов Олександр Логвінович

Полтава 2010

Зміст

Вступ

Постановка задачі

Розв’язання задачі

Алгоритм задачі

Демонстрація роботи програми

Висновок

Використана література


Вступ

Я маю завдання написати програму "Шаховий кінь". Для цього я використовую мову Turbo Pascal, бо програмування в середовищі MS-DOS набагато простіше ніж у MS Windows. Тому ця простота залишається головною причиною, чому тисячі та тисячі людей починають свій шлях у програмуванні з Turbo Pascal.

Мова зроблена наприкінці 60-х - на початку 70-х років ХХ-століття швейцарським професором Ніклаусом Віртом для навчання студентів основам програмування. Приставку Турбо мова отримала після створення А. Хейлсбергом, одним з учеників Вірта, компілятора, ща на той час відрізнявся рекордною швидкістю.

Система програмування Turbo Pascal являє собою єдність компілятора Pascal (мова названа на честь видатного французького математика та філософа Блеза Паскаля 1623-1662р. р) та інструментальної оболонки, що підвищує єфективність створення программ.


Постановка задачі

Умова задачі: "Шаховий кінь".

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

Розв’язанню цієї задачі присвятили багато досліджень та існує багато різних методів вирішення. Ця задача відома як мінімум з XVIII століття, Леонард Єйлер посвятив їй велику роботу. Крім цього він розробив для інших фігур аналогічні задачі.

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

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

Розв’язання задачі

Задача зроблена алгоритмом з відходом назад. Використаємо два одновимірних масиви row [64] та col [64] для зберігання відповідних номерів рядків та стовпців, які кінь послідовно проходить по дошці.

Кінь, що знаходиться в позиції (i,j), може наступним ходом опинитися в клітинках з кординатами (i-2, j+1), (i-1, j+2), (i+1, j+2), (i+2,,j+1), (i+2,,j-1), (i+1, j-2), (i-1, j-2), (i-2, j-1). Якщо кінь стоїть з краю дошки, то деякі його ходи можуть викликати переміщення за межі дошки, а це недопустимо. Вісім можливих переміщень даної фігури задані в вигляді двох масивів ktmov1 [8] та ktmov2 [8].

Виходячи з цього, кінь в позиції (i,j) може переміститися в позицію (i+ktmov [k], j+ktmov2 [k]), де k-значення з діапазону 1-8, що вибирається з умови, що кінь повинен бути на дошці.

У своїй программі, для виведення чисел у графічному режимі в задані кординати я спочатку зберіг числа у текстовий файл, а потім зчитав у строкову змінну, так як процедура outtextxy () виводить лише символьні дані.

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


Алгоритм задачі

А. Початок

Б. Виведення зображення

В. Алгоритм пошуку

Реалізація програми

program horse;

uses graph,crt;

var

arr: array [1. .8,1. .8] of integer;

row: array [1. .64] of integer;

col: array [1. .64] of integer;

i,j,move_num,d: integer;

ktmov1: array [1. .8] of integer;

ktmov2: array [1. .8] of integer;

procedure writeboard;

var

a,d,m,b,sz,c: integer;

f: text;

n: string;

begin

sz: =32;

d: =detect;

initgraph (d,m,'');

setfillstyle (1,brown);

cleardevice;

for a: =1 to 8 do

for b: =1 to 8 do

begin

rectangle (a*sz,b*sz, (a+1) *sz, (b+1) *sz);

if (a+b) mod 2=0 then floodfill (a*sz+3,b*sz+3,white);

end;

assign (f,'tmp. dta');

circle (row [1] *sz+sz div 2,col [1] *sz+sz div 2,10);

for c: =2 to 64 do

begin

rewrite (f);

write (f,c);

close (f);

reset (f);

read (f,n);

close (f);

outtextxy (row [c] *sz+3,col [c] *sz+3,n);

circle (row [c] *sz+sz div 2,col [c] *sz+sz div 2,10);

line (row [c] *sz+sz div 2,col [c] *sz+sz div 2,row [c-1] *sz+sz div 2,col [c-1] *sz+sz div 2);

readkey;

end;

readln;

closegraph;

end;

procedure addknight;

var

a,b,e: integer;

begin

arr [i,j]: =1;

row [move_num]: =i;

col [move_num]: =j;

inc (move_num);

for a: =1 to 8 do

begin

if move_num>=65 then

begin

exit;

end;

b: =i+ktmov1 [a] ;

e: =j+ktmov2 [a] ;

if (b8) or (e8) then

continue;

if (arr [b,e] =1) then

continue;

i: =b;

j: =e;

addknight;

end;

dec (move_num);

arr [row [move_num],col [move_num]]: =0;

dec (move_num);

i: =row [move_num] ;

j: =col [move_num] ;

inc (move_num);

end;

begin

ktmov1 [1]: =-2;

ktmov1 [2]: =-1;

ktmov1 [3]: =1;

ktmov1 [4]: =2;

ktmov1 [5]: =2;

ktmov1 [6]: =1;

ktmov1 [7]: =-1;

ktmov1 [8]: =-2;

ktmov2 [1]: =1;

ktmov2 [2]: =2;

ktmov2 [3]: =2;

ktmov2 [4]: =1;

ktmov2 [5]: =-1;

ktmov2 [6]: =-2;

ktmov2 [7]: =-2;

ktmov2 [8]: =-1;

i: =1;

j: =1;

move_num: =1;

addknight;

writeboard;

end.

Демонстрація роботи програми

Робота программи:


Висновок

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


Використана література

  1. Ковалюк Т.В. Основи програмування - К., 2005

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5137
Авторов
на СтудИзбе
440
Средний доход
с одного платного файла
Обучение Подробнее