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

Мета: Протестувати роботу програми-інтерпретатора в реальних умовах. Створити першу програму керування рухомим об’єктом. Організувати роботу з візуалізації переміщень об’єктів та їх дій.

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

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

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

Заєць

ПОРІВНЯТИ КОД_ОБ’ЄКТУ,1;Якщо перед нами трава

РІВНІ 5; переходимо на рядок 5

НАЛІВО; інакше повертаємося наліво

ПЕРЕЙТИ 1; і переходимо до рядку 1

ШАГ; робимо крок вперед

;інтерпретатор автоматично перейде на 1-й рядок

;команд

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

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

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

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


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



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