7.2. ЗАДАЧА «ПЕРЕСТАВЬ ФИШКИ» Файл ARROWS.BAS
DIM arws(l TO 9) 'для кодирования фишек CLS 'очистка экрана PRINT "Поменяйте местами красные и синие фишки." PRINT "Все ходы делаются в направлении стрелок." PRINT "Разрешается ходить на соседнее свободное поле" PRINT "или перепрыгивать через одну фишку другого цвета." PRINT "На фишки, которыми можно ходить, указывает л." PRINT "Выбор варианта клавишей SPACE, ход по нажатию клавиши Enter. "
arws(5) = 0 'пустое место посередине var% = 1 'начальное значение варианта хода FOR i% = 1 ТО 4 'цикл начального размещения фишек arws(i%) == 1 'слева красные arws(10 - i%) = -1 'справа синие NEXT i% 'конец цикла размещения FOR i% = 1 ТО 9 'цикл вывода начального положения
GOSUB arrow 'вывод изображения фишки NEXT i% 'конец цикла вывода empty% = 5 'пустышка посередине DO 'начало цикла игры
р1% = empty% - 1 'позиция для сдвига слева IF pl% > О THEN 'если есть фишка для сдвига, то IF arws(pl%) о 1 THEN 'если ее нельзя двигать, то pl% = pl% - 1 'позиция для прыжка слева IF pl% > О THEN 'если есть фишка для прыжка, то IF arws(pl%) О 1 THEN pl% = О
'если нельзя прыгать, то О END IF END IF
END IF 'если нет фишки слева, то нуль pr% = empty% + 1 'позиция для сдвига справа IF pr% < 10 THEN 'если есть фишка, то
IF arws(pr%) о -1 THEN 'если ее нельзя двигать, то pr% = pr% + 1 'позиция для прыжка справа IP pr% < 10 THEN 'если есть фишка для прыжка,то IF arws(pr%) О -1 THEN pr% = 10
'если нельзя прыгать, то 10 END IF END IF END IP
IF pr% - pl% > 9 THEN 'если оба указателя вне массива, то LOCATE 15, 30: PRINT "Увы, Вы проиграли..."
'проигрыш
EXIT DO 'выйти из цикла игры ELSE 'иначе q% = 1 - 2 * SGN(pl% * (10 - pr%))
'вычисление признака вариантов END IF IF q% > 0 THEN ' если вариант единственный, то