В редакторе ImageEditor создать IconFile, нарисовать смайлик. Сохранить в файле Icon1.ico. В ObjectInspector на вкладке Properties справа от свойства Icon щелкнуть мышью и в окне выбора файла иконы загрузить созданный файл.
Компоненты вкладки Standart:
1.1.1 TMainMenu – главное меню формы, Name – MainMenu1 (Содержит один пункт меню «Help» (Name – Help1) с двумя пунктами подменю «Магический квадрат» (Name – N1) и «Правила игры» (Name – N2)).
После установки компонента на форму создать пункт меню «Help». Для этого дважды щелкнуть на компоненте левой кнопкой мыши, в окне инспектора объектов вводим название пункта меню «Help» в строке свойства Caption, нажимаем клавишу Enter. Для создания пунктов подменю щелкнуть мышью в окне конструктора меню ниже пункта меню «Help», набрать «Магический квадрат», Enter, набрать «Правила игры», Enter. Чтобы связать с выбором пункта меню нужное действие, определяем процедуру обработки его события OnClick – вызов соответствующего диалогового окна.
1.1.2 TPanel – панель, Name – Panel1 (Для размещения кнопок). Значение свойства Align выбираем alBottom, чтобы панель разместить внизу формы. Свойство Caption очистить.
1.1.3 TButton – кнопка (Одна кнопка «Проверить», вторая, расположенная над ней, «Начать»). Кнопку Button1 размещаем на панели, Name – Button1. Свойство Caption – «Проверить». Кнопку Button2, Name – Button2, размещаем на кнопке Button1. Свойство Caption – «Начать».
1.1.4 TLabel – метка (Для вывода текста комментариев действий пользователя). Метку Label размещаем на форме. Name – Lb1. Свойство Caption очистить. Значение свойства Align выбираем alBottom. Свойство Color – clYellow. С помощью свойства Font корректируем шрифт.
Компоненты вкладки Additional:
1.1.5 TBitBtn – кнопка с изображением (Кнопка Close для закрытия окна); Name – BitBtn1. Кнопка Close размещается на панели. Свойство Kind – bkClose. Значение bkClose определяет типовой значок, надпись Close на кнопке, а также типовую функцию закрытия окна, которая будет связана с этой кнопкой.
1.1.6 TMaskEdit – поле с маской ввода (9 полей с маской ввода только цифровой информации). Устанавливаем ниже перечисленные значения свойств для всех девяти полей. Name – MEd1 .. MEd9. Раскрываем диалоговое окно свойства EditMask. В поле InputMask вводим следующую последовательность символов: 9999;1;. В поле CharacterforBlanks вместо умалчиваемого символа-заполнителя, которым является символ подчеркивания (_), указываем пробел и закрываем окно.
1.2 Процедура обработки события OnPaint (для того, чтобы сделать рисунок с расширением .bmp фоновым). Свойство Bitmap содержит ссылку на объект класса TBitmap. Перед загрузкой объекта Bitmap его надо создать. Метод StretchDraw() растягивает или сжимает картинку так, чтобы она заполнила всю форму.
1.3 Процедура обработки события OnCanResize (запрещающая изменение размеров формы).
1.4 Процедура обработки события OnActivate (программно задаем заголовок формы, обеспечиваем показ кнопки «Начать», скрываем кнопку «Проверить»).
2. Заполнение полей-клеток магического квадрата
2.1 Процедура обработки события OnClick кнопки Button2 («Начать»).
2.1.1 Процедура zapolnenie(x,y:integer) (По входящему параметру х заполняет клетки квадрата, по входящему параметру у одним из четырех способов очищает некоторые клетки, выводит в метке соответственную надпись, показывает кнопку «Проверить», прячет кнопку «Начать»).
2.1.2 В теле главной процедуры проверяем, была ли ситуации «Попробуй еще раз» (z=true). Если была, то вызываем процедуру zapolnenie(x,y:integer) со старыми значениями х и у; если нет (z=false), генерируем у – способ удаления клеток, х – начальное число х. Заполняем матрицу.
3. Проверка квадратной матрицы на предмет, является ли она магическим квадратом
Процедура обработки события OnClick кнопки Button1 («Проверить»). Пробуем преобразовать к числовому виду значения полей TMaskEdit. Если получилось (не осталось пустых полей), находим суммы по строкам, по столбцам, по диагоналям. Если полученные суммы равны, то выводим в метке надпись «Молодец! Все верно!», прячем кнопку «Проверить», показываем кнопку «Начать», z:=false (следующее заполнение будет сгенерировано). Если полученные суммы не равны, то выводим в метке надпись «Попробуй еще раз», прячем кнопку «Проверить», показываем кнопку «Начать», z:=true(следующее заполнение будет тем же, х и у не изменятся). Если не получилось преобразовать к числовому виду значения полей TMaskEdit, подаем звуковой сигнал, выводим сообщение «Не все клетки заполнены», выходим из процедуры.
4. Оформление диалогового окна «Магический квадрат», вызываемого одноименной командой главного меню
Caption – Магический квадрат, Name – OKBottomDlg. Размещаем компонент TMemo – многострочное редактируемое текстовое поле, вкладки Standart. Щелкаем мышью справа от свойства Lines. В окне StringListEditor вводим текст о магическом квадрате. Размещаем компонент TStringGrid – текстовая таблица, вкладки Additional. Процедура обработки события OnPaint (для того, чтобы сделать рисунок с расширением .bmp фоновым) содержит процедуру пользователя для заполнения таблицы числами.
В процедуре создаем объект Bitmap, загружаем его из файла. Методом StretchDraw() заполняем всю форму рисунком Bitmap.
5. Оформление диалогового окна «Правила игры», вызываемого одноименной командой главного меню
Caption – Правилаигры, Name – OKBottomDlg1. Размещаем компонент TMemo – многострочное редактируемое текстовое поле, вкладки Standart. Щелкаем мышью справа от свойства Lines. В окне StringListEditor вводим текст с правилами игры. Процедура обработки события OnPaint (для того, чтобы сделать рисунок с расширением .bmp фоновым).
После того как определены требования к программе и составлен алгоритм решения, алгоритм записывается на выбранном языке программирования. В результате получается исходная программа. На этом этапе я выбрала язык программирования Delphi и записала алгоритм, листинг которого приводится в приложении.
Программа запускается с помощью файла Magic_sqr.exe. После запуска открывается окно, в котором необходимо заполнить матрицу нажатием кнопки «Начать» или покинуть программу.
Рис. 6. ПРОГРАММА ПОСЛЕ ЗАПУСКА
Рис. 7. ПРОГРАММА ПОСЛЕ ЩЕЛЧКА МЫШИ ПО КНОПКЕ «НАЧАТЬ»
После заполнения матрицы нажимаем на кнопку «Проверить», и на экране выводится сообщение (рисунок 8 или 9).
Рис. 8. ПРОГРАММА ПОСЛЕ ЩЕЛЧКА МЫШИ ПО КНОПКЕ «ПРОВЕРИТЬ»
Рис. 9. ПРОГРАММА ПОСЛЕ ЩЕЛЧКА МЫШИ ПО КНОПКЕ «ПРОВЕРИТЬ»
На этом этапе программа была неоднократно протестирована, ошибок не выявлено.
Программа имеет меню «Help», которое содержит два пункта: «Магический квадрат» и «Правила игры».
Рис. 10. ПРОГРАММА ПОСЛЕ ЩЕЛЧКА МЫШИ ПО МЕНЮ «HELP»
Рис. 11. ПРОГРАММА ПОСЛЕ ВЫБОРА ПУНКТА МЕНЮ «МАГИЧЕСКИЙ КВАДРАТ»
Рис. 12. ПРОГРАММА ПОСЛЕ ВЫБОРА ПУНКТА МЕНЮ «ПРАВИЛА ИГРЫ»
Из-за невысокой сложности программы, создание установочного диска нецелесообразно.
В настоящее время в нашу жизнь широко внедряются информационные технологии. На сегодняшний день, наверное, не осталось такой области, где бы они ни применялись.
Постоянно растет объем и сложность обрабатываемой информации, требуются все новые и новые виды ее представления. Как показывает практика, большинство пользователей уже не представляют себе, как бы они выполняли свою работу, с которой прекрасно справлялись еще 5 – 10 лет назад, без помощи компьютера.
В ходе исследовательской работы разработана тестирующая программа. Проектирование выполнено в системе Delphi. В работе:
· представлена информация о магическом квадрате и используемом методе заполнения магического квадрата;
· приведен теоретический материал о компонентах, используемых в программе;
· представлен листинг программы;
· приведен анализ и тестирование программы с подробным описанием.
В ходе работы я познакомилась с более широкими возможностями языка программирования Delphi, по сравнению с языком Pascal. Постараюсь применить полученные знания при участии в олимпиадном движении по программированию. А также очень хотелось бы создать серию математических мини-игр.
1. Архангельский А.Я. Delphi 6. Справочное пособие – М.: ЗАО «Издательство БИНОМ», 2001.
2. Болл У., Коксетер Г. «Математические эссе и развлечения» - М.: Мир, 1986.
3. Культин Н.Б. Основы программирования в Delphi 7 – СПб.: БХВ-Петербург, 2003.
4. Постников М.М. «Магические квадраты» - М.: Наука, 1964.
5. Фаронов В.В. Delphi. Программирование на языке высокого уровня: Учебник для вузов – СПб.: Питер, 2008. -640 с.
unitmag2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Buttons, StdCtrls, Mask, ExtCtrls, Menus;
type
TForm1 = class(TForm)
Panel1: TPanel; //Панель, на которой размещены кнопки
Lb1: TLabel; //Метка, для вывода комментариев к программе
MEd1: TMaskEdit; //Поля с маской ввода - для заполнения квадрата
MEd2: TMaskEdit;
MEd3: TMaskEdit;
MEd4: TMaskEdit;
MEd5: TMaskEdit;
MEd6: TMaskEdit;
MEd7: TMaskEdit;
MEd8: TMaskEdit;
MEd9: TMaskEdit;
Button1: TButton; //Кнопка "Проверить"
BitBtn1: TBitBtn; //Кнопка "Close"
Button2: TButton; //Кнопка "Начать"
MainMenu1: TMainMenu;//Главноеменюформы
Help1: TMenuItem; //Одинпунктменю"Help"
N1: TMenuItem; //Пункт подменю "Магический квадрат"