Язык программирования Форт


Глава 11. Создание слов-определителей - часть 15


Принципы игры "Жизнь" очень простые: перед началом игры с помощью простого редактора на экране дисплея изображаются колонии "клеточных бактерий" (представленные простыми графическими образами или буквами). После того как введена картина их исходного расположения, начинается жизнь первого "поколения". У каждой клетки имеется восемь соседних позиций

Для программирования игры "жизнь" нужно создать два массива. Первый массив - это массив клеток, изображаемых на экране. Второй - массив числа соседей каждой клетки. После завершения подсчета числа соседей значения элементов массива используются для определения мест, где клетки умирают, продолжают жить или возникают. Эта информация используется для обновления первого массива, который будет представлять следующее поколение. Вас может заинтересовать программирование игры "Жизнь" на Форте, однако мы ограничимся здесь составлением программы только для одномерного случая игры LINELIFE, в которой каждая клетка может иметь только двух соседей: слева и справа. В этом случае умирает клетка, не имеющая соседей или имеющая двух соседей, но те, которые имеют только одного соседа, будут выживать. Если соседи находятся по обе стороны от незанятой позиции, то в ней возникает новая клетка. Задача составления этой программы для нас состоит не столько в том, чтобы сделать интересную игру, сколько в том, чтобы рассмотреть еще один пример программирования с использованием конструкции слов-определителей CREATE...DOES.

Программа начинается с объявления констант 42 CONSTANT CHAR 66 CONSTANT LLEN где CHAR - это символ "*", используемый для изображения клетки, а LLEN - это увеличенная на 2 длина строки, выводимой на экране. Слово LLEN делается на два больше длины выводимой строки для того, чтобы программа подсчета числа соседей могла работать и с крайними позициями строки. Следующим шагом будет резервирование места для двух массивов с помощью CREATE IMAGE LLEN ALLOT IMAGE 1+ CONSTANT *IMAGE CREATE CALCS LLEN ALLOT CALCS 1+ CONSTANT *CALCS где IMAGE - это строка, которая должна быть выведена на экран, а CALCS - массив информации о числе соседей каждой клетки.


- Начало -  - Назад -  - Вперед -