Пользователь
Регистрация: 02.06.2008
Сообщений: 10
|
Delphi. Объяснить прогу.
программа для проверки и развития памяти и внимательности. Программа должна выводить на экран таблицу, в ячейках которой случайным образом расположены случайные целые числа от 0 до 99, показывать в течение ограниченного промежутка времени, после чего предлагать пользователю повторить заполнение таблицы и проверять ответ. Уровень сложности заданий (размер таблицы, количество чисел, причём, возможно наличие пустых ячеек, время показа) может выбираться пользователем. Статистическая информация (имя испытуемого, сложность задания, результаты проверки ответа) сохраняются в текстовом файле.
Вот код. Его нужно пояснить, хотя бы частично. Т.е объяснить, что делает каждая процедура.
Цитата:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, Grids, Menus, ComCtrls, jpeg;
type
TForm1 = class(TForm)
StringGrid1: TStringGrid;
BtnBegin: TButton;
Timer1: TTimer;
StringGrid2: TStringGrid;
BtnReady: TButton;
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
N8: TMenuItem;
N9: TMenuItem;
N10: TMenuItem;
ProgressBar1: TProgressBar;
Label1: TLabel;
Label2: TLabel;
StatusBar1: TStatusBar;
Label3: TLabel;
Label4: TLabel;
Timer2: TTimer;
procedure BtnBeginClick(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure BtnReadyClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure N7Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure N5Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure Timer2Timer(Sender: TObject);
procedure N9Click(Sender: TObject);
procedure N10Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
ch:byte;
implementation
uses nastroy, stat, choosePro,help,about;
{$R *.dfm}
procedure TForm1.BtnBeginClick(Sender: TObject);
var i:byte;
begin
Randomize;
StringGrid1.Visible:=true;
StringGrid2.Visible:=false;
BtnReady.Visible:=false;
Label2.Visible:=false;
ch:=0;
Timer1.Enabled:=true;
Timer1.Interval:=200;
ProgressBar1.Max:=time;
For i:=1 to NumObj do
StringGrid1.Cells[1,i]:='';
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var i:byte;
begin
if ch=3 then
label3.Visible:=true;
If ch=6 then
begin
Label3.Visible:=false;
Label4.Visible:=true;
end;
If ch=9 then
begin
Label4.Visible:=false;
Label1.Visible:=true;
For i:=1 to NumObj do
begin
StringGrid1.Cells[0,i]:=intTostr(i);
StringGrid1.Cells[1,i]:=intTostr((Random(1000)+Random(100 )*10+Random(10)*100)mod(100));
end;
end;
If ch>9 then
begin
ProgressBar1.Visible:=true;
ProgressBar1.position:=ProgressBar1 .Max-ch+10;
end;
If ch=(time+10) then
begin
ProgressBar1.Visible:=false;
Label2.Visible:=true;
StringGrid1.Visible:=false;
StringGrid2.Visible:=true;
BtnReady.Visible:=true;
For i:=1 to 10 do
begin
StringGrid2.Cells[0,i]:=intTostr(i);
StringGrid2.Cells[1,i]:='';
end;
Timer1.Enabled:=false;
end;
ch:=ch+1;
end;
procedure TForm1.BtnReadyClick(Sender: TObject);
var i,right:byte;
a,b:string;
isfile:boolean;
fstat:Textfile;
begin
right:=0;
For i:=1 to NumObj do
IF StringGrid1.Cells[1,i]=StringGrid2.Cells[1,i] then
right:=right+1;
ShowMessage('Количество правильных чисел '+intTostr(right));
StringGrid1.Visible:=true;
BtnReady.Visible:=false;
If StatusBar1.Panels[0].Text<>'Гость' then
begin
a:='Statistik/'+curProf+'.txt';
isFile:=FileExists(a);
If isFile then
begin
assignfile(fstat,a);
append(fstat);
b:=Statusbar1.Panels[1].Text+' '+intTostr(time)+' '+intTostr(NumObj)+' '+intTostr(right);
Writeln(fstat,b);
closefile(fstat);
end
else
begin
assignfile(fstat,a);
Rewrite(fstat);
b:=Statusbar1.Panels[1].Text+' '+intTostr(time)+' '+intTostr(NumObj)+' '+intTostr(right);
Writeln(fstat,b);
closefile(fstat);
end;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
StringGrid1.cells[0,0]:='Индекс';
StringGrid1.cells[1,0]:='Число';
StringGrid2.Cells[0,0]:='Индекс';
StringGrid2.cells[1,0]:='Число';
time:=20;
NumObj:=10;
StringGrid1.RowCount:=NumObj+1;
StringGrid2.RowCount:=NumObj+1;
StringGrid1.Height:=18*(NumObj+2);
StringGrid2.Height:=18*(NumObj+2);
StatusBar1.Panels[0].Text:='Гость';
end;
procedure TForm1.N7Click(Sender: TObject);
begin
Option.ShowModal;
end;
procedure TForm1.N3Click(Sender: TObject);
begin
FormStat.Show;
end;
procedure TForm1.N5Click(Sender: TObject);
begin
Close;
end;
procedure TForm1.N2Click(Sender: TObject);
begin
FormChooseProf.ShowModal;
end;
procedure TForm1.Timer2Timer(Sender: TObject);
begin
StatusBar1.Panels[1].Text:=timeTostr(now);
end;
procedure TForm1.N9Click(Sender: TObject);
begin
FormHelp.Show;
end;
procedure TForm1.N10Click(Sender: TObject);
begin
FormAbout.Show;
end;
//TInifile=class
end.
|
|