Разместите на форме под этими компонентами еще один компонент 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);