дисплея для вывода информации о положении фишек. Тогда их начальная расстановка может выглядеть следующим образом:

)»» <«<¦

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

¦«« »»¦

Поскольку по правилам игры фишки могут занимать 9 позиций, для размещения отображающих их чисел введем целочисленный массив Arrows со значением индекса от 1 до 9. Фишки со стрелками вправо можно закодировать как +1, фишки со стрелками влево как -1, а пустое место как О (как это ни покажется странным, но пустое место также должно быть закодировано в математической модели!). Состояние объекта игры полностью описывается содержимым целочисленного массива и должно соответствующим образом отображаться на дисплее. Все действия играющего по перестановке фишек также должны моделироваться перестановкой соответствующих чисел в массиве.

Нижеприведенная программа не содержит построчных комментариев, обычно употреблявшихся в предыдущем разделе. Вместо этого текст программы прерывается более или менее подробными объяснениями смысла действий, производимых последующей частью программы. Программа начинается с записи исходного положения пустышки и фишек в массив из 9 целых чисел.

DIM Arrows (I TO 9) AS INTEGER 'массив для фишек и пустышки

CLS

Arrows (5) = 0 'запись исходного состояния в массив

FOR i% = 1 ТО 4

Arrows(i%) = 1

Arrows(10 - i%) = -1 NEXT i%

После этого начинается циклическая часть программы, в ходе выполнения которой сначала выводится на дисплей текущее состояние модели. Перед выводом символа подчеркивания запоминается позиция пустышки Empty%.

DO 'начало цикла игры

LOCATE 10, 31 'вывод положения фишек на экран PRINT " ¦ " ;

FOR i% = 1 ТО 9 j% = Arrows(i%) IF j% = 0 THEN Empty % = i% PRINT " " ;

ELSE

IF j% > 0 THEN PRINT ">"; ELSE PRINT "<" ;

END IF NEXT i% PRINT "¦";