Самое важное свойство таймера — Interval (Интервал). Оно указывает, когда (через сколько времени) в следующий раз таймер должен сработать. Промежуток времени задается в тысячных долях секунды — миллисекундах. По умолчанию, свойство Interval содержит число 1000, следовательно, таймер будет срабатывать каждую секунду.

Ну, довольно теории. Перейдем к практике.

1.  Откройте Delphi или создайте новый проект.

2.  Поместите на форму компонент Таймер. Он находится на панели компонентов System (Системные) и имеет вид: tim. Таймер можно расположить где угодно на форме. Этот объект отображается на форме в виде значка фиксированного размера. В окне работающей программы его не видно.

3.  На форму поместите кнопку – компонент Button.

4.  Давайте сделаем так, чтобы через каждые пол-секунды кнопка прыгала куда-нибудь. А задача пользователя - ее поймать. Свойство Interval сделайте равным 500.

5.  Дважды щелкните по значку Timer, чтобы открыть обработчик события. Начинаем писать код:

procedure TForm1.Timer1Timer(Sender: TObject);

begin

randomize; // включаем генератор случайных чисел

button1.Left:= random (Form1.Width- 100); // кнопка может прыгать по всей длине формы

button1.Top:= random (Form1.Height-60); // кнопка может прыгать по всей ширине формы

end;

Когда нужно закончить игру? Когда пользователь щелкнет по кнопке. То есть для кнопки произойдет событие OnClick. Его и будем программировать.

6.  Щелкните 2 раза по кнопке Button1, чтобы создать процедуру обработки щелчка.

НЕ нашли? Не то? Что вы ищете?

7.  Введите следующий код:

procedure TForm1.Button1Click(Sender: TObject);

begin

Timer1.Enabled:= false;

Form1.Caption:='Победа!';

Button1.Caption:='Ура!';

end;

Вы не поверите, но скелет программы готов. Осталось выполнить мелкие доработки. Например, добавить кнопку Выход, сделать кнопку Медленнее и кнопку Быстрее, при нажатии на которую увеличивается или уменьшается интервал таймера.

Вот данная программа в процессе игры. Эту игру создал один из наших курсантов – ученик 8-го класса.

Без%20Имени-3

Рис.40. Форма приложения

Задание 6. Создать игру «Блохи»

Суть игры:

При запуске игры на поле появляется 20 блох. При каждом попадании по блохе насчитываются очки и чем раньше сделан удар, тем больше очков. Программа считает время с момента запуска. Она также считает промахи, за каждый промах она отнимает 100 очков. На одну игру дано 2 минуты, но если игрок не успеет за 1 минуту убить всех блох, то отнимается 5000 очков, и оживляются все блохи. Игра в двух уровнях: Быстро и Медленно.

Рассмотрим игру поподробнее:

Вот скриншот данной игры в начале, когда блохи готовы начать прыгать....

pic1

Рис.41. Форма игры в начале

А это - скриншот во время игры....

pic2

Рис.42. Форма приложения во время игры

Причем, игра не такая простая, поскольку:

1. Содержит несколько уровней сложности;

2. Использует компьютерную графику;

3. Варьируется в зависимости от обстоятельств (скорости попадания, времени игры и т. д.).

Задание 7. Создать игру «Морской бой»

В этот раз мы создадим игрушку «Морской бой». Мы будем стрелять в корабль, который будет двигаться.

Создание двигающегося объекта.

1.  Запустите Delphi. На форме расположите 2 кнопки (элемент BitBtn - страница Additional ). С этими кнопками мы еще не работали. Их главное отличие от обычных кнопок в том, что них можно поместить графическое изображение. Кнопка Bitbtn1 будет играть роль подводной лодки, цель которой подбить вражеский корабль. Вражеским кораблем будет кнопка BibtBtn2. Наша задача состоит в том, чтобы вражеский корабль двигался. Для этого нужен еще один элемент - таймер.

Рис.43. Начальная форма приложения

2.  С палитры System возьмите компонент Timer и поместите его куда угодно на форму. В результате,. Ваша форма должна напоминать мою:

Как создать движение? Нужно изменять координаты нахождения объекта. Так как корабль врага будет двигаться только по горизонтали, то будем изменять только свойство bitbtn2.left..

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

3.  Сделайте двойной щелчок по значку таймера. Откроется окно:

procedure TForm1.Timer1Timer(Sender: TObject);

begin

end;

4.  Пусть вражеский корабль движется слева направо. Тогда в обработчик Таймера между begin и end необходимо написать строку: bitbtn2.Left := bitbtn2.Left-1;

