Примеры программирования задач
8.1.1. Игра «Угадай число» (Delphi)
Составим программу‑игру «Угадай число» (рис. 8.1.1.1).
Рис. 8.1.1.1. Вид формы игры «Угадай число»
В поле Edit1 задается число N для формирования случайного положительного целого числа в интервале [0,N], и это число должен угадать игрок. Кнопкой Загадать число (Button1) формируется это случайное число. Игрок вводит предполагаемое число в поле Edit2 и нажимает кнопку Попытка. Если это число больше загаданного, то в поле Edit3 (Результат) выводится текст подсказки Перелет. Если это число меньше загаданного, то выводится текст Недолет. Наконец, при совпадении выводится текст Угадал. Число использованных попыток выводится в поле Edit4. Разместим на форме соответствующие компоненты и зададим значения свойству Caption.
Приведем тексты процедур программы.
Var // раздел переменных модуля Unit1
X:Integer; // объявление внешней переменной X - загадываемое число
procedure TForm1.Edit1Change(Sender: TObject); // изменение поля Edit1
Var v,e:Integer;// v ‑ значения числа после перевода, e ‑ код ошибки (0-нет)
Begin Val(Edit1.Text,v,e); // перевод числа из поля Edit1.Text в V (п. 1.7.5)
Button1.Enabled:=e=0; // условие доступности Button1
Button2.Enabled:=False; // блокировка кнопки Button2 (Попытка)
Edit2.Enabled:=e=0 // условие доступности поля Edit2
end;
procedure TForm1.Edit2Change(Sender: TObject); // изменение поля Edit2
Var v,e:Integer; // v ‑ значения числа после перевода, e ‑ код ошибки (0-нет)
Begin
Val(Edit2.Text,v,e); // перевод числа из поля Edit2.Text в V
Button2.Enabled:= e=0; // условие доступности Button2
end;
procedure TForm1.Button1Click(Sender:TObject);//кнопка «Загадай число»
var v,e:Integer; // v ‑ значения числа после перевода, e ‑ код ошибки (0-нет)
begin Val(Edit1.Text,v,e); // перевод числа из поля Edit1.Text в V
Randomize; X:=random(v); // формирование случайного числа X
Edit1.Enabled:=False; Button2.Enabled:=True; Edit2.Enabled := True;
Edit2.SetFocus; // установка фокуса на поле Edit2
End;
procedure TForm1.Button2Click(Sender: TObject); // кнопка «Попытка»
Var v,e:Integer; // v ‑ значения числа после перевода, e ‑ код ошибки (0-нет)
Begin Val(Edit2.Text,v,e); // перевод числа из поля Edit2.Text в V
If v>X then Edit3.text:='Перелет' else
If v<X then Edit3.text:='Недолет' else Edit3.text:='Вы угадали';
Edit4.Text:=IntToStr(StrToInt(Edit4.Text)+1);//число попыток увеличить на 1
Edit2.SetFocus; // установка фокуса на поле Edit2
end;
procedure TForm1.Button3Click(Sender: TObject); //кнопка «Очистить»
begin Edit1.Text:=''; Edit2.Text:=''; Edit3.Text:=''; Edit4.Text:='0';
Edit1.Enabled:=True; // разблокировка поля ввода числа N
Button1.Enabled:= False; // блокировка кнопки «Загадай число»
Button2.Enabled:= False; // блокировка кнопки «Попытка»
Edit1.SetFocus; // установка фокуса на поле Edit1
X:= 0 // загадываемое число первоначально равно нулю
end;
procedure TForm1.Button4Click(Sender: TObject); // кнопка «Выход»
begin Close; end;
Для формы в качестве обработчика события OnActivate укажем имя процедуры Button3Click ‑ обработки события OnClick кнопки Очистить.
Дата добавления: 2016-03-22; просмотров: 788;