47044 (608044), страница 3

Файл №608044 47044 (Игра "Пятнашки") 3 страница47044 (608044) страница 32016-07-30СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 3)

Да

Присвоение координат строки и столбца переменным




Схема 6 - Раздел Поиск

        1. Выбор элемента массива.

При помощи инструкции For поочередно будем выбирать каждый элемент массива.

        1. Проверка, является ли данный элемент пробелом.

При помощи инструкции If, сравниваем каждый элемент массива с пробелом.

        1. Запоминание координат пробела.

Переменным strok и Stolb присваиваем координаты пустого элемента.

      1. Ввод направления перехода.

В данном разделе пользователю предлагается выбрать направление перехода клеток с цифрами, относительно пустой клетки. Выбор осуществляется при помощи курсора, на клавиатуре.

Данный раздел алгоритма реализован в процедуре Napravlenie.

Фактически некоторой переменной ch (типа char) присваивается код нажатой клавиши.

Алгоритм процедуры заключается в следующем:

  • Пользователю предлагается, при помощи курсора, ввести направления перехода.

  • После того как пользователь, нажал кнопку на клавиатуре, код клавиши присваивается переменной ch, при помощи функции readkey.

К примеру, если пользователь ввел направление курсора вверх, это означает, что пользователь нажал служебную клавишу под кодом 72.

      1. Перемещение элементов табло.

В данном разделе, в зависимости от направления перехода, выбранное ранее при помощи курсора, и местоположение пустой клетки, происходит перемещение:

  • Стрелка влево – перемещает влево цифру, стоящую справа от пустой клетки;

  • Стрелка вправо – перемещает вправо цифру стоящую слева от пустой клетки;

  • Стрелка вниз – перемещает вниз цифру стоящую сверху от пустой клетки;

  • Стрелка вверх – перемещает вверх цифру стоящую снизу от пустой клетки.

Данный алгоритм реализован в процедуре Zamena.

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

  • Выбор направления перестановки;

  • Перемещение клеток;

  • Запись об очередном сделанном ходе.



Выбор направления перестановки


Перемещение клеток



Запись об очередном сделанном ходе



Схема 7 - Раздел Замена.

        1. Выбор направления перестановки.

Ранее пользователь сделал ход, а это значит, что мы имеем нажатую служебную клавишу, под каким либо номером. При помощи инструкции IF и функции ord, выбирается направления перестановки элементов.

        1. Перемещение клеток.

В зависимости от значений переменных 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]:=' ';).

        1. Запись об очередном сделанном ходе.

При запуске раздела Игра, некоторой переменной hod присваивается 0. Это означает, что пользователь приступил к игре. После каждого сделанного хода, значение переменной hod увеличивается на единицу. В дальнейшем эта информация будет использована, при определении лучших результатов.

      1. Проверка.

В данном разделе программа сравнивает текущую комбинацию цифр, с правильной комбинацией. Если расклады совпадают, то алгоритм выполнен и осуществляется переход к следующему пункту, в противном случае, алгоритм вновь повторяется, начиная с пункта 5.3.3.

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

По умолчанию логическая переменная prov равна false (ложь). Программа проверяет если элемент первой строки и первого столбца равен 1, второй равен двум и т.д. и элемент последней строки и последнего столбца равен пустому элементу, то расклад считается, выполнен и переменной prov присваивается значение true (истина).

      1. Итог.

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

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

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

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

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

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

  • Ввод имени;

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

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



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


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

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




Нет


Да




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





Схема - 8 Раздел Итог.

        1. Количество ходов

В течение всей игры, программа записывает каждый сделанный ход. Таким образом, по завершению игры, т.е. когда пользователь разложил верный расклад, а не когда просто покинул игру, мы знаем точное количество ходов, за которое игрок разложил расклад (Количество ходов присваивается переменной hod).

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

В данном разделе программа считывает данные из файла res.txt и для удобства обработки этой информации, вносит ее в два массива it и res. Массив it содержит информацию о количестве ходов, за которое игроки, игравшие ранее разложили расклад, массив res содержит имена этих игроков.

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

В данном разделе результат текущего игрока сравнивается с результатами игроков из массива it.

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

        1. Ввод имени.

Пользователю предлагается ввести свое имя, чтобы его имя и результат были сохранены в списке лучших игроков.

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

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

Эту задачу можно решить несколькими способами. Один из способов, это совершать перестановки непосредственно в массивах 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, получается еще хуже.

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

В данном разделе информация из массивов itv и resv вносится в файл res.txt. Данный файл открывается в режиме перезаписи и информация в файле обновляется и когда пользователь выдя в Главное меню зайдет в раздел Результаты, он уже уведет обновленную информацию из файла res.txt и соответственно и свой результат.

    1. Результаты.

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

Характеристики

Тип файла
Документ
Размер
15,35 Mb
Тип материала
Учебное заведение
Неизвестно

Список файлов курсовой работы

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6439
Авторов
на СтудИзбе
306
Средний доход
с одного платного файла
Обучение Подробнее