русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Проект «Лохотрон»


Дата добавления: 2014-11-27; просмотров: 649; Нарушение авторских прав


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

Реализация. Положим на форму только одну кнопку «Старт». На рис. 27 дана форма проекта «Лохотрон».

 

Рис. 27. Форма для проекта «Лохотрон»

 

Понадобится одна глобальная переменная LuckyNumber

var LuckyNumber:integer;

В обработчике события OnClick кнопки Button1 напишем такой код:

 

procedure TForm1.Button1Click(Sender: TObject);

Var TB: TButton;

i: Integer;

begin

Randomize;

LuckyNumber:=Random(4)+1; {Загадали случайное число}

For i:=1 To 4 Do

Begin

{ Ищем объект по имени.

Примечание: для TSpeedButton и некоторых других объектов FindChildControl() не работает – необходимо использовать FindComponent() - работает точно с такими же параметрами – именем объекта }

TB:=TButton(Form1.FindChildControl('B'+IntToStr(i)));

If TB<>Nil Then

TB.Free; { Уничтожили кнопку, если она есть }

End;

For i:=1 To 4 Do

Begin

{ Создаём экземпляр класса TButtonForm1

(параметр Owner – хозяин) – объект, отвечающий за удаление кнопки.

Если кнопка не была уничтожена вручную, то при удалении Owner (хозяина) он обходит все принадлежащие ему объекты и удаляет их сам }

TB:=TButton.Create(Form1);

{ Parent – родитель, т. е. объект, на котором будет нарисована кнопка }

TB.Parent:=Form1;

{ На имя объекта накладываются такие же ограничения,

как на имена переменных, т.е. оно должно начинаться с буквы }

TB.Name:='B'+IntToStr(I); {B1, B2, B3 ... }

TB.Left:=i*50; { Чтобы не накладывались друг на друга }

TB.Top:=20;

TB.Width:=30;

TB.Caption:=IntToStr(i);



TB.OnClick:=BTN; { Указание собственного метода }

TB.Tag:=i; { Присваиваем свойству Tag номер кнопки }

End;

end;

 

Событие OnClick созданных кнопок подключает метод BTN, код которого приведен ниже. В этом методе анализируется, какая кнопка была нажата. Если номер кнопки равен загаданному числу,
то выводится сообщение «Победа», все кнопки прячутся (свойство Hide) и можно начинать сначала. Если номер кнопки не равен загаданному числу, то эта кнопка прячется. Заголовок метода BTN помещается в раздел public:

 

type

TForm1 = class(TForm)

Button1: TButton;

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

procedure BTN(Sender: TObject);

{ Public declarations }

end;

 

procedure TForm1.BTN(Sender: TObject);

Var TB: TButton;

i: Integer;

Begin

{ Sender - объект, у которого произошло событие, вызвавшее данный метод }

TB:=TButton(Sender); { Преобразовываем объект класса TObject в кнопку }

If TB.Tag = LuckyNumber Then

Begin

ShowMessage('Победа!');

For i:=1 To 4 Do

Begin

{Ищем кнопки по имени и прячем их}

TB:=TButton(Form1.FindChildControl('B'+IntToStr(I)));

If TB<>Nil Then TB.Hide;

End;

End

Else

Begin

ShowMessage('Не угадали.');

{ Скрываем кнопку, на которую нажали }

TB.Hide;

End;

End;

На рис. 28 показан результат после нажатия кнопки «Старт».

 

Рис. 28. Кнопки, созданные в проекте «Лохотрон»

 

Задание. Вместо кнопок TButton используйте кнопки TBitBtn,
у которых свойство Glyph позволяет загрузить картинки на поверхность кнопки. Картинки размещайте на кнопки случайным образом. Изначально картинки не видны. Рядом положите такие же картинки. Загадайте одну из них, пометив ее щелчком, а потом поищите ее
на кнопках.

 



<== предыдущая лекция | следующая лекция ==>
Проект «Простейший графический редактор» | Игра «Пятнадцать»


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.047 сек.