Эта очень простая головоломка взята из книги «Большая книга логических игр и головоломок», ее легко сможет решить любой школьник (конечно если он будет знать, в каком направлении читать буквы). Мы покажем, как можно сделать программу для решения этой головоломки.
В окне программы размещена сетка с буквами, над которыми пользователь должен провести указателем мыши. Когда указатель перемещается на какую-то букву, эта буква записывается в поле, расположенное ниже. Таким образом, перемещая указатель мыши над буквами, пользователь составляет фразу.
При создании программы вы научитесь создавать обработчики события с заданным именем, увидите как работает событие мыши MouseEnter, научитесь настраивать среду Visual Studio таким образом, чтобы на форме в режиме конструктора отображалась сетка.
Создание приложения
1. В среде Visual C# 2010 Express создайте новое приложение Windows Forms, в качестве имени проекта введите ChinesePackage. После создания проекта сохраните его.
2. С помощью окна свойств установите значения свойств формы:
Text | Посылка из Китая |
3. Среда Visual Studio позволяет настроить рабочее окружение так, чтобы пользователю было удобнее выполнять те или иные действия. Например, можно настроить конструктор форм таким образом, чтобы на нем выводилась сетка, и элементы управления можно было бы выравнивать по этой сетке. Сетка с шагом 8х8 пикселей будет выглядеть так:
Настройка конструктора форм
Чтобы настроить среду Visual C# выберите в меню команду Сервис/Параметры…:
Откроется диалоговое окно «Параметры». По умолчанию здесь отображаются не все параметры, а только самые распространенные. Чтобы отобразить полный список, нужно включить флажок «Показать все параметры»:
После этого откройте группу «Конструктор Windows Forms»:
Описание всех параметров можно найти в справочной системе, приведем описание некоторых из них:
GridSize (Размер сетки) Задает значение в точках между вертикальными и горизонтальными линиями сетки в конструкторе. По умолчанию установлен размер 8, 8. Максимальный размер – 200, 200.
ShowGrid (Показать сетку) Включает режим отображения размерной сетки конструктором. По умолчанию сетка отображается.
SnapToGrid (Привязка к сетке) Определяет необходимость привязки объектов и элементов управления к сетке. Иными словами, при включении этой функции изменение размера и перемещение элементов в конструкторе ограничено значением GridSize. Включение SnapToGrid упрощает выравнивание различных элементов интерфейса пользователя, но ограничивает свободу размещения элементов управления. По умолчанию параметр SnapToGrid включен.
LayoutMode (режим выравнивания) Указывает систему выравнивания для макета. Доступные параметры: SnapToGrid (выравнивание по сетке) или Snaplines (выравнивание по линиям).
Установите режим выравнивания SnapToGrid, остальные значения оставьте такими, как на рисунке:
Чтобы закрыть диалоговое окно нажмите кнопку ОК. После этого если у вас была открыта форма в режиме конструктора, то ничего не произойдет. Чтобы изменения применились, конструктор нужно закрыть, нажав на кнопке закрытия окна:
а затем открыть ее, выполнив в Обозревателе решений двойной щелчок на имени формы:
После этого на форме будет отображена сетка:
И теперь все элементы управления, которые вы будете размещать на форме, можно будет удобно выравнивать по узлам сетки.
4. Для первой буквы разместите на форме элемент Label и установите следующие свойства:
AutoSize | False |
Font | Microsoft Sans Serif; 9,75pt; style=Bold |
Size | 32; 32 |
Text | К |
TextAlign | MiddleCenter |
5. Скопируйте надпись необходимое количество раз, разместите элементы и установите им значение свойства Text так, чтобы сетка с буквами выглядела как на рисунке:
6. Для вывода ответа с текстом пословицы разместите на форме еще один элемент Label и установите для него следующие свойства:
Name | lblPhrase |
Text | удалите значение |
7. Чтобы при наведении указателя мыши на какую-то букву она записывалась в нижний элемент, необходимо создать обработчик события MouseEnter для элементов с буквами. Для этого выделите на форме все надписи с буквами, в окне свойств переключитесь на вкладку «События», напротив события MouseEnter введите MouseEnterToChar и нажмите на клавиатуре клавишу Enter:
8. В редакторе кода введите следующий код:
lblPhrase.Text += (sender as Label).Text;
9. Можете запустить программу и проверить ее работу.
10. Теперь добавим в программу код для очистки составленной фразы в случае, когда пользователь выводит указатель мыши за пределы сетки с буквами, т.е. проводит указателем над формой. Для этого переключитесь в режим конструктора формы, если у вас выбран какой-то элемент формы, то щелкните один раз по форме, а затем в окне свойств на вкладке событий найдите MoouseEnter, введите в правом столбце MouseEnterToForm и нажмите на клавиатуре клавишу Enter.
11. Откроется редактор кода с автоматически созданной заготовкой для функции MouseEnterToForm. В месте курсора введите следующий код:
lblPhrase.Text = "";
12. Сохраните все файлы проекта.
13. Запустите программу на выполнение и проверьте ее работу. Какая пословица зашифрована в послании?
Упражнения
1. Добавьте в программу необходимый код для проверки отгадывания пословицы. Когда пользователь пройдет указателем мыши все буквы и дойдет до последней – должно вывести на экран сообщение «Поздравляем! Вы правильно отгадали пословицу»
2. Разместите вверху формы текст, в котором будет инструкция для пользователя:
Перед вами сетка с буквами, над которыми нужно провести указатель мыши. Когда указатель перемещается на какую-то букву, эта буква записывается в поле, расположенное ниже. Таким образом, перемещая указатель мыши над буквами, вы составляет фразу.
Китайчонок Ли прислал зашифрованную китайскую народную пословицу. Попробуйте отгадать его послание.
3. Измените фон надписей или добавьте на форму рисунки по своему усмотрению.
4. Восстановите исходные параметры настройки среды Visual C#.