Розробка параметрів віртуального середовища

ВСТУП

Теорія операційних систем – одна з найважливіших дисциплін у формуванні знань майбутнього інженера-програміста. Щоб довести це досить згадати яку роль відіграють операційні системи серед іншого програмного забезпечення. Жодна сучасна обчислювальна машина не обходиться без операційної системи – головної програми, що безпосередньо керує розподіленням всіх ресурсів комп’ютера, завантаженням та виконанням інших програм, дозволяє програмісту писати складні ефективні програми, забезпечуючи його необхідним набором функцій. І всі ці задачі покладені на єдиний комплекс програмних засобів, що ми називаємо операційною системою. Тому зрозуміло, що неможливо уявити майбутнього спеціаліста з комп’ютерних наук без знань внутрішнього устрою, принципів проектування та розробки операційних систем.

Крім отримання теоретичних знань, вивчення курсу теорії операційних систем передбачає проведення лабораторних занять, під час яких студенти вчаться на практиці проектувати та програмувати механізми операційних систем. Щоб не ускладнювати студентам роботу і дати їм можливість сконцентрувати увагу на безпосередньому функціонуванні того чи іншого механізму, завдання до лабораторних робіт побудовані на принципі аналогій. Ті самі принципи, на яких будуються операційні системи, успішно використовуються і в більш простих програмах, наприклад, віртуальних машинах, комп’ютерних іграх тощо. Так в комплексі лабораторних робіт з теорії операційних систем студентам пропонується створити програму, що керує віртуальним світом. Ця програма фактично є аналогом операційної системи. Але в якості ресурсів обчислювальної машини виступає ігрове поле з об’єктами, що на ньому розташовані, з власними правилами існування та пересування на цьому полі. В якості програм користувача виступають ігрові юніти, поведінка яких програмується за допомогою спеціально розробленого набору команд – аналог команд центрального процесора в обчислювальній машині. Послідовне виконання набору команд кожного юніта буде аналогічним до виконання завантаженої програми, а в сукупності з використанням ресурсів ігрового поля дасть студентам змогу ознайомитись з функціонуванням процесів в операційній системі та з особливостями керуваннями ними. Існування декількох юнітів одночасно дозволить студентам ознайомитись з принципами побудови багатозадачних операційних систем, з конкуренцією процесів та стратегіями планування.

Виконання лабораторного комплексу розділено на декілька етапів:

1. Розробка параметрів віртуального середовища.

2. Створення інтерпретатора команд.

3. Введення в середовище одинокого об’єкта.

4. Організація багатозадачночті. Введення декількох об’єктів з різними алгоритмами поведінки.

5. Організація діалогу з користувачем.

6. Створення об’єктів з різними пріоритетами.

7. Підготовка документації по створеному віртуальному середовищу.

На кожен з етап виділяється певна кількість годин у відповідності до його складності.

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

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


ЕТАП І

Розробка параметрів віртуального середовища

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

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

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

Так при стандартному текстовому режимі 80х25 16 кольорів найбільш зручним може стати розмір ігрового поля – 80х20 (5 рядків екрану відведемо для діалогу з користувачем та відображення статистичної інформації). При використанні графічного режиму 640х480 ми можемо розбити екран на клітини 8х8 і отримати ігрове поле розміром 80х50 (знову залишивши місце для службової інформації).

Увага! Не слід робити ігрове поле занадто великим. Це не тільки ускладнить реалізацію вашої системи, погіршить наочність її роботи, але й буде відволікати від основної вашої задачі.

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

Зберігати ігрове поле найзручніше у вигляді двовимірного масиву. Кожен елемент масиву буде зберігати певне значення – код об’єкту, що знаходиться у відповідній клітині. Так як загальна кількість об’єктів орієнтовно не буде перевищувати кількох десятків, то достатньо виділити для зберігання кожного елементу 1 байт. Таким чином в синтаксисі алгоритмічної мови Pascal об’ява такого масиву буде виглядати приблизно таким чином:

GameField: array[1..80,1..20] of byte;

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

Вибір об’єктів, як і їх властивості, буде залежати від обраної вами «легенди». Для прикладу оберемо моделювання взаємодії рослин і істот в звичній нам флорі і фауні. Тоді ми можемо виділити, наприклад, такі об’єкти:

1. Грунт – гола земля. По землі можна вільно пересуватися, тому в клітині поля, де розташовано грунт, може знаходитися будь який з рухомих об’єктів – юнітів. Земля може бути родючою, тому об’єкт грунт може переходити в інший об’єкт, наприклад низька рослинність (трава). Нехай код цього об’єкту буде 0.

2. Межа поля – службовий об’єкт, що не відображається на екрані. Використовується для полегшення керування полем. Основною властивістю є те, що в цьому полі не може знаходитися не один інший об’єкт (не можна переходити межу). Для зручності призначену цьому об’єкту код 255 (або -1).

3. Низька рослинність – або трава. Об’єкт який може слугувати поживою для невеличких тварин і при цьому переходити в об’єкт «грунт». Через цей об’єкт можна пересуватися. Нехай код цього об’єкту буде 1.

4. Висока рослинність – кущі та дерева. Об’єкт, що може слугувати поживою для більших тварин і при цьому перетворюватись на об’єкт «низька рослинність». Через цей об’єкт не можна пересуватися, тому в клітині, де розташований об’єкт не може знаходитися будь-який юніт. Для кодування цього об’єкту використаємо, наприклад, число 2.

5. Вода. Річки, озера. Можуть слугувати поживою для будь яких тварин. Не змінюють своїх властивостей (не переходять в інші об’єкти) та не дозволяють пересуватися. Код – 3.

6. Каміння. Не є поживними, не дозволяють пересуватися, не змінюють властивостей. Код – 4.

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

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

Другий спосіб полягає в формуванні карти ігрового поля користувачем. Наприклад, у вигляді текстового файлу, в якому у вигляді матриці будуть розташовуватися коди об’єктів. Для поля 10х10 цей файл може мати наступний вигляд:

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

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

Останньою задачею першого етапу є організація виведення поля, що було згенероване, на екран. Для цього треба визначитись, яким чином будуть позначатися ті чи інші об’єкти. Самий простий спосіб – позначати об’єкти певним кольором. Наприклад грунт – чорним, каміння – сірим, воду – блакитним, низьку рослинність – світло-зеленим, високу – темно-зеленим. В графічному режимі можна створити для кожного об’єкта відповідні текстури.

Увага! Пам’ятайте, що крім ігрового поля на екрані потрібно буде розмістити додаткову статистичну інформацію, тому заздалегідь виділіть для неї певну область екрану.



Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: