Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Titulnye_listy (Восстановлен) (Восстановлен).docx
Скачиваний:
2
Добавлен:
26.09.2019
Размер:
325.79 Кб
Скачать

2.14 Заключение

Языки Паскаль и Си позволяют работать с данными сложной структуры, обеспечивают контроль типов данных, имеют развитые средства для выделения отдельных частей программ в функции [2,3].

В языке Си имеются более гибкие средства для эффективного использования особенностей аппаратуры, чем в языке Паскаль [3]. Благодаря этому программы, написанные на Си, как правило, более компактны и работают быстрее, чем программы, написанные на языке Паскаль. С другой стороны, синтаксис Си менее прозрачен, чем у языка Паскаль.

На основе проведенного выше сравнения языков Си и Паскаль, в качестве языка реализации проекта был выбран язык Си.

3 Постановка задачи

Пусть доска имеет три колышка, на первом нанизано m дисков убывающего вверх диаметра. Цель игрока – расположить диски в том же порядке на другом колышке. Диски можно перекладывать с колышка на колышек по одному. Класть больший диск на меньший запрещено. Максимальное количество дисков – 10, минимальное – 3.

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

Дружественный интерфейс [11] – интерфейс, обеспечивающий человеку-пользователю не требующее специального обучения максимально удобное взаимодействие с программой или вычислительной системой.

Требования к проекту:

  • проект должен обладать дружественный графическим интерфейсом;

  • проект должен быть многофайловым.

  • ввод количества дисков и имени игрока, а также управление дисками должно производиться с клавиатуры

3.1. Алгоритм решения поставленной задачи

Для решения поставленной задачи был разработан алгоритм игры «Ханойская башня».

Сначала происходит ввод пользователем количества дисков, затем отрисовка трех колышков и m дисков на начальном колышке.

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

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

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

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

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

Демонстрация игры выполнена при помощи рекурсивного алгоритма «Ханойская башня». Для переноса башни, состоящей из m колец, функция вызывает саму же себя, но уже для переноса башни, состоящей из m-1 кольца. В свою очередь, для переноса башни из m-1 кольца функция вызывает саму же себя, но уже для переноса башни из m-2 колец и так далее, пока не будет вызвана функция для переноса одного кольца.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]