Что она означает? При каждом срабатывании таймера кнопка BitBtn2 будет смещаться на 1 пиксел влево. Что и даст эффект движения. А как часто будет срабатывать таймер. За это отвечает свойство Interval в Инспекторе Объектов.

Поставьте его значение равным 50.

5.  Запустите программу. Посмотрите, как она работает. Вы увидите явный недостаток: при достижении кнопкой края формы она исчезает. И все…

6.  Чтобы вернуть ее с другого края добавьте в обработчик события таймера строку:

if bitbtn2.Left < 0 then bitbtn2.Left:=form1.Width-60;

7.  Запустите программу, проверьте. Кнопка (вражеский корабль), должна двигаться, как мы хотели.

Делаем торпеду.

За торпеду у нас отвечает кнопка bitbtn1. Что мы хотим? Чтобы при нажатии на нее мышкой происходил выстрел. Как это сделать.

8.  Добавим на форму компонент Image (Он будет снарядом). Поместите в Image какой-нибудь рисунок, можно фоновый (Свойство Picture). Разместите Image возле как у меня: (рис)

Рис.44. Форма торпеды

При выстреле торпеда должна тоже двигаться (как и вражеский корабль). Поэтому здесь мы поступим также, как и с Bitbtn2.

9.  Поместите на форму еще один таймер. Торпеда должна двигаться быстрее корабля, поэтому интервал Таймера поставьте равным 5.

10.  Дважды щелкните по таймеру2, и введите следующий код:

procedure TForm1.Timer2Timer(Sender: TObject);

begin

image1.top:= image1.top-5;

end;

11.  Запустите программу. Проверьте, работает ли торпеда. Работает, но как-то по-своему. Торпеда произвольно стреляет. Так быть не должно. Поэтому свойству Enabled Таймера2 присвойте значение False. Торпеда выстрелит только в том случае, когда Таймер2 включен.

12.  Чтобы включить Таймер2, а значит, запустить торпеду, в обработчик кнопки Bitbtn1 поставьте следующий оператор:

procedure TForm1.BitBtn1Click(Sender: TObject);

begin

Timer2.Enabled:=true;

end;

13.  Запустите программу, проверьте. Что Вам не нравиться? Лично мне не нравятся 2 вещи: то, что можно запустить только одну торпеду и то, что при встрече с кораблем не происходит никакого эффекта. Будем это исправлять.

14.  Добавьте в объект Image рисунок torpeda. jpg (свойство Picture в Object Inspector). Вы получите торпеду в полной красе.

15.  На кнопки Bitbtn1 и Bitbtn2 поместите соответственно рисунки lodka. jpg и ships. jpg. (свойство Glyph).

16.  Создайте объект Image2 на весь экран и создайте фон моря (рисунок fon. jpg).

После вставки соответствующих рисунков должно получиться следующее:

Рис.45. Конечная форма приложения

Игра в действии.

Посмотрите еще раз на операторы, которые мы записали. На этом механизме можно писать различные увлекательные игры, те, которые придумываете Вы.

procedure TForm1.Timer1Timer(Sender: TObject);

begin

bitbtn2.Left := bitbtn2.Left-1;

if bitbtn2.Left <0 then bitbtn2.Left:=form1.Width-60;

end;

procedure TForm1.BitBtn1Click(Sender: TObject);

begin

timer2.Enabled:=true;

end;

procedure TForm1.Timer2Timer(Sender: TObject);

begin

image1.top:= image1.top-5;

if image1.top < 0 then

begin

image1.Top:=bitbtn1.Top;

timer2.Enabled:=false;

end;

if ((image1.Top > bitbtn2.Top)and (image1.Top <bitbtn2.Top+ bitbtn2.height)

and (image1.left > bitbtn2.left) and (image1.left < bitbtn2.left+bitbtn2.Width))

then

begin

timer2.Enabled:= false;

timer1.Enabled:= false;

end;

end;

Самостоятельно.

1.  Продумайте, что еще должно произойти в момент взрыва. Измените цвета формы, торпеды и т. д., добейтесь того, чтобы игрушка смотрелась.

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

3.  Добавьте статистику: сколько выстрелов сделала подлодка, сколько попаданий.

4.  Для курсантов платного курса: добавьте меню. В нем сделайте следующие пункты: Новая игра, Выход, Статистика, Об авторе….

Совершенствуем "Морской бой "

1 способ. Подключаем клавиатуру

