«Ханойские башни»
Цель работы - создать компьютерную версию игры-головоломки «Ханойские башни». Игровая доска содержит семь клеток, расположенных в ряд. На трех левых клетках стоят белые фишки, на трех правых – черные. Центральная клетка пуста. Задача заключается в том, чтобы, делая допустимые ходы, поменять фишки местами. Правила ходов такие.
1. Белые фишки могут ходить только вправо, а черные – только влево.
2. Ходить разрешается только на свободное поле.
3. Разрешены перемещения на соседнее поле и «прыжок» через одну фишку.
В роли фишек выступают кнопки с изображением, например, цветных треугольников, направленных так, чтобы они указывали допустимое направление ходов. Кнопки будут передвигаться по игровой доске, созданной при помощи панели.
![](http://ok-t.ru/studopediasu/baza2/451250040998.files/image071.gif)
Описание плана разработки программы
1. Открыть новый проект.
2. Разместить на форме экземпляры компонентов: панель Panel, кнопка с изображением BitBtn.
3. Выполнить следующие действия:
Таблица 15.
Выделенный объект
| Вкладка окна
Object Inspector
| Имя свойства/
имя события
| Действие
|
Form1
| Properties
| Caption
| Установка имени формы «Головоломка»
|
Panel1
(Вкладка Standard)
| Properties
| Height
| Присвоить значение 65
|
Width
| Присвоить значение 401
|
Caption
| Очистить значение
|
BitBtn1
(Вкладка Additional)
| Properties
| Height
| Присвоить значение 49
|
Width
| Присвоить значение 49
|
Left
| Присвоить значение 8
|
Top
| Присвоить значение 8
|
BitBtn2
| Properties
| Height
| Присвоить значение 49
|
Width
| Присвоить значение 49
|
Left
| Присвоить значение 64
|
Top
| Присвоить значение 8
|
BitBtn3
| Properties
| Height
| Присвоить значение 49
|
Width
| Присвоить значение 49
|
Left
| Присвоить значение 120
|
Top
| Присвоить значение 8
|
BitBtn4
| Properties
| Height
| Присвоить значение 49
|
Width
| Присвоить значение 49
|
Left
| Присвоить значение 232
|
Top
| Присвоить значение 8
|
BitBtn5
| Properties
| Height
| Присвоить значение 49
|
Width
| Присвоить значение 49
|
Left
| Присвоить значение 288
|
Top
| Присвоить значение 8
|
Продолжение таблицы 15.
|
Выделенный объект
| Вкладка окна
Object Inspector
| Имя свойства/
имя события
| Действие
|
BitBtn6
| Properties
| Height
| Присвоить значение 49
|
|
| Width
| Присвоить значение 49
|
|
| Left
| Присвоить значение 344
|
|
| Top
| Присвоить значение 8
|
4. Сохраните проект.
5. Создать рисунки при помощи стандартной программы Paint. Задайте размеры рисунков 45x45 пикселов (в режиме увеличения).
6. Создать две картинки с именами Left.bmp и Right.bmp, поместить их в папку проекта. Рисунок с именем Left.bmp предназначен для левых кнопок, рисунок с именем Right.bmp – для правых кнопок.
7. Назначить рисунки кнопкам.
Продолжение таблицы 15.
BitBtn1, BitBtn2, BitBtn3,BitBtn4,BitBtn5, BitBtn6
| Properties
| Caption
| Очистить значение
|
Glyph (Значок)
| Щелкнуть на кнопке построителя. Открыть окно Picture Editor. Щелкните на кнопке Load. В диалоговом окне выберете файл с изображением кнопки и щелкните на кнопке Открыть. Щелкнуть на кнопке Ok, и выбранная картинка появится на кнопке.
|
8. Необходимо хранить два числа: номер клетки, в которой находится кнопка; признак «цвета» фишки», т.е. в какую сторону может ходить кнопка.
9. Номер клетки умножить на два. Если фишка черная, прибавить к числу единицу.
10. Задать свойство Tag (Тег) для всех кнопок.
Таблица 16.
Значение свойства Tag
| Комментарий
|
| Первая клетка, белая фишка
|
| Вторая клетка, белая фишка
|
| Третья клетка, белая фишка
|
| Четвертая клетка, черная фишка
|
| Пятая клетка, черная фишка
|
| Шестая клетка, черная фишка
|
11. Создать дополнительную переменную для пустой клетки
var n: Integer = 4;
12. Создать глобальную переменную
win: Integer = 24; {все фишки в сумме должны переместиться на 24 клетки}
13. Программируем выполнение хода фишки.
Таблица 17.
Выделенный объект
| Вкладка окна
Object Inspector
| Bмя события
| Действие
|
BitBtn1
| Events
| OnClick
| В процедуру BitBtn1Click передается параметр – объект Sender. Он представляет именно тот объект, который вызвал событие, и может дать доступ к его свойствам. Надо специально указать, что объект Sender в данном случае следует считать кнопкой. Чтобы обратиться к свойству Tag данного объекта, записывают (Sender as TBitBtn).Tag.
|
14. Сохраните проект, запустите и протестируйте его.