Здравствуйте! Помогите пожалуйста дополнить игру "угадай число".
Нужно вставить в нее таблицу рекордов по 3 победителям.Я не знаю как это сделать((((Заранее спасибо
Код:
program numbers;
uses Crt;
const
MAXLEV=5;
K_ENTER=13;
K_ESC=27;
type
ArOfint=array[1..MAXLEV] of integer;
type
win=record
nik: string[20];
step: integer;
end;
winner=file of win;
var
F:winner;
igrok:ArOfint;
comp:ArOfint;
level:integer;
nu:integer;
nm:integer;
KeyCode:integer;
otl:boolean;
i,n,ans:integer;
b: array[1..20] of win;
w: win;
procedure GetComp(var a:ArOfInt;n:integer);
var
i:integer;
begin
randomize;
for i:=1 to n do
a[i]:=random(10);
if otl then begin
writeln;
write('Combinaciya computera:');
for i:=1 to n do write(a[i]);
writeln;
end;
end;
{====================================================================}
function ugad(comp,igrok:ArOfInt;n:integer):integer;
var
u:integer;
i,j:integer;
found:boolean;{TRUE,if igrok[i]=comp[j]}
begin
u:=0;
for i:=1 to n do
begin
j:=1;
found:=FALSE;
repeat
if igrok[i]=comp[j] then
begin
comp[j]:= -1;
u:=u+1;
found:=TRUE;
end
else j:=j+1;
until(j>n) or found;
end;
ugad:=u;
end;
{====================================================================}
function mesto(comp,igrok:ArOfInt;n:integer):integer;
var
m:integer;
i:integer;
begin
m:=0;
for i:=1 to n do
if comp[i]=igrok[i]
then m:=m+1;
mesto:=m;
end;
{===================================================================}
function GetIgrok(var a:ArOfint; n:integer; mes:string):integer;
var
ch:char;
dec:integer;
x,y:integer;
i:integer;
code:integer;
begin
i:=1;
write(mes);
repeat
ch:=readkey;
dec:=ord(ch);
if(ch>='0')and (ch<='9') and (i<=n)
then
begin
write(ch);
val(ch,a[i],code);
i:=i+1;
end
else /
if (dec=8) and (i>1)
then
begin
i:=i-1;
x:=whereX;
y:=whereY;
gotoXY(x-1,y);
write(' ');
gotoXY(x-1,y);
end;
until((i>n) and (dec=K_ENTER)) or (dec=K_ESC);
GetIgrok:=dec;
end;
{=====================================================================}
procedure pravila(n:integer);
begin
writeln;
writeln;
writeln('Computer zadumal cislo iz' ,n, 'cifr.Vi dolgni ego otgodat.');
write('Posle vvoda ocherdnogo cisla programma');
writeln('soobhaet,skolko cifr');
writeln('ugadano,i skolko iz nih nahoditsya na svoih mestah.','Naprimer,');
writeln('esli zadumano cislo 435 i vvedeno 457','to ugadani 2 cifri,');
writeln('i odna cifra nahoditsya na svoem meste.');
writeln('Pri vvode mogno ispolzovat <BackSpase>.','Posle vvoda chisla');
writeln('sleduet nagat klavishu <Enter> ili <Esc> dlya prekrasheniya igri.');
writeln;
end;
{====================================================================}
procedure NewRecord;
var n,i: integer;
begin
assign (F, 'records.txt');
reset (F);
while not eof(F) do read (F,b[i]);
b[i+1]:=w;
begin
for i:=1 to sizeof(F) do
if b[i].step>b[i+1].step then
begin
w:=b[i];
b[i]:=b[i+1];
b[i+1]:=w;
end;
end;
close(F);
end;
{=====================================================================}
begin
writeln ('Угадай число');
writeln ('1. Играть');
writeln ('2. �Просмотреть таблицу рекордов ');
writeln ('‚Выберете действие');
readln (ans);
case ans of
1:
begin
writeln ('Введети уровень сложности(от 2 до 5) ');
readln (level);
otl:=FALSE;
n:=0;
pravila(level);
GetComp(comp,level);
repeat
KeyCode:=GetIgrok(igrok,level,'Vah variant -> ');
if KeyCode<>K_ESC then begin
nu:=ugad(comp,igrok,level);
nm:=mesto(comp,igrok,level);
n:=n+1;
writeln('Ugadano:',nu,'.Na svoih mestah:',nm);
writeln('Сделано попыток',n);
end;
until
((nu=level)and (nm=level)) or (KeyCode=K_ESC);
if KeyCode<>K_ESC
then
begin
writeln('Yra!Vi ugadali chislo!!!');
writeln('Сделано',n,'ходов');
w.step:=n;
writeln('Введите ваше имя- ');
readln(w.nik);
NewRecord;
end
else
begin
writeln('Igra zavershena po nagatiu <Esc>.');
write('Zadumannoe chislo:');
for i:=1 to level do
write(comp[i]);
writeln;
end;
write('Nagmite klavishu <Enter> dlya zaversheniya.');
readln;
end;
end;
end.