Разработка программного кода
Прежде всего, объявим переменные, которые будем использовать на протяжении всей программы:
>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) + ' попытки')