Показать сообщение отдельно
  #6  
Старый 05.12.2010, 17:57
Аватар для deltas
deltas deltas вне форума
Новичок
 
Регистрация: 22.11.2010
Сообщения: 99
Репутация: 47
По умолчанию

Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Label1: TLabel;
    Button1: TButton;
    Timer1: TTimer;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure Edit1KeyPress(Sender: TObject; var Key: Char);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation
const
KC = 5; // разрядность числа (кол-во цифр)
LT = 10; // количество чисел (длина теста)
var
numb: integer; // число, которое должен запомнить испытуемый
right: integer; // количество правильных чисел
n: integer; // счетчик чисел

{$R *.dfm}

function GetNumb(k: integer) : integer;
var
n: integer; // генерируемое число
i: integer;
begin
// процедура генерирует число по разрядам
// начиная со старшего
n:= Random(9)+1; // старший разряд не может быть нулем
// остальные разряды
for i := 1 to (k-1) do
n := n*10 + Random(10);
GetNumb := n;
end;





procedure TForm1.FormCreate(Sender: TObject);
begin
Edit1.Visible := False; // скрыть поле ввода Editl
Edit1.MaxLength := KC; // кол-во символов, которое
// можно ввести
Label1.Wordwrap := True; // разрешить перенос слов на
// следующую строку
Label1.Caption :=
'Сейчас на экране будут появляться числа. ' +
'Вы должны запомнить число, набрать его на клавиатуре '+
'и нажать <Enter>';
Button1.Caption := 'Начать';
Timer1.Enabled := False; // таймер остановлен
Timer1.Interval := 1000; // время показа числа - 1 секунда
right := 0; // кол-во правильных
n := 0; // счетчик чисел
Randomize; // инициализация ГСЧ
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
if Button1.Caption = 'Завершить' then
Form1.Close; // закрыть окно программы

if Button1.Caption = 'Начать' then
begin
Button1.Caption := 'Завершить';
Button1.Visible := False; // скрыть кнопку
// кнопка Buttonl станет доступной после того,
// как испытание закончится
Label1.Caption := '';
Label1. Font .Size := 24; //размер шрифта поля Labell
Edit1.Font.Size := 24; // размер шрифта поля Editl
// сгенерировать и вывести число
numb := GetNumb(KC);
Label1.Caption := IntToStr(numb);
Timer1.Enabled := True; // запуск таймера
// процедура обработки сигнала от таймера
// "сотрет" число
end;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
Timer1.Enabled := False; // остановить таймер
Label1.Visible := False; // скрыть число
Edit1.Visible := True; // сделать доступным поле Editl
Edit1.SetFocus; // установить курсор в поле Editl
end;

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
var
igrok: integer; // число, которое ввел испытуемый
begin
case Key of
#13:
begin
igrok := StrToInt(Edit1.Text) ;
if (igrok = numb)
then right := right + 1;
n := n + 1; // счетчик чисел
Edit1.Text := '';
Edit1.Visible := False; // скрыть поле Editl
if n < LT then
begin
numb := GetNumb(KC); // сгенерировать следующее
// число
Label1.Caption := IntToStr(numb); // отобразить
// число

Label1.Visible := True;
Timer1.Enabled := True;  // пуск таймера
 end
else begin
// испытание закончено
// вывести результат
Label1.Font.Size := 10;
Label1.Caption := 'Результат:1' + #13 + 'Показано чисел: ' + IntToStr(LT) + #13 +
'Правильных: ' + IntToStr(right);
Label1.Visible := True;
Button1.Visible := True; // показать кнопку Завершить
end;
end;
else Key := Key;
end;
end;

end.

Вот полностью рабочий код. Могу скинуть исходник...
Ответить с цитированием