При помощи инструкции For сравниваем каждый элемент массива результатов (it), с результатом текущего игрока (переменная hod). Если результат игрока из массива it меньше результата текущего игрока, то результат и имя игрока из массива it и resприсваиваем массивам itv и resv. Если результат текущего игрока меньше чем очередной элемент массива it и больше предыдущего элемента массива it, то результат текущего игрока вносится в очередной элемент массивов itv и его имя присваивается очередному элементу массива resv, а результат текущего элемента массивов it и res добавляется в массивы itv и resv за результатами текущего игрока. Соответственно когда инструкция For начнет сравнивать следующий элемент массива it, то результат текущего игрока, будет меньше, как текущего так и предыдущего элементов массива it, а это не удовлетворяет условию. Это означает, что очередной элемент массивов it и res просто добавится за последним элементом массивов itv и resv. Так будет происходить пока массивы itv и resv не будут полностью заполнены, а последний элемент массивов it и res, соответственно не войдут, во вновь созданный список лучших игроков, которые описаны в массивах itv и resv. В итоге мы осуществим сдвиг результатов на одну позицию.
Для более полного описания данной процедуры рассмотрим пример:
В таблице 3 расположены две строки. В верхней содержатся элементы массива it, а в нижней массива res.
Таблица 3 – Массивы it и res.
It | 10 | 20 | 30 | 40 | 50 | 60 | 70 | 80 | 90 | 95 |
res | A | B | C | D | E | F | G | H | K | L |
Предположим, что текущий игрок, под именем Z, победил за 44 хода.
Программа начинает искать в каком интервале расположен текущей результат (44). Для этого каждый элемент массива it сравнивается с переменной hod. Если первый элемент меньше 44, то его имя и результат переносится в массивы itv и resv, если следующий элемент меньше 44, то и его переносят в массивы itv и resv (таблица 4)
Таблица 4 – Массивы it и res.
Itv | 10 | 20 |
resv | A | B |
Так происходит до тех пор пока, программа не найдет элемент в массиве it, который больше 44, но при этом программа проверяет, что 44 больше и предыдущего элемента массива it. Если данное условие выполняется, то программа добавляет результат и имя текущего игрока под именем Z, в массивы itv и resv соответственно, а текущий результат из массивов it и res, также добавляется в массив, но уже за результатами игрока Z (Таблица 5).
Таблица 5 – Массивы it и res.
Itv | 10 | 20 | 30 | 40 | 44 | 50 |
resv | A | B | C | D | Z | E |
У нас получилось, что 44 меньше 50, но больше 40, по этому за результатом 40 добавили 44, а за ним текущий элемент с результатом 50.
Далее, при проверки результата 44 со следующем элементом с результатом 60, 44 будет меньше результата 60, но 44 и меньше результата 50, а следовательно, условие не выполняется и игрок с результатом 60 переносится в массивы itv и resv. Так происходит пока оба массива itv и resv, не будут заполнены. А последний результат соответственно исчезнет (Таблица 6)
Таблица 6 – Массивы it и res.
Itv | 10 | 20 | 30 | 40 | 44 | 50 | 60 | 70 | 80 | 90 |
resv | A | B | C | D | Z | E | F | G | H | K |
На первый взгляд, все достаточно усложнено, но при создании алгоритма перестановки непосредственно внутри массивов it и res, получается еще хуже.
5.3.8.6 Сохранения результатов в файл.
В данном разделе информация из массивов itv и resv вносится в файл res.txt. Данный файл открывается в режиме перезаписи и информация в файле обновляется и когда пользователь выдя в Главное меню зайдет в раздел Результаты, он уже уведет обновленную информацию из файла res.txt и соответственно и свой результат.
5.4 Результаты.
В данном разделе для пользователя отображается информация о лучших игроках, которые за наименьшее количество ходов собрали требуемую комбинацию.
Данный раздел реализован при помощи процедуры result. Данная процедура считывает информацию из файла res.txt и выводит считанную информацию на экран для ознакомления пользователю.
Реализована данная процедура, точно таким же способом, как и в разделе 5.1 Описание, за исключением, того, что обращение происходит к файлу res.txt, по этому подробно останавливаться на данном разделе не имеет смысла.
6. Описание входных и выводных данных
В таблице 7 описываются входные и выходные данные, которые выстроены примерно в том порядке, в котором они должны взаимодействовать с пользователем
Таблица 7 Описание входных и выходных данных
Входные | Выходные |
2. Выбор раздела в Главном меню программы4. Ввод при помощи курсора направления перехода: - Влево;- Вправо;- Вверх- Вниз;- ESC – покинуть игру в любой момент5. Ввод имени в случае победы за наименьшее количество ходов. | 1. Отображение на экране Главного меню3. Вывод на экран ранее выбранного раздела:- Описание – вывод на экран описание программы- Управление – вывод на экран информацию о клавишах управления- Результаты – вывод на экран списка лучших игроков- Игра – Вывод на экран табло с комбинацией цифр |
7. Программное и аппаратное обеспечение программы.
Для запуска игры достаточно любого компьютера, на котором установлена хоть какая-нибудь операционная система, семейство Windows.
8. Руководство пользователя
9.
8.1. Для запуска программы необходимо запустить файл Super15.exe. Откроется Главное меню (Рисунок 1)
Рисунок 1 – Главное меню
Основное меню содержит пять пунктов:
1. Описание (About program).
2. Управление (Key).
3. Игра (Play).
4. Результаты (Results).
5. Выход (Exit).
Перемещаясь при помощи курсора вверх или вниз, можно выбирать интересующие Вас меню.
8.2 При первом запуске программы пользователю рекомендуется прочитать раздел Описание (Рисунок 2), в котором указанно:
- Назначение программы;
- Разработчик;
- Описание программы;
Рисунок 2 – Окно Описание
8.3 Раздел Управление.
Здесь пользователю выводится на экран клавиши управления (Рисунок 3).
Рисунок 3 - Управление
8.4 Раздел Игра.
При переходе в этот раздел перед пользователем открывается основное табло игры (Рисунок 4), на котором расположены 15 цифр, заполненные в случайном порядке и одно пустое поле.
Рисунок 4 – Основное игровое поле.
Управление происходит при помощи клавиш курсора:
- Стрелка влево – перемещает влево цифру, стоящую справа от пустой клетки;
- Стрелка вправо – перемещает вправо цифру стоящую слева от пустой клетки;
- Стрелка вниз – перемещает вниз цифру стоящую сверху от пустой клетки;
Стрелка вверх – перемещает вверх цифру стоящую снизу от пустой клетки.
Пользователю необходимо при помощи курсора перемещать клетки табло, до тех пор, пока на экране не отобразится, последовательная комбинация цифр, как показано на рисунке 5
Рисунок 5 – Игровое поле с правильно заполненной, комбинацией.
В течение всей игры, пользователь в любой момент может покинуть игру, для этого достаточно нажать клавишу ESC и игра завершает свою работу, а на экране появится Главное меню программы.
В течение всей игры, программа считает каждый ход игрока и если игрок раскладывает требуемую комбинацию, за меньшее количество ходов, чем это сделали игроки ранее, то после победы, пользователю предлагается ввести свое имя и информация об игроке, который разложил расклад быстрее, заносится в список лучших игроков (Рисунок 6).
Рисунок 6 - Ввод имени
8.5 пункт Результаты.
В данном разделе меню можно посмотреть результаты лучших игроков (Рисунок 7), а именно тех игроков, которые собрали требуемую комбинацию за наименьшее количество ходов.
На экране небольшая табличка в левом столбце Move записано количество ходов, а в правом Name имя игрока.
Рисунок 7 – Список лучших игроков
8.5 Последний пункт меню Выход.
При нажатии на данный пункт меню, программа завершает свою работу.
10. Заключение
Не смотря на внешне кажущуюся простоту данной программы, он таит в себе ряд сложностей, которые реализуются с использованием всех основных приемов Турбо Паскаль. Вообще Турбо Паскаль как среда программирование уже давно устарела, но основы, которые лежат в среде программировании в Турбо Паскаль, лежат в болшенстве известных и популярных приложений. На мой взгляд, изучая программирование в Турбо Паскаль, можно освоить основные приемы программирования.
Целью данной курсовой работы, являлось углубление знаний и расширение навыков по разработке алгоритмов и их реализации на персональном компьютере, на мой взгляд, разработанная мной программа, вполне отвечает поставленным целям. Особенностями данной программы является: