IZ = I - in FOR jn = 1 TO 8 JZ = J - jn

IF IZ * JZ * (IZ + JZ) * (IZ - JZ) = 0 THEN LOCATE 2 * in, 5 * jn - 2 PRINT CHR$ (32) + CHR$ (32) ;

END IF NEXT jn NEXT in

LOCATE 2*1, 5*J-2 'вывод изображения нового ферзя PRINT CHR$(219) + CHR$(219) ;

В противном случае проверяется корректность передвижения маркера. Если движение допустимо, то стирается старое изображение маркера (но не ферзя!) и выводится новое. При некорректном выборе направления выдается звуковой сигнал.

ELSE

in = I + Id: jn = J + Jd

'предполагаемое новое положение маркера IF in > О AND in < 9 AND jn > 0 AND jn < 9 THEN IF SCREEN(2 * I, 5 * J - 2) 0 219 THEN LOCATE 2*1, 5*J-2 PRINT " ";

END IF I = in: J = jn LOCATE 2*1, 5*J-2 PRINT CHR$(176) + CHR$(176) ;

ELSE BEEP

'сигнал о попытке некорректного сдвига маркера END IF END IF

И наконец, проверяется количество ферзей на доске, для чего производится чтение из ЗУ адаптера дисплея. При наличии 8 изображений ферзей исполняется команда выхода из цикла игры.

jc = 0 'подсчет количества ферзей FOR in = 1 ТО 8 FOR jn = 1 ТО 8

IF SCREEN(2 * in, 5 * jn - 2) = 219 THEN jc = jc + 1 NEXT jn NEXT in

IF jc = 8 THEN LOCATE 18, 1: PRINT "ПОЗДРАВЛЯЮ!": EXIT DO LOOP 'конец цикла игры END

Как видно из текста программы, расстановка ферзей запоминается только на экране (точнее в ЗУ адаптера дисплея), а текущая позиция маркера запоминается в памяти данных программы.

Вариант под названием QUEENS. ВАЗ с использованием графического режима дисплея приведен в "Приложениях". Разумеется, в этом случае клетки шахматной доски окрашены в соответствии с их расположением (четностью суммы номеров столбца и строки) в темно-серый или светло-серый цвет. Маркер изображается в виде контура ферзя. Маркер и