Delphi. Учимся на примерах - страница 17

Шрифт
Интервал

стр.

Разместите на форме справа от компонентов znak1 и znak2 еще один компонент Label и измените его свойства согласно табл. 9.2.

Таблица 9.2. Свойства нового компонента Label

Свойство Значение Пояснение
Name X Новое имя компонента
Caption X Надпись метки
Font.Color clRed Цвет шрифта — красный
Font.Name Courier New Название шрифта
Font.Size 36 Размер шрифта
Font.Style [fsBold] Начертание шрифта — полужирное
Height54Высота метки

Ниже всех компонентов разместите компонент Checkbox (флажок) категории Standard. Присвойте его свойству Name значение comp, a свойству Caption — значение Играть против компьютера (проследите также, чтобы свойство Checked было равно False).

Ниже разместите две кнопки (компонент Button категории Standard), присвоив их свойству Caption значения Принять вариант и Новая игра. Полученная форма должна соответствовать рис. 9.1.

Рис. 9.1. Форма для игры "Угадывание чисел"

Разработка программного кода

Прежде всего, объявим переменные, которые будем использовать на протяжении всей программы:

>var

> Form1: TForm1;

> num, j, i, kolvo, big, small: integer;

> maximum, minimum: array [1..100] of integer; {массивы максимальных и минимальных чисел}

Переменная num соответствует случайно заданное число, переменной kolvo — количество попыток, за которые число было отгадано, переменной big — наибольшее число из названных, а переменной small — наименьшее число из названных.

Теперь напишем две процедуры, которые в случае игры против компьютера будут определять границы нахождения числа. Процедура min будет определять нижнюю границу, а процедура max — верхнюю.

Объявим эти процедуры как закрытые члены класса формы:

>type

> TForm1 = class(TForm)

> …

>private

> { Private declarations }

> procedure min();

> procedure max();

>public

> { Public declarations }

>end;

После этого создадим сами процедуры в разделе implementation:

>//процедура нахождения наименьшего числа

>procedure TForm1.min();

>begin

> for i:=1 to kolvo do begin

>  for j:=1 to kolvo do begin

>   {Если число меньше наименьшего, то оно становится наименьшим}

>   if minimum[j] > small then small:= minimum[j];

>  end;

end;

>end;


>//процедура нахождения наибольшего числа

>procedure TForm1.max();

>var temp: integer;

>begin

> temp:= StrToInt(finish.Text);

> for i:=1 to kolvo do begin

>  for j:=1 to kolvo do begin

>   if temp > maximum[j] then

>    if maximum[j] > 0 then temp:= maximum[j]; {если число больше наибольшего…}

end;

> end;

> if ( (temp<>0) and (temp<>StrTolnt(finish.Text)) ) then

>  {… и если число входит в допустимый диапазон, то оно становится наибольшим}

big:= temp;

>end;

Рассмотрим процедуру, которая будет выполняться при создании формы:

>procedure TForm1.FormCreate(Sender: TObject);

>begin

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

> //загадываем случайное число из заданного диапазона

> num:= Random(StrToInt(finish.Text) – StrToInt(start.Text)) + StrToInt(start.Text);

> kolvo:= 0; //обнуляем количество попыток

> big:= StrToInt(finish.Text); //самое большое число

> small:= StrToInt(start.Text); //самое маленькое число

>end;

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

Самое главное событие — нажатие кнопки Принять вариант. Создадим для этого кнопки обработчик события OnClick:

>procedure TForm1.Button2Click(Sender: TObject);

>begin

> //увеличиваем количество попыток на единицу

> kolvo:= kolvo + 1;

> if not comp.Checked then //если идет игра с человеком

> begin

>  if pl1.Enabled then begin //если ход первого игрока

>  //если вариант больше загаданного числа, ставим знак >

>  if StrToInt(ch1.Text) > num then znak1.Caption:= '>';

>  //если вариант меньше загаданного числа, ставим знак <

>  if StrToInt(ch1.Text) < num then znak1.Caption:= '<';

>  if StrToInt(ch1.Text) = num then //если число угадано

>  begin

>   znak1.Caption:= '='; //изменим знак на "="

>   //вместо знака "X" показываем загаданное число

>   х.Caption:= IntToStr(num);

>   //выводим сообщение о победе первого игрока

>   ShowMessage('Победил первый игрок!' + #13#10 + 'Число угадано за ' + IntToStr(kolvo) + ' попытки')


стр.

Похожие книги