Чтение онлайн

ЖАНРЫ

Delphi. Учимся на примерах

Парижский Сергей Михайлович

Шрифт:

 ch2.Text:= '0';

 //очистим массивы наибольших и наименьших чисел

 for i:= 1 to kolvo+1 do begin

minimum[i]:= 0;

maximum[i]:= 0;

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

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

 end;

 kolvo:= 0; //количество
использованных попыток

end;

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

Компилируем и запускаем программу на выполнение. Игра в действии показана на рис. 9.2.

Рис. 9.2. Игра "Угадывание чисел" в действии

Полный исходный код модуля

Полный исходный код программного модуля игры "Угадывание чисел" представлен в листинге 9. 1.

Листинг 9.1. Программный модуль игры "Угадывание чисел"

unit Unit1;

interface

uses

 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls;

type TForm1 = class(TForm)

 Button1: TButton;

 Label1: TLabel;

 Label2: TLabel;

 start : TEdit;

 finish: TEdit;

 Label3: TLabel;

 pl1: TLabel;

 ch1: TEdit;

 pl2: TLabel;

 ch2: TEdit;

 comp: TCheckBox;

 Button2: TButton;

 x: TLabel;

 znak1: TLabel;

 znak2: TLabel;

 procedure FormCreate(Sender: TObject);

 procedure compClick(Sender: TObject);

 procedure Button1Click(Sender: TObject);

 procedure Button2Click(Sender: TObject);

private

 { Private declarations }

 procedure min;

 procedure max;

public

 { Public declarations }

end;

var

 Form1: TForm1;

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

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

implementation

{$R *.dfm}

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

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.compClick(Sender: TObject);

begin

 if comp.Checked then begin //если флажок установлен

//блокируем ввод от второго игрока

ch2.Enabled:= False;

рl2.Enabled:= False;

//включаем ввод от первого игрока

ch1.Enabled:= True;

pl1.Enabled:= True;

 end

 else begin

//если игра идет с человеком, то

//включаем ввод для второго игрока

ch2.Enabled:= True;

рl2.Enabled:= True;

 end;

end;

procedure TForm1.Button1Click(Sender: TObject);

begin

 if ((StrToInt(finish.Text) > StrToInt(start.Text)) and (StrToInt(start.Text) > 0) and (StrToInt(finish.Text) < 60000))

 then {проверяем, не выходит ли заданное пользователем число за допустимые пределы}

{загадаем случайное число в заданном диапазоне}

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

 else ShowMessage('Неверный диапазон!');

Поделиться с друзьями: