- Код: Выделить всё
- unit Unit1;
 {$mode objfpc}{$H+}
 interface
 uses
 Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls,
 StdCtrls;
 type
 { TForm1 }
 TForm1 = class(TForm)
 Button1: TButton;
 Edit1: TEdit;
 Label1: TLabel;
 Timer1: TTimer;
 procedure Button1Click(Sender: TObject);
 procedure FormCreate(Sender: TObject);
 procedure Timer1Timer(Sender: TObject);
 private
 public
 end;
 var
 Form1: TForm1;
 implementation
 var
 KC: integer; // разрядность число(кол-во чисел)
 LT: integer; // количество чисел (длина текста)
 numb: integer; // число, которое должен запомнить испытуемый
 right:integer; // колличество правильных чисел
 n: integer; // счетчик чисел
 igrok: integer;
 {$R *.lfm}
 // генерирует к - разрядное число
 function GetNumb(k:integer) : integer;
 var
 n: integer; // генерируемое число
 i:integer;
 begin
 KC := 1; // разрядность число(кол-во чисел)
 LT := 10; // количество чисел (длина текста)
 // процедура генерирует число по разрядам
 // начиная со старшего
 n:= Random(9)+1; // старший разряд не может быть нулем
 // остальные разряды
 for i := 1 to (k-1) do
 n := n*10 + Random(10);
 GetNumb := n;
 end;
 if right=6 then
 begin
 KC := 2; // разрядность число(кол-во чисел)
 LT := 10; // количество чисел (длина текста)
 // процедура генерирует число по разрядам
 // начиная со старшего
 n:= Random(9)+1; // старший разряд не может быть нулем
 // остальные разряды
 for i := 1 to (k-1) do
 n := n*10 + Random(10);
 GetNumb := n;
 end;
 if right=6 then
 begin
 KC := 3; // разрядность число(кол-во чисел)
 LT := 10; // количество чисел (длина текста)
 // процедура генерирует число по разрядам
 // начиная со старшего
 n:= Random(9)+1; // старший разряд не может быть нулем
 // остальные разряды
 for i := 1 to (k-1) do
 n := n*10 + Random(10);
 GetNumb := n;
 end;
 if right=6 then
 begin
 KC := 4; // разрядность число(кол-во чисел)
 LT := 10; // количество чисел (длина текста)
 // процедура генерирует число по разрядам
 // начиная со старшего
 n:= Random(9)+1; // старший разряд не может быть нулем
 // остальные разряды
 for i := 1 to (k-1) do
 n := n*10 + Random(10);
 GetNumb := n;
 end;
 // создание формы
 procedure TForm1.Button1Click(Sender: TObject);
 begin
 if button1.Caption = 'Завершить' then
 begin
 Form1.Close; // закрыть окно программы
 end;
 if Button1.Caption='Продолжить' then
 begin
 Edit1.Visible:=false;
 if n<LT then
 begin
 igrok:=StrToInt(Edit1.Text);
 if igrok=numb then
 Right:=Right + 1;
 numb := GetNumb(KC); // сгенерировать следующее
 // число
 Label1.Caption := IntToStr(numb); // отобразить
 // число
 Label1.Visible := True;
 Timer1.Enabled := True; // пуск таймера
 n:=n+1;
 Edit1.Text:='';
 Button1.Caption:='Продолжить';
 Button1.Visible:=True;
 end
 else
 begin
 // испытание закончено
 // вывести результат
 Label1.Font.Size := 14;
 Label1.Caption := 'Результат: ' + chr(13) +
 'Показано чисел: ' + IntToStr(LT) + chr(13) +
 'Правильных: ' + IntToStr(Right);
 Label1.Visible := True;
 Button1.Caption:='Завершить';
 Button1.Visible := True; // показать кнопку Завершить
 end;
 end;
 if button1.Caption = 'Начать' then
 begin
 Edit1.Enabled := True;
 Label1.Caption := '';
 Label1.Font.Size := 20; //размер шрифта поля Labell
 Edit1.Font.Size := 20; // размер шрифта поля Editl
 numb := GetNumb(KC); // сгенерировать следующее
 // число
 Label1.Caption := IntToStr(numb); // отобразить
 // число
 Label1.Visible := True;
 Timer1.Enabled := True; // пуск таймера
 Button1.Caption:='Продолжить';
 Button1.Visible:=True;
 end;
 if Button1.Caption = 'Начать Процедуру' then
 begin
 Edit1.Visible := False; // скрыть поле ввода Editl
 Label1.Visible := True;
 Label1.Caption:=
 'Сейчас на экране будут появляться числа. ' + chr(13) +
 'Вы должны запомнить число, набрать его на клавиатуре ' + chr(13) +
 'и нажать "Продолжить"';
 Button1.Caption := 'Начать';
 end;
 end;
 procedure TForm1.FormCreate(Sender: TObject);
 begin
 Edit1.MaxLength := KC; // кол-во символов, которое можно ввести
 edit1.Enabled:=false;
 Timer1.Enabled := False; // таймер остановлен
 Timer1.Interval := 1000; // время показа числа - 1 секунда
 right := 0; // кол-во правильных
 n := 0; // счетчик чисел
 Randomize; // инициализация ГСЧ
 end;
 procedure TForm1.Timer1Timer(Sender: TObject);
 begin
 Timer1.Enabled := False; // остановить таймер
 Label1.Visible := False; // скрыть число
 Edit1.Visible := True; // сделать доступным поле Editl
 Edit1.SetFocus; // установить курсор в поле Editl
 end;
 end.







 
 

