32
КУРСОВА РОБОТА
на тему: «Еврістичне створення головоломки»
5
7
3
8
15
1
13
2
14
10
6
4
9
11
12
Рис. 2.1.1. Функціональна схема
Розділ Керування.
У даному розділі, користувачеві пропонується ознайомитися із клавішами керування.
Розділ Гра.
Даний розділ є основним. Саме в цьому розділі відбуваються основні події. Реалізований даний алгоритм за допомогою процедури Game15.
Алгоритм даного розділу полягає в наступному:
1. Ініціалізація графічного режиму;
2. Заповнення в пам'яті комп'ютера табло випадковими цифрами;
3. Вивід табло на екран;
4. Уведення напрямку переходу;
5. Пошук порожнього елемента;
6. Переміщення елементів табло;
7. Вихід з режиму гри:
У програмі використовуються наступні вхідні дані (див. табл. 2.1.1.).
Таблиця 2.1.1. Імена та типи даних
Ім'я ідентифікатора
Тип
Призначення
as
array [1.. 3,1..3] of string
Необхідно для зберігання елементів табло
bs
array [1..16] of integer
Необхідний для виведення випадкових чисел
hod
integer
Лічильник, що зчитує кожен хід, хроблений користувачем
i, j
Необхідні для роботи з масивами
strok, stolb
Необхідні для збереження координат порожньої комірки
Ch
Char
Необхідна для збереження коду натиснутої клавіші клавіатури
Рис. 2.2.1. Алгоритм гри
1) Ініціалізація графічного режиму
Ініціалізація графічного режиму здійснюється в процедурі Game15. Перехід до графічного режиму здійснюється, за допомогою процедури Initgraph (grdriver, grmode, grpath), де grdriver - це використовувані програмою драйвер відеоадаптера (VGA), grmode - режим роботи відеосистеми (Vgahi), grpath - це місце знаходження файлу EGAVGA.BGI на диску (як і у випадку з файлами, пишемо тільки ім'я й розширення файлу, а не повний шлях, для того щоб у майбутньому можна було переміщати файли програми).
2) Заповнення табло випадковими числами
У пам'яті комп'ютера створюється табло, в якому, надалі проводитимуться перестановки. Табло складається з 16 (4 рядки і 4 три стовпці), яке заповнюється п'ятнадцятьма, цифрами, що не повторюються, від 1 до 15 і однією порожньою кліткою.
Даний розділ реалізований за допомогою процедури Tablo. Фактично табло, яке описується раніше це двовимірний масив з цифрами від 1 до 15 і порожня клітинка.
Наступному моментом реалізації даної процедури, є заповнення табло випадковими цифрами. Для заповнення табло випадковими цифрами використовується функція random, яка є генератором випадкових цифр, але працює відповідно тільки з цифрами, а у нас рядковий двовимірний масив.
Проаналізувавши вище сказане, приходимо до того, що необхідно створити два масиви. Один одномірний із шістнадцяти елементів типу integer, другий двовимірний, чотири на чотири, типу string. Спочатку одномірний масив, у випадковому порядку, заповнюється цілими неповторюваними цифрами від 1 до 16, а потім залежно від розташування цифр, заповнюється двовимірний строковий масив. ПРИМІРОМ, якщо перший елемент одномірного масиву дорівнює цифрі 11 тоді першому елементу двовимірного масиву буде привласнено рядок «11».
Загальний алгоритм (Рис. 2.2.2. Алгоритм заповнення табло випадковими числами.) полягає в наступному:
Вибір випадкового числа;
Перевірка на наявність збігів в масиві;
Заповнення двовимірного масиву;
Рис. 2.2.2. Алгоритм заповнення табло випадковими числами
Деякій змінній b привласнюється випадкове число, за допомогою функції random. При чому функція random обмежена інтервалом від 1 до 16.
Перевірка, чи є співпадання;
Змінна b порівнюється з кожним елементом масиву bs[і], за допомогою інструкцій For і if. Якщо такий елемент уже присутній в одномірному масиві, тоді змінної b, знову привласнюється випадкове число. Так відбувається доти, поки змінної b не буде привласнена цифра, якої ще немає в масиві.
Страницы: 1, 2, 3