Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Вывод элементов массива по верх клеток табло.
В итоге на экране появляется табло с шестнадцатью клетками, остается лишь в центр этих клеток поместить цифры из двумерного массива. Так как мы находимся в графическом режиме, то для вывода элементов двумерного массива используем процедуру OutTextXY. В итоге на экране появится достаточно аккуратное и не плохо оформленное табло с клетками, в центре каждой из которых, находится цифра. В будущем, когда пользователь будет перемещать клетки, он фактически будет совершать операции с массивом и на экран будет выводиться информация из массива, в котором осуществлена перестановка, а клетки останутся неизменными.
Поиск пустого элемента. В данном разделе осуществляется поиск пустого элемента, чтобы в дальнейшем относительно него можно было бы осуществлять передвижение Данный раздел реализован в процедуре Poisk. Программа при помощи инструкции For и переменных i и j сравнивает каждый элемент двумерного массива AS, с пустым элементом, при помощи инструкции IF и когда находит, присваивает значения переменных i и j переменным strok и stolb. Таким образом, переменные strok и stolb как бы являются координатами пустого элемента. Общий алгоритм данного раздела заключается в следующем (Схема 6): – Выбор элемента массива; – Проверка, является ли данный элемент пробелом; – Присвоение координат строки и столбца переменным.
Нет Нет
Да
Схема 6 - Раздел Поиск
Выбор элемента массива. При помощи инструкции For поочередно будем выбирать каждый элемент массива.
Проверка, является ли данный элемент пробелом. При помощи инструкции If, сравниваем каждый элемент массива с пробелом.
Запоминание координат пробела. Переменным strok и Stolb присваиваем координаты пустого элемента. Ввод направления перехода. В данном разделе пользователю предлагается выбрать направление перехода клеток с цифрами, относительно пустой клетки. Выбор осуществляется при помощи курсора, на клавиатуре. Данный раздел алгоритма реализован в процедуре Napravlenie. Фактически некоторой переменной ch (типа char) присваивается код нажатой клавиши. Алгоритм процедуры заключается в следующем: – Пользователю предлагается, при помощи курсора, ввести направления перехода. – После того как пользователь, нажал кнопку на клавиатуре, код клавиши присваивается переменной ch, при помощи функции readkey. К примеру, если пользователь ввел направление курсора вверх, это означает, что пользователь нажал служебную клавишу под кодом 72.
Перемещение элементов табло. В данном разделе, в зависимости от направления перехода, выбранное ранее при помощи курсора, и местоположение пустой клетки, происходит перемещение: - Стрелка влево – перемещает влево цифру, стоящую справа от пустой клетки; - Стрелка вправо – перемещает вправо цифру стоящую слева от пустой клетки; - Стрелка вниз – перемещает вниз цифру стоящую сверху от пустой клетки; - Стрелка вверх – перемещает вверх цифру стоящую снизу от пустой клетки. Данный алгоритм реализован в процедуре Zamena. Общий алгоритм данного раздела заключается в следующем (Схема 7): - Выбор направления перестановки; - Перемещение клеток; - Запись об очередном сделанном ходе.
Схема 7 - Раздел Замена.
Выбор направления перестановки. Ранее пользователь сделал ход, а это значит, что мы имеем нажатую служебную клавишу, под каким либо номером. При помощи инструкции IF и функции ord, выбирается направления перестановки элементов.
Перемещение клеток. В зависимости от значений переменных Strok, Stolb, которым было присвоено координаты пустого элемента в массиве (5.3.4) и выбранного направления, осуществляется перемещение. Например, пользователь ввел направление курсора вверх, это означает, что пользователь нажал служебную клавишу под кодом 72, тогда, при помощи инструкции if и функции ord (if ord(ch)=72 then), осуществляется перемещение. Перемещение осуществляется по следующему принципу: пустой клетки, а именно элементу массива с координатами as[strok, stolb], присваивается содержимое элемента стоящего под пустой клеткой (as[strok, stolb]: = as[strok+1, stolb]; ), а соответственно элементу, стоящему под пустой клеткой присваивается пробел (as[strok+1, stolb]: =' '; ).
|
Последнее изменение этой страницы: 2019-10-24; Просмотров: 169; Нарушение авторского права страницы