"Эверест" - Центр Практической Информатики

представляет вводный курс

"Delphi для чайников"

Урок 10. "Добро пожаловать

или посторонним вход воспрещен".

 

Сегодня мы повторяем оператор ветвления. Создадим программу-пароль. Она будет работать следующим образом: При загрузке программа попросит ввести пароль, если Вы введете пароль правильно, программа напишет "Добро пожаловать", если пароль неверен- ответ будет "Посторонним вход воспрещен".

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

Для данной программы нам потребуются следующие элементы: компонент Label (для вывода надписей на экран), компонент Edit (для ввода пароля), 2 кнопки (подтвердить ввод и выход).


2. Поместите данные элементы на форму:


3. Изменяем свойства Caption объектов (напомню у Edit- это свойство Text)

Давайте поймем логику программы: что мы хотим, как будет работать программа. При загрузке необходимо будет ввести пароль. При нажатии на кнопку ОК, программа проверяет, правильно ли был введен пароль (сравнивает строку в Edit со строкой в памяти компьютера), и если пароль верен, то выводит надпись "Добро пожаловать", а строку Edit прячет;
если неправильно, то выводит на экран окно с сообщением, что пароль неверен.

4. Пишем обработчик события для клавиши ОК (2 раза щелкните по кнопке, и Вы окажитесь в редакторе кода в нужном месте:

5. Запустите программу клавишей F9. Проверьте, как ведет себя программа. Я ввел неправильный пароль и нажал кнопку ОК, у меня открылось окно:

6. Вы не находите в нем ничего странного? Ведь мы написали оператор edit1.Text:='';, который должен был очистить строку ввода, а у меня там введенный пароль. На самом деле, все верно. Наш оператор стоит после строки ShowMessage - значит, он должен выполнятся после него. И хотя компьютер вывел на экран сообщение (т.е. данное окно), работа оператора еще не завершилась. Оператор завершиться, когда Вы нажмете ОК. И, действительно, как только Вы нажмете ОК, строка ввода очиститься.


7. Самостоятельно: А сделайте так, чтобы строка ввода очищалась и тогда, когда окно сообщения на экране.

 

Счетчик.

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


Итак, счетчиком будет переменная k (я так хочу, ВЫ же можете сделать любую).

8. Когда она должна увеличиваться? Когда введен неправильный пароль. Следовательно, он должен стоять в обработчике события кнопки ОК по ветви "нет". Измените код кнопки, добавив в него строку:

k:= k+1;

Далее нам нужно проверить совершено ли данное событие 3 раза, т.е. k=3 или нет, и если так, то закрыть форму. Записать данную процедуру можно следующим образом:
if k=3 then form1.close;

Посмотрите, ваша процедура должна быть похожа на мою:

procedure TForm1.Button1Click(Sender: TObject);
begin
if edit1.Text='qqq'
Then
begin
Label1.Caption:=' Добро пожаловать ';
edit1.Enabled:=false;
end
Else
begin
ShowMessage (' Посторонним вход воспрещен ');
edit1.Text:='';
edit1.SetFocus;
k:= k+1;
if k=3 then form1.close;
end;

end;

8. Теперь необходимо объявить новую переменную. Делается это в редакторе кода после раздела implementation. Посмотрите на рис, сделайте свой код как у меня:

9. Последнее, что нужно сделать, это присвоить начальное значение переменной. Где это можно сделать? В самой процедуре нельзя, потому что… ( А почему?)

Мы поступим следующим образом. Зададим начальное значение при запуске программы, т.е. при рождении формы.


10. В Инспекторе объектов выберите Form1, перейдите в раздел Events, и дважды щелкните напротив строки OnCreate (при создании). Откроется соответствующая процедура.


11. Введите оператор, как у меня:

procedure TForm1.FormCreate(Sender: TObject);
begin
k:=0;
end;

12. Запускайте программу, наслаждайтесь!

Самостоятельно:
1. Доделайте программу, чтобы она при неправильном пароле выводила надпись: У вас осталась 1 попытка ( или 2 или 3).

2. Ответьте на вопрос: "Почему нельзя задавать начальное значение счетчика в процедуре нажатия клавиши?". Если не догадались, вставьте его туда, и посмотрите, что происходит.

3. Напишите обработчик для второй кнопки Закрыть, чтобы при нажатии на нее, форма закрывалась.

4. Измените программу таки образом, чтобы на правильные и неправильные действия программа еще как-то реагировала (цветом формы, размером шрифта и т.д.).

Примечание1: Уважаемые подписчики, начиная со следующего урока мы перейдем непосредственно к практике написания небольших игр. Далее не будут разъясняться изученные ранее темы. Поэтому у меня к вам просьба: напишите, пожалуйста нам письмо (e-mail: rk@rikt.ru), в котором укажите что хорошо, что плохо, какие темы изложены непонятно, в чем могут быть проблемы, на чем нужно заострить внимание.

Заранее благодарен....Ишмуратов Радик Камильевич

На следующем уроке мы начнем писать свою первую игрушку...

Посмотреть архив данной рассылки Вы сможете на нашем сайте по адресу: http://umnik.rikt.ru/projectgame