5.3.8      Итог.

В данном разделе, программа считывает, за какое количество ходов игрок, выполнил требуемый расклад и сравнивает с результатами прошлых игр. Если игрок разложил табло за большее количество ходов, чем это сделали игроки ранее, тогда программа завершает свою работу и переходит в Главное меню, в противном случае пользователю предлагается ввести свое имя. В дальнейшем его имя будет, отображается в списке лучших игроков.

Данный раздел реализован в процедуре Mesto.

Общий алгоритм данного раздела заключается в следующем (Схема 8):

-       Количество ходов;

-       Считывание результатов из файла;

-       Проверка, входит ли данный результат в список лучших;

-       Ввод имени;

-       Перестановки в файле результатов;

-       Сохранения результатов в файл.

Перестановки результатов

 

Нет


 Да


Схема - 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 и соответственно и свой результат.



Информация о работе «Игра "Пятнашки"»
Раздел: Информатика, программирование
Количество знаков с пробелами: 46914
Количество таблиц: 9
Количество изображений: 27

Похожие работы

Скачать
145807
5
2

... ошибок на этом пути, то есть установки или проявления характера взрослых членов семьи, и сами по себе осложняющие отношение с детьми. Глава 2. Эмпирическое исследование преодоления страхов у детей дошкольного и младшего школьного возраста   2.1 Описание экспериментальной выборки и методов исследования Определить боящегося ребенка обычно не составляет труда. Об этом мы уже не раз говорили, ...

Скачать
14287
1
7

... Dialogs 2.3.1.2     Внешний вид формы 2.3.1.2     Входные данные положение фишек; 2.3.1.3     Промежуточные данные проверка на наличие «собранности» мозайки; 2.3.1.4     Выходные данные результат игры. 2.3.1.5     Блок-схемы алгоритмов Приложение А, стр. 13 2.3.1.6     Текст модуля Приложение Б, стр. 25   ПРИЛОЖЕНИЯ ...

Скачать
161667
15
11

... и лишь изредка - в сочетаниях. Глава 3. Опытно-экспериментальная часть   3.1 Организация и проведение педагогического эксперимента   Для того, чтобы выявить влияние подвижной игры на развитие быстроты и ловкости у детей 6-7 лет, было организовано и проведено исследование на базе МДОУ «Детский сад №10 комбинированного типа «Теремок» г.Зеленогорска Красноярского края. В детском саду ...

Скачать
170262
21
2

... гармоничного развития личности. В этом аспекте, подвижные игры выступают как эффективное средство физической подготовленности. ГЛАВА 2 ПОДВИЖНЫЕ ИГРЫ КАК СРЕДСТВО РАЗВИТИЯ ПСИХОФИЗИЧЕСКИХ КАЧЕСТВ У ДЕТЕЙ 6-7 ЛЕТ   2.1 Подвижная игра, ее значение   Игра может быть средством самопознания, развлечения, отдыха, средством физического и общего воспитания. Игра – очень эмоциональная деятельность, ...

0 комментариев


Наверх