Umiestnenie súboru www.TrSek.com/pas/rutiny.pas{ RUTINY.PAS Copyright (c) TrSek alias Zdeno Sekerak }
{ Rutiny k 8smer.pas. }
{ }
{ Datum:28.05.1996 http://www.trsek.com }
{ vycisti vsetky tabulky }
procedure default;
begin
for x:=1 to MAX do
for y:=1 to MAX do
PTaj[x,y] := SPACE;
for x:=1 to MAX do
for y:=1 to MAX do
OKRieT[x,y] := true;
for x:=1 to PocSlov do
begin
Slov[x] := '';
OKSlov[x] := true;
end;
end;
{ Obhod komentar }
procedure Readlnf(var f:text;var ria:string );
begin
Repeat
Readln( f, ria );
Until (( ria[1] <> ';' ) or eof(f));
end;
{ Nacita subor, ak nieco nieje OK vrati false }
function citaj_subor( Subor:string ):boolean;
var i:integer;
f : text; { nacitany subor }
ria : string; { precitany riadok }
begin
default;
px:=0;py:=0;
Assign( f, Subor );
{$I-}
Reset( f );
{$I+}
if( IOResult<>0 ) then
begin citaj_subor := false; exit; end;
Readlnf( f, ria );
{ Najprv kolko znakov ma vysledok }
Repeat
Val( ria, pp, i );
if(i <> 0) then delete( ria, i, 1);
Until ( i = 0 );
Readlnf( f, ria );
{ Nacitaj znaky tajnicky }
Repeat
Inc( py ); { dalsi riadok }
for i:=1 to length(ria) do
ria[i] := UpCase(ria[i]);
i := 0;
while( length(ria) > 0 ) do
begin
if( ria[1] = SPACE ) then
delete(ria,1,1)
else
begin
inc(i);
PTaj[i,py] := copy( ria,1,2 );
delete(ria,1,2);
{ Nacitavaj slova ktore treba hladat }
ps:=1;
Repeat
Readlnf( f, ria );
for i := 1 to Length( ria ) do
if( ria[i] = ',' )then
begin
if( ps < PocSlov ) then Inc(ps);
end
else
Slov[ ps ] := Slov[ ps ] + UpCase( ria[i] );
Until( eof(f));
Close( f );
if( px=0 ) or ( py = 0 ) or ( ps = 0 ) then
citaj_subor := false
else
citaj_subor := true;
{ skoncili sme tu uz niet co najst }
end;
{ Vykresli celu tajnicku na posledny riadok na obrazovke }
function disp( od:integer ):integer;
var i,x,y : integer; { max pokial vypisovat }
celkom:string;
begin
i:=0;
celkom:='';
farba( ColB, ColP );
for y:=1 to py do
for x:=1 to px do
begin
if( OKRieT[x,y] )then inc(i);
if( OKRiet[x,y] and ( i>=od ) and ( i<72 ))then
celkom := celkom + PTaj[x,y];
end;
{ este zmazeme do konca }
for x:=length(celkom) to 70 do
celkom := celkom + SPACE;
gotoxy( 2, MAXY+1 );
write('(',i:4,')=',celkom);
disp := i;
end;
{ Vypise na obrazovku znak, rychlejsie ako write xy mejbi :-() }
procedure W_CXY( x,y,ix,iy:integer; znak:string );
var pom,pom1,pom2:word;
begin
ix := ix+x;
iy := iy+y;
if( ix >= 1 ) and ( ix <= MAXX ) and
( iy >= 1 ) and ( iy <= MAXY ) then
begin
{
obr^.znak[iy,2*ix] := 7936 + ord(znak);
if( znak='Ä' ) or ( znak='Ú' ) or ( znak='À' )then
obr^.znak[iy,2*ix+1] := 7936 + ord('Ä')
else
obr^.znak[iy,2*ix+1] := 7968;
}
znak := znak + SPACE;
gotoxy(2*ix,iy);
write( znak[1], znak[2] );
end;
end;
{ ukaze tabulku v dannom vyreze }
procedure VisTab( x,y:integer );
var ix,iy:integer;
xmax,ymax:integer;
begin
for ix:=1 to px do
begin
{ ramcek linka hore, dole, na zmazanie }
TextColor(ColP);
W_CXY( x, y, ix+1, 0, ' ' );
W_CXY( x, y, ix+1, 1, 'ÄÄ' );
W_CXY( x, y, ix+1, py+2, 'ÄÄ' );
W_CXY( x, y, ix+1, py+3, ' ' );
for iy:=1 to py do
begin
if( OKRieT[ix,iy] ) then farba(ColB,ColP)
else farba(ColB,ColPI);
W_CXY( x, y, ix+1, iy+1, PTaj[ix,iy] );
end;
end;
TextColor(ColP);
for iy:=0 to py+1 do
begin
{ ramcek linka vlavo, vpravo }
W_CXY( x, y, 0, iy+1, ' ' );
W_CXY( x, y, 1, iy+1, '³ ' );
W_CXY( x, y, px+2, iy+1, '³ ' );
W_CXY( x, y, px+3, iy+1, ' ' );
end;
{ styri rohy }
W_CXY( x, y, 1, 0, ' ' );
W_CXY( x, y, 1, 1, 'ÚÄ' );
W_CXY( x, y, 1, py+3, ' ' );
W_CXY( x, y, 1, py+2, 'ÀÄ' );
W_CXY( x, y, px+2, 0, ' ' );
W_CXY( x, y, px+2, 1, '¿ ' );
W_CXY( x, y, px+2, py+3, ' ' );
W_CXY( x, y, px+2, py+2, 'Ù ' );
KurzorZap(false);
end;
{ vpravo zobrazi vsetky slova }
procedure VisSlova(y,yz:integer);
var iy:integer;
xl:integer; { kde vlavo ma byt }
slovo:string;
begin
xl := 2*MAXX+3;
for iy:=y to MAXY+y-1 do
if( iy >= 1 ) and ( iy <= PocSlov )then
begin
{ ukaze pomoc, ak to niekomu pomoze }
procedure Help;
begin
window(11,3,71,19);
farba(ColBI,ColP);
clrscr;
writeln;
writeln(' Program na risenie osemsmerovky');
writeln;
writeln(' F1 - Tento help');
writeln(' F2 - Nahraje tajnicku do suboru');
writeln(' F3 - Vyberie tajnicku zo suboru');
writeln(' F5 - Zacne riesit osemsmerovku');
writeln(' TAB - Presuva sa medzi zoznamom slov a tajnickou');
writeln(' F4,INS - Hlada riesenie pre slovo na ktorom je kurzor');
writeln(' ESC - Ukoncenie prace s produktom');
writeln(' sipky - pohyb po zozname slov, alebo pohyb tajnickou');
writeln;
writeln(' Pri svojom spusteni sa snazi nacitat subor tajnicka.dat');
writeln;
writeln(' Software by TRSEK');
writeln(' http://www.trsek.host.sk');
repeat until (readkey in [#27,#13]);