Курсовая работа: Игра "Пятнашки"
– После того как пользователь, нажал кнопку на клавиатуре, код клавиши присваивается переменной ch, при помощи функции readkey.
К примеру, если пользователь ввел направление курсора вверх, это означает, что пользователь нажал служебную клавишу под кодом 72.
5.3.6 Перемещение элементов табло.
В данном разделе, в зависимости от направления перехода, выбранное ранее при помощи курсора, и местоположение пустой клетки, происходит перемещение:
- Стрелка влево – перемещает влево цифру, стоящую справа от пустой клетки;
- Стрелка вправо – перемещает вправо цифру стоящую слева от пустой клетки;
- Стрелка вниз – перемещает вниз цифру стоящую сверху от пустой клетки;
- Стрелка вверх – перемещает вверх цифру стоящую снизу от пустой клетки.
Данный алгоритм реализован в процедуре Zamena.
Общий алгоритм данного раздела заключается в следующем (Схема 7):
- Выбор направления перестановки;
- Перемещение клеток;
- Запись об очередном сделанном ходе.
Схема 7 - Раздел Замена.
5.3.6.1 Выбор направления перестановки.
Ранее пользователь сделал ход, а это значит, что мы имеем нажатую служебную клавишу, под каким либо номером. При помощи инструкции IF и функции ord, выбирается направления перестановки элементов.
5.3.6.2 Перемещение клеток.
В зависимости от значений переменных Strok, Stolb, которым было присвоено координаты пустого элемента в массиве (5.3.4) и выбранного направления, осуществляется перемещение.
Например, пользователь ввел направление курсора вверх, это означает, что пользователь нажал служебную клавишу под кодом 72, тогда, при помощи инструкции if и функции ord (iford(ch)=72 then), осуществляется перемещение.
Перемещение осуществляется по следующему принципу: пустой клетки, а именно элементу массива с координатами as[strok,stolb], присваивается содержимое элемента стоящего под пустой клеткой (as[strok,stolb]:= as[strok+1,stolb];), а соответственно элементу, стоящему под пустой клеткой присваивается пробел (as[strok+1,stolb]:=' ';).
5.3.6.3 Запись об очередном сделанном ходе.
При запуске раздела Игра, некоторой переменной hodприсваивается 0. Это означает, что пользователь приступил к игре. После каждого сделанного хода, значение переменной hod увеличивается на единицу. В дальнейшем эта информация будет использована, при определении лучших результатов.
5.3.7 Проверка.
В данном разделе программа сравнивает текущую комбинацию цифр, с правильной комбинацией. Если расклады совпадают, то алгоритм выполнен и осуществляется переход к следующему пункту, в противном случае, алгоритм вновь повторяется, начиная с пункта 5.3.3.
Данный раздел реализован в процедуре proverka.
По умолчанию логическая переменная prov равна false (ложь). Программа проверяет если элемент первой строки и первого столбца равен 1, второй равен двум и т.д. и элемент последней строки и последнего столбца равен пустому элементу, то расклад считается, выполнен и переменной provприсваивается значение true (истина).
5.3.8 Итог.
В данном разделе, программа считывает, за какое количество ходов игрок, выполнил требуемый расклад и сравнивает с результатами прошлых игр. Если игрок разложил табло за большее количество ходов, чем это сделали игроки ранее, тогда программа завершает свою работу и переходит в Главное меню, в противном случае пользователю предлагается ввести свое имя. В дальнейшем его имя будет, отображается в списке лучших игроков.
Данный раздел реализован в процедуре Mesto.
Общий алгоритм данного раздела заключается в следующем (Схема 8):
- Количество ходов;
- Считывание результатов из файла;
- Проверка, входит ли данный результат в список лучших;
- Ввод имени;
- Перестановки в файле результатов;