Курсовая работа: Игра "Пятнашки"
Нет
![]() |
Да
![]() | ||
![]() |
Схема - 8 Раздел Итог.
5.3.8.1 Количество ходов
В течение всей игры, программа записывает каждый сделанный ход. Таким образом, по завершению игры, т.е. когда пользователь разложил верный расклад, а не когда просто покинул игру, мы знаем точное количество ходов, за которое игрок разложил расклад (Количество ходов присваивается переменной hod).
5.3.8.2 Считывание результатов из файла.
В данном разделе программа считывает данные из файла res.txt и для удобства обработки этой информации, вносит ее в два массива it и res. Массив it содержит информацию о количестве ходов, за которое игроки, игравшие ранее разложили расклад, массив res содержит имена этих игроков.
5.3.8.3 Проверка, входит ли данный результат в список лучших
В данном разделе результат текущего игрока сравнивается с результатами игроков из массива it.
В случае если игроки, игравшие ранее разложили расклад за наименьшее количество ходов, то программа завершает свою работу и переходит в Главное меню, в противном случае программа продолжает свою работу (сл. пункт.)
5.3.8.4 Ввод имени.
Пользователю предлагается ввести свое имя, чтобы его имя и результат были сохранены в списке лучших игроков.
5.3.8.5 Перестановки в файле результатов.
В данном разделе необходимо совершить перестановки в массиве, но нужно не просто удалить какой то элемент, а на его место поставить текущий результат, нужно осуществить сдвиг всех элементов на один, а если текущей результат будет десятым, то заменить его.
Эту задачу можно решить несколькими способами. Один из способов, это совершать перестановки непосредственно в массивах it и res и осуществлять сдвиг элементов, но, на мой взгляд, наиболее простой способ, это создать еще два массива, для удобства назовем их itv и resv, и в результате совершить простейшие операции перемещения элементов из одного массива в другой. Эти операции совершим по следующей схеме:
При помощи инструкции 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 Описание входных и выходных данных
Входные | Выходные |
К-во Просмотров: 1348
Бесплатно скачать Курсовая работа: Игра "Пятнашки"
|