В данном случае необходимо обратить внимание на логику возврата к предыдущей вертикали. При этом нужно обязательно восстановить то состояние переменных (номера вертикали и горизонтали), которое было до перехода к следующей вертикали.
ELSE 'если это не последняя вертикаль, то j% = j% + 1 'увеличить номера вертикали GOSUB check 'перейти на поиск в следующей вертикали j% = j% - 1 'при возврате уменьшить номер вертикали i% = q(j%) 'и восстановить номер горизонтали END IF END IF
i% = i% + 1 'увеличить номер горизонтали LOOP UNTIL i% > 8 'конец цикла проверки по вертикали BETUKM 'выход после перебора по вертикали
Запустив эту программу, вы получите на дисплее вывод всех вариантов расстановки ферзей. Эти варианты с точки зрения математики не являются независимыми. Исключая зеркально и поворотно симметричные расстановки можно свести эти варианты к 12 независимым решениям.
Для тех, кто не осилит или поленится ввести и запустить эту программу, приведем результат вывода кодов на экран, "отфильтрованный" автором:
15863724 16837425 24683175 25713864 25741863 26174835 26831475 27368514 27581463 35841726 36258174 35281746
Напомним, что в соответствии с математической моделью порядковый номер цифры в коде дает положение ферзя по горизонтали, а значение цифры — положение по вертикали. Первые 11 из приведенных кодов решений дают по 8 вариантов, последний в силу его симметрии — только 4, итого 92.
5.5. ЗМЕЯ
Настала пора показать пример программирования игр, в которых играющему прежде всего необходимо быстро и правильно реагировать на изменение ситуации. Высказывая некоторое пренебрежение к такого рода играм, автор тем не менее не может обойти их по двум соображениям. Во-первых, не любить что-то делать не обязательно означает не уметь (хотя интерес к работе может существенно улучшить ее результат). Во-вторых, нельзя оставить обучающегося в неведении относительно программирования таких игр.
Прежде всего необходимо отметить, что программирование "подвижных" игр на интерпретирующем языке имеет свою специфику из-за существенного замедления работы программы. Поэтому здесь применима только псевдографика в текстовом режиме. По той же причине используются непосредственные чтение из и запись в ЗУ адаптера дисплея. Так что текст программы, приведенной в "Приложениях" под названием SNAKE. ВАЗ, читать и понимать будет несколько труднее, чем в предыдущих занятиях.