дисплея для вывода информации о положении фишек. Тогда их начальная расстановка может выглядеть следующим образом:
)»» <«<¦
при этом левая и правая границы расположения фишек (и пустого места тоже!) на дисплее будут обозначены символом вертикальной черты, пустое место — символом подчеркивания, а направления стрелок на фишках — символами неравенства ("больше" — стрелка вправо, "меньше" — стрелка влево). Для выигрыша нужно получить следующую "картинку":
¦«« »»¦
Поскольку по правилам игры фишки могут занимать 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 "¦";