Выбрать главу

Разместите на форме под этими компонентами еще один компонент Label, назовите его pl1 (свойство Name), а свойству Caption присвойте значение Первый игрок:. Справа от метки pl1 разместите компонент Edit, свойству Name которого присвойте значение ch1, а свойству Text — значение 0. Справа от поля ch1 разместите еще один компонент Label. Присвойте ему имя znak1 и очистите свойство Caption.

Под компонентами pl1, ch1 и znak1 разместите аналогичные компоненты для второго игрока, присвоив им имена рl2, ch2 и znak2 соответственно. Свойству рl2.Caption присвойте значение Второй игрок:, свойству ch2.Text — значение 0, а свойство znak2.Caption очистите. Поскольку по умолчанию игру будет начинать первый игрок, мы должны заблокировать ввод для второго игрока. Для этого измените значение свойства Enabled для компонентов ch2 и р12 на False.

Разместите на форме справа от компонентов 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] Начертание шрифта — полужирное
Height 54 Высота метки

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

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

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

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

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

var

 Form1: TForm1;

 num, j, i, kolvo, big, smalclass="underline" 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 smalclass="underline" = 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); //самое большое число

 smalclass="underline" = StrToInt(start.Text); //самое маленькое число

end;

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

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

procedure TForm1.Button2Click(Sender: TObject);