Вообще в Delphi есть несколько событий, которые обрабатывают сообщения, посылаемые клавиатурой. Чтобы не утомлять Вас подробностями, предлагаем Вам использовать обработчик события OnKeyDown (при нажатии клавиши).

Рассмотрим ситуацию на примере:

procedure TForm1.BitBtn1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);

begin

if key = VK_Left then BitBtn1.left:=BitBtn1.left-2 ;

// Если нажата кнопка "стрелочка влево" на клавиатуре, то переместить кнопку на 2 точки влево

if key = VK_Right then BitBtn1.left:=BitBtn1.left+2 ;

// Если нажата кнопка "стрелочка вправо" на клавиатуре, то переместить кнопку на 2 точки вправо

Но учтите, что для того, чтобы ваша лодка обрабатывала эти кнопки, элемент должен быть активен. Сделать активным вашу кнопку можно командой: BitBtn1.SetFocus.

Для нашей игры достаточно сведений.

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24

Основные порталы (построено редакторами)

Домашний очаг

ДомДачаСадоводствоДетиАктивность ребенкаИгрыКрасотаЖенщины(Беременность)СемьяХобби
Здоровье: • АнатомияБолезниВредные привычкиДиагностикаНародная медицинаПервая помощьПитаниеФармацевтика
История: СССРИстория РоссииРоссийская Империя
Окружающий мир: Животный мирДомашние животныеНасекомыеРастенияПриродаКатаклизмыКосмосКлиматСтихийные бедствия

Справочная информация

ДокументыЗаконыИзвещенияУтверждения документовДоговораЗапросы предложенийТехнические заданияПланы развитияДокументоведениеАналитикаМероприятияКонкурсыИтогиАдминистрации городовПриказыКонтрактыВыполнение работПротоколы рассмотрения заявокАукционыПроектыПротоколыБюджетные организации
МуниципалитетыРайоныОбразованияПрограммы
Отчеты: • по упоминаниямДокументная базаЦенные бумаги
Положения: • Финансовые документы
Постановления: • Рубрикатор по темамФинансыгорода Российской Федерациирегионыпо точным датам
Регламенты
Термины: • Научная терминологияФинансоваяЭкономическая
Время: • Даты2015 год2016 год
Документы в финансовой сферев инвестиционнойФинансовые документы - программы

Техника

АвиацияАвтоВычислительная техникаОборудование(Электрооборудование)РадиоТехнологии(Аудио-видео)(Компьютеры)

Общество

БезопасностьГражданские права и свободыИскусство(Музыка)Культура(Этика)Мировые именаПолитика(Геополитика)(Идеологические конфликты)ВластьЗаговоры и переворотыГражданская позицияМиграцияРелигии и верования(Конфессии)ХристианствоМифологияРазвлеченияМасс МедиаСпорт (Боевые искусства)ТранспортТуризм
Войны и конфликты: АрмияВоенная техникаЗвания и награды

Образование и наука

Наука: Контрольные работыНаучно-технический прогрессПедагогикаРабочие программыФакультетыМетодические рекомендацииШколаПрофессиональное образованиеМотивация учащихся
Предметы: БиологияГеографияГеологияИсторияЛитератураЛитературные жанрыЛитературные героиМатематикаМедицинаМузыкаПравоЖилищное правоЗемельное правоУголовное правоКодексыПсихология (Логика) • Русский языкСоциологияФизикаФилологияФилософияХимияЮриспруденция

Мир

Регионы: АзияАмерикаАфрикаЕвропаПрибалтикаЕвропейская политикаОкеанияГорода мира
Россия: • МоскваКавказ
Регионы РоссииПрограммы регионовЭкономика

Бизнес и финансы

Бизнес: • БанкиБогатство и благосостояниеКоррупция(Преступность)МаркетингМенеджментИнвестицииЦенные бумаги: • УправлениеОткрытые акционерные обществаПроектыДокументыЦенные бумаги - контрольЦенные бумаги - оценкиОблигацииДолгиВалютаНедвижимость(Аренда)ПрофессииРаботаТорговляУслугиФинансыСтрахованиеБюджетФинансовые услугиКредитыКомпанииГосударственные предприятияЭкономикаМакроэкономикаМикроэкономикаНалогиАудит
Промышленность: • МеталлургияНефтьСельское хозяйствоЭнергетика
СтроительствоАрхитектураИнтерьерПолы и перекрытияПроцесс строительстваСтроительные материалыТеплоизоляцияЭкстерьерОрганизация и управление производством