Unit Knihovna; Interface Uses Crt,Graph; Type Kokot=string[1]; Var Kraj:string[8]; Sit:string; RR:String; ii:integer; Procedure VytvorRam(X1,Y1,X2,Y2,Typ:byte); Procedure VytvorKraj(Typ: byte); Function DejNaStred(Text:string):string; Procedure Locate(X,Y:byte;Text:string); Function Strings(Pocet:integer;Znak:string):string; Procedure Help; Procedure Help2; Procedure VytvorVlastniOkraj(Znaky:string); Procedure Logo(Text:string); Procedure Napis(X,Y: byte; Znak: Kokot); Procedure VytvorNapis(X,Y,Mezera:Byte; Text:string); Function StringNaChar(Znak:Kokot):Char; Procedure NapisNaStred(Y:byte;Text:string); Procedure Vypln(Znak:String;Rychlost:longint;Zpusob:Byte); Procedure Vypln2(Znak:String;Rychlost:longint;Zpusob:byte); Procedure Barevne(Text:String); Procedure Pismo(Barva:byte); Procedure Pozadi(Barva:byte); Procedure Barva(Pis,Poz:byte); Procedure VytvorSit(X1,Y1,X2,Y2,Typ,MezeraX,MezeraY:byte;Mezery:Boolean); Procedure NactiSit(Typ:byte); Procedure Grafika; Procedure GBarva(X:byte); Procedure GPozadi(X:byte); Procedure GBarvy(X,Y:byte); Procedure NactiObrazek(X,Y,Sirka,Vyska:integer;Cesta:string;T:byte); Procedure Hvezda; Implementation (**) Procedure VytvorRam(X1,Y1,X2,Y2,Typ:byte); var i:byte; label 1; Begin VytvorKraj(Typ); GotoXY(X1,Y1); write(Kraj[1]); for i:=2 to X2-X1 do write(Kraj[2]); write(Kraj[3]); If Y1=Y2 then goto 1; for i:=1 to Y2-Y1-1 do Begin GotoXY(X1,Y1+i); write(Kraj[4]); GotoXY(X2,Y1+i); write(Kraj[5]); End; GotoXY(X1,Y2); write(Kraj[6]); for i:=2 to X2-X1 do write(Kraj[7]); write(Kraj[8]); 1: End; Procedure VytvorKraj(Typ: byte); Begin Case Typ of 1: Kraj:='ÉÍ»ººÈͼ'; 2: Kraj:='ÚÄ¿³³ÀÄÙ'; 3: Kraj:='ÜÜÜÛÛßßß'; 4: Kraj:='/-\||\-/'; End; End; Function DejNaStred(Text:string):string; var i:byte; Begin for i:=1 to (80-Length(Text)) div 2 do Text:=' '+ Text; DejNaStred:=Text; End; Procedure Locate(X,Y:byte;Text:string); Begin GotoXY(X,Y);write(Text); End; Function Strings(Pocet:integer;Znak:string):string; Var i:integer; s:string; Begin s:=''; for i:=1 to Pocet do s:=s+Znak; Strings:=s; End; Procedure VytvorVlastniOkraj(Znaky:string); Begin Kraj:=Znaky; End; Procedure Help; var i:integer; R:char; Begin Logo(''); textbackground(0); ClrScr; textbackground(9); for i:=1 to 23 do Begin Locate(1,i,strings(80,' ')); End; VytvorRam(1,1,80,24,1); Locate(2,3,DejNaStred('Napoveda ke knihovne:')); VytvorRam(3,2,78,4,2); textbackground(0); for i:=5 to 22 do Begin Locate(3,i,strings(75,' ')); End; VytvorRam(3,5,78,23,2); Kraj:='ÃÄ´__ÃÄ´'; VytvorRam(3,7,78,7,0); Locate(5,6,'Nazev procedury/ funkce parametry navratova hodnota'); Locate(5,8,'VytvorRam X1, Y1, X2, Y2, Typ: byte '); Locate(5,9,'VytvorVlastniOkraj Znaky: string[8] '); Locate(5,10,'DejNaStred Text: string string'); Locate(5,11,'Locate X, Y: byte; Text: string string'); Locate(5,12,'Strings Pocet: integer; Znak: string string'); locate(5,13,'Help '); locate(5,14,'Logo Text: string '); locate(5,15,'VytvorNapis X, Y, Mezera: byte; Text: string '); locate(5,16,'StringNaChar Znak: string[1] char '); locate(5,17,'Barevne Text: string '); locate(5,18,'Pismo, Pozadi Barva: byte '); locate(5,19,'Barva Pis, Poz: byte '); locate(5,20,'Vypln, Vypln2 Znak: string; Rychlost: longint; Zpusob: byte '); locate(5,22,'Naprogramoval: Jan Dvorak < + > < OK >'); textbackground(0);textcolor(7); R:=ReadKey; if ord(R)=43 Then Help2; clrscr; GotoXY(1,1); End; Procedure Help2; Begin ClrScr; VytvorRam(1,1,80,23,2); Locate(3,2,DejNaStred('Procedura VytvorRam: ')); Locate(3,3,'Parametry XY slouzi k nastaveni okraju ramu a par. Typ k typu okraje.'); Locate(3,4,'Pri zadani Typ:=0 , se zobrazi naposledy pouzity okraj, jimz muze byt pri'); Locate(3,5,'pouzizi procedury VytvorVlastniOkraj okraj Vami zadany.'); Kraj:='ÃÄ´__ÃÄ´'; VytvorRam(1,6,80,6,0); Locate(3,7,DejNaStred('Procedura VytvorVlastniOkraj: ')); Locate(3,8,'Parametr Znaky slouzi k nastaveni znaku okraje ramu: levy horni roh,'); Locate(3,9,'horni stena, pravy horni roh, leva bocni stena, prava bocni stena,'); Locate(3,10,'levy spodni roh, spodni stena, pravy spodni roh'); VytvorRam(1,11,80,11,0); Locate(3,12,DejNaStred('Funkce Dej na stred ')); Locate(3,13,'Funkce vraci retezec, ktery je tvoren hodnotou parametru text doplnenou'); Locate(3,14,'patricnym poctem mezer tak, aby byl zadany text uprostred obrazovky.'); VytvorRam(1,15,80,15,0); Locate(3,16,DejNaStred('Procedura Locate ')); Locate(3,17,'Procedura vypise na obrazovku zadany text (parametr Text) na zadanych'); Locate(3,18,'souradnicich XY. (X - cislo sloupce, Y - cislo radky'); VytvorRam(1,19,80,19,0); Locate(3,20,DejNaStred('Funkce Strings ')); Locate(3,21,'Funkce vraci retezec tvoreny z Pocet krat opakovanou hodnotou paramatru'); Locate(3,22,'Znak (mozno i vice znaku).'); GotoXY(1,1); ReadKey; GotoXY(1,24); Writeln(' Procedura Help '); Writeln(' Zobrazi napovedu pro tuto knihovnu. Po ukonceni vycisti obrazovku a nastavi'); Writeln(' vychozi barvy textu (7) a pozadi (0).'); writeln('');writeln('');writeln(''); VytvorRam(1,1,80,22,2); Kraj:='ÃÄ´__ÃÄ´'; VytvorRam(1,6,80,6,0);VytvorRam(1,10,80,10,0);VytvorRam(1,14,80,14,0);VytvorRam(1,18,80,18,0); GotoXY(1,1); ReadKey; gotoXY(1,23); Writeln(' Procedura Logo '); Writeln(' Zobrazi logo DWAPI programming uvadi a Vami zadany text. Po ukonceni se'); Writeln(' vycisti obrazovka a nastavi se vychozi barvy textu (7) a pozadi (0).'); writeln('');writeln('');writeln('');Writeln(''); VytvorRam(1,1,80,21,2); Kraj:='ÃÄ´__ÃÄ´'; VytvorRam(1,5,80,5,0);VytvorRam(1,9,80,9,0);VytvorRam(1,13,80,13,0);VytvorRam(1,17,80,17,0); GotoXY(1,1); ReadKey; gotoXY(1,22); Writeln(' Procedura VytvorNapis '); Writeln(' Vypise na obrazovku Vami zadany text na Vami zadane souradnice.'); Writeln(' Odstup jednotlivych pismen lze ridit promnenou Mezera. Procedura'); Writeln(' umi zobrazit ,,pouze" znaky A..Z'); writeln('');writeln('');writeln(''); VytvorRam(1,1,80,22,2); Kraj:='ÃÄ´__ÃÄ´'; VytvorRam(1,5,80,5,0);VytvorRam(1,9,80,9,0);VytvorRam(1,13,80,13,0);VytvorRam(1,17,80,17,0); GotoXY(1,1); ReadKey; GotoXY(1,23); Writeln(' Funkce StringNaChar '); Writeln(' Tato funkce slouzi, jak jiz z nazvu vyplyva, na pretypovani neordinalniho '); Writeln(' typu string na ordinalni typ char. Je to funkce, ktera v Pascalu chybi.'); writeln('');writeln('');writeln(''); VytvorRam(1,1,80,22,2); Kraj:='ÃÄ´__ÃÄ´'; VytvorRam(1,5,80,5,0);VytvorRam(1,9,80,9,0);VytvorRam(1,13,80,13,0);VytvorRam(1,18,80,18,0); GotoXY(1,1); ReadKey; Help; End; Procedure Logo(Text:string); Var i:integer; Label 1; Begin textbackground(0); textcolor(7); ClrScr; GotoXY (1,6); Writeln(' ÛßßßßßßßÜ Û Û ÜßÜ ÛßßßßßßÜ ßßßÛßßß'); Writeln(' Û ßÜ Û Û Û Û Û Û Û '); Writeln(' Û Û Û Û Û Û Û Û Û '); Writeln(' Û Û Û Û Û Û Û Üß Û'); Writeln(' Û Û Û Û Û ÛßßßßßßßßßÛ Ûßßßßßß Û '); Writeln(' Û Üß Û Û Û Û Û Û Û'); Writeln(' ÛÜÜÜÜÜÜÜß ßÜß ßÜß Û Û Û ÜÜÜÛÜÜÜ'); GotoXY (1,17); Writeln(' ÂÄ¿ ÂÄ¿ ÚÄ¿ ÂÄ¿ ÂÄ¿ ÚÄ¿ Ú¿¿ Ú¿¿  ¿ ÂÄ¿'); Writeln(' ÃÄ٠ÿ٠³ ³ ³Ä¿ ÿ٠ÃÄ´ ³³³ ³³³ ³ ³³³ ³Ä¿'); Writeln(' Á Á Á ÀÄÙ ÁÄ´ Á Á Á Á Á Á Á Á Á ÁÀÁ ÁÄ´'); GotoXY(1,1); ReadKey; if Text='' then goto 1; ClrScr; GotoXY (1,12); Writeln('     ÚÄ¿ ÂÄ¿  '); Writeln(' ³ ³ ³ ³ ÃÄ´ ³ ³ ³ '); Writeln(' ÀÄÙ Á Á Á ÁÄÙ Á '); GotoXY(1,1); ReadKey; ClrScr; VytvorNapis(1,12,1,Text); GotoXY(1,1); ReadKey; 1: textbackground(0); textcolor(7); ClrScr; End; Procedure Napis(X,Y: byte; Znak: Kokot); Begin if Znak='A' then Begin GotoXY(X,Y+0); Write('ÚÄ¿'); GotoXY(X,Y+1); Write('ÃÄ´'); GotoXY(X,Y+2); Write('Á Á'); End; if Znak='B' Then Begin GotoXY(X,Y+0); Write('ÂÄ¿'); GotoXY(X,Y+1); Write('³Ä´ '); GotoXY(X,Y+2); Write('ÁÄÙ'); End; if Znak='C' Then Begin GotoXY(X,Y+0); Write('ÂÄ¿'); GotoXY(X,Y+1); Write('³ '); GotoXY(X,Y+2); Write('ÁÄÙ'); End; if Znak='D' Then Begin GotoXY(X,Y+0); Write('ÂÄ¿'); GotoXY(X,Y+1); Write('³ ³'); GotoXY(X,Y+2); Write('ÁÄÙ'); End; if Znak='E' Then Begin GotoXY(X,Y+0); Write('ÂÄ¿'); GotoXY(X,Y+1); Write('ÃÄ '); GotoXY(X,Y+2); Write('ÁÄÙ'); End; if Znak='F' Then Begin GotoXY(X,Y+0); Write('ÂÄ¿'); GotoXY(X,Y+1); Write('ÃÄ '); GotoXY(X,Y+2); Write('Á '); End; if Znak='G' Then Begin GotoXY(X,Y+0); Write('ÂÄ¿'); GotoXY(X,Y+1); Write('³Ä¿'); GotoXY(X,Y+2); Write('ÁÄ´'); End; if Znak='H' Then Begin GotoXY(X,Y+0); Write(' Â'); GotoXY(X,Y+1); Write('ÃÄ´'); GotoXY(X,Y+2); Write('Á Á'); End; if Znak='I' Then Begin GotoXY(X,Y+0); Write('Â'); GotoXY(X,Y+1); Write('³'); GotoXY(X,Y+2); Write('Á'); End; if Znak='J' Then Begin GotoXY(X,Y+0); Write(' Â'); GotoXY(X,Y+1); Write(' ³'); GotoXY(X,Y+2); Write('ÀÄÙ'); End; if Znak='K' Then Begin GotoXY(X,Y+0); Write(' Â'); GotoXY(X,Y+1); Write('ó '); GotoXY(X,Y+2); Write('Á Á'); End; if Znak='L' Then Begin GotoXY(X,Y+0); Write(' '); GotoXY(X,Y+1); Write('³ '); GotoXY(X,Y+2); Write('ÁÄÄ'); End; if Znak='M' Then Begin GotoXY(X,Y+0); Write('Ú¿¿'); GotoXY(X,Y+1); Write('³³³'); GotoXY(X,Y+2); Write('Á Á'); End; if Znak='N' Then Begin GotoXY(X,Y+0); Write('¿Â'); GotoXY(X,Y+1); Write('³³³'); GotoXY(X,Y+2); Write('ÁÀÁ'); End; if Znak='O' Then Begin GotoXY(X,Y+0); Write('ÚÄ¿'); GotoXY(X,Y+1); Write('³ ³'); GotoXY(X,Y+2); Write('ÀÄÙ'); End; if Znak='P' Then Begin GotoXY(X,Y+0); Write('ÂÄ¿'); GotoXY(X,Y+1); Write('ÃÄÙ'); GotoXY(X,Y+2); Write('Á '); End; if Znak='Q' Then Begin GotoXY(X,Y+0); Write('ÚÄ¿'); GotoXY(X,Y+1); Write('³ ³'); GotoXY(X,Y+2); Write('ÀÄ´'); End; if Znak='R' Then Begin GotoXY(X,Y+0); Write('ÂÄ¿'); GotoXY(X,Y+1); Write('ÿÙ'); GotoXY(X,Y+2); Write('Á Á'); End; if Znak='S' Then Begin GotoXY(X,Y+0); Write('ÂÄÄ'); GotoXY(X,Y+1); Write('ÀÄ¿'); GotoXY(X,Y+2); Write('ÄÄÁ'); End; if Znak='T' Then Begin GotoXY(X,Y+0); Write('Ú¿'); GotoXY(X,Y+1); Write(' ³ '); GotoXY(X,Y+2); Write(' Á '); End; if Znak='U' Then Begin GotoXY(X,Y+0); Write(' Â'); GotoXY(X,Y+1); Write('³ ³'); GotoXY(X,Y+2); Write('ÀÄÙ'); End; if Znak='V' Then Begin GotoXY(X,Y+0); Write(' Â'); GotoXY(X,Y+1); Write('³ ³'); GotoXY(X,Y+2); Write(' Á '); End; if Znak='W' Then Begin GotoXY(X,Y+0); Write(' Â'); GotoXY(X,Y+1); Write('³³³'); GotoXY(X,Y+2); Write(' Ä '); End; if Znak='X' Then Begin GotoXY(X,Y+0); Write(' Â'); GotoXY(X,Y+1); Write(' ³ '); GotoXY(X,Y+2); Write('Á Á'); End; if Znak='Y' Then Begin GotoXY(X,Y+0); Write(' Â'); GotoXY(X,Y+1); Write(' ³ '); GotoXY(X,Y+2); Write(' Á '); End; if Znak='Z' Then Begin GotoXY(X,Y+0); Write('ÄÄÂ'); GotoXY(X,Y+1); Write(' ³ '); GotoXY(X,Y+2); Write('ÁÄÄ'); End; End; (**) Procedure VytvorNapis(X,Y,Mezera:Byte; Text:string); Var o,i:integer; R:Kokot; Begin o:=X; for i:=1 to Length(Text) do Begin R:=copy(Text,i,1); Napis(o,Y,R); if R='I' then o:=o+1+mezera else o:=o+3+mezera; (*if R='T' then o:=o+2;*) End; End; (**) Function StringNaChar(Znak:Kokot):Char; Var i:byte; label 1; Begin for i:=1 to 255 do Begin if chr(i)=Znak then Begin StringNaChar:=chr(i); goto 1 End; End; 1: End; Procedure Vypln(Znak:String;Rychlost:longint;Zpusob:Byte); Var KrajX:1..80; KrajY:1..24; i:integer; o:longint; Mez:Byte; Delka,Akt:integer; Begin Delka:=Length(Znak); Akt:=1; KrajX:=1; KrajY:=2; Mez:=13; If Zpusob=1 then Mez:=24; While KrajXDelka Then Akt:=1; for o:=1 to Rychlost*500 do o:=o; End; For i:=KrajY to 25-KrajY do Begin GotoXY(81-KrajX,i); write(Copy(Znak,Akt,1)); Akt:=Akt+1; if Akt>Delka Then Akt:=1; If Zpusob=1 then Begin gotoXY(80-KrajX,i); write(Copy(Znak,Akt,1)); End; for o:=1 to 2*Rychlost*500 do o:=o; End; for i:=81-KrajX downto KrajX do Begin gotoXY(i,25-KrajY+1); write(Copy(Znak,Akt,1)); Akt:=Akt+1; if Akt>Delka Then Akt:=1; for o:=1 to Rychlost*500 do o:=o; End; For i:=25-KrajY DownTo KrajY do Begin GotoXY(KrajX,i); write(Copy(Znak,Akt,1)); Akt:=Akt+1; if Akt>Delka Then Akt:=1; If Zpusob=1 then Begin gotoXY(KrajX+1,i); write(Copy(Znak,Akt,1)); End; for o:=1 to 2*Rychlost*500 do o:=o; End; KrajX:=KrajX+1; KrajY:=KrajY+1; If Zpusob=1 then KrajX:=KrajX+1; End; GotoXY(1,1); End; Procedure Vypln2(Znak:String;Rychlost:longint;Zpusob:byte); Var i,ii:integer; o:longint; Delka,Akt:integer; Begin Delka:=Length(Znak); Akt:=1; gotoxy(1,1); for i:=1 to 24 do Begin for ii:=1 to 80 do Begin gotoxy(ii,i); write(Copy(Znak,Akt,1)); Akt:=Akt+1; if Akt>Delka Then Akt:=1; for o:=1 to Rychlost*500 do o:=o; End; if Zpusob=1 then Begin i:=i+1; for ii:=80 downto 1 do Begin gotoxy(ii,i); write(Copy(Znak,Akt,1)); Akt:=Akt+1; if Akt>Delka Then Akt:=1; for o:=1 to Rychlost*500 do o:=o; End; End; End; GotoXY(1,1); End; (**) Procedure Barevne(Text:String); Var Barva:integer; i:integer; Begin Randomize; for i:=1 to Length(Text) do Begin Barva:=Random(15)+1; TextColor(Barva); Write(Copy(Text,i,1)); End; End; (**) Procedure Pismo(Barva:byte); Begin TextColor(Barva); End; Procedure Pozadi(Barva:byte); Begin TextBackground(Barva); End; Procedure Barva(Pis,Poz:byte); Begin TextColor(Pis);TextBackground(Poz); End; (**) Procedure VytvorSit(X1,Y1,X2,Y2,Typ,MezeraX,MezeraY:byte;Mezery:Boolean); Var i,o,p:byte; Begin NactiSit(Typ); for i:=Y1 to Y2 do Begin for o:=X1 to X2 do Begin if i=Y1 then Begin if (o-X1) mod (MezeraX+1)=0 then locate(o,i,Sit[3]) else locate(o,i,Sit[2]); if o=X1 then locate(o,i,Sit[1]); if o=X2 then locate(o,i,Sit[4]); End; if i=Y2 then Begin if (o-X1) mod (MezeraX+1)=0 then locate(o,i,Sit[7]) else locate(o,i,Sit[6]); if o=X1 then locate(o,i,Sit[5]); if o=X2 then locate(o,i,Sit[8]); End; If (i<>Y2) and (i<>Y1) then Begin if (i-Y1) mod (MezeraY+1)=0 then Begin if (o-X1) mod (MezeraX+1)=0 then Locate(o,i,Sit[12]) else Locate(o,i,Sit[11]); if o=X1 then Locate(o,i,sit[10]); if o=X2 then Locate(o,i,sit[13]); End Else Begin If (o-X1) mod (MezeraX+1)=0 then Locate(o,i,Sit[9]) else if Mezery=TRUE then Locate(o,i,Sit[14]); End; End; End; End; End; (**) Procedure NactiSit(Typ:byte); Begin Case Typ of 1:Sit:='ÉÍË»ÈÍʼºÌÍι '; 2:Sit:='ÚÄ¿ÀÄÁÙ³ÃÄÅ´ '; 3:Sit:='ÜÜÜÜßßßßÛÛÜÛÛ '; End; End; (**) Procedure NapisNaStred(Y:byte;Text:string); Begin Locate((80-Length(Text)) div 2,Y,Text); End; (**) Procedure Grafika; var a,b:integer; Begin DetectGraph(a,b);InitGraph(a,b,''); End; (**) Procedure GBarva;Begin SetColor(X);End; Procedure GPozadi;Begin SetBkColor(X);End; Procedure GBarvy;Begin SetColor(X);SetBkColor(Y);End; (**) Procedure NactiObrazek(X,Y,Sirka,Vyska:integer;Cesta:string;T:byte); Var F:file of Char; G:char; i,o: integer; b:byte; Begin Assign(F,Cesta); Reset(F); For o:=1 to Vyska Do For i:=1 to Sirka Do Begin Read(F,G); b:=Ord(G)-65; if b<>t then PutPixel(X+i,Y+o,b); End; Close(F); End; (**) Procedure Hvezda; Var a:byte; Begin a:=Random(4);If a=1 then a:=7; if a=2 then a:=8;if a=3 then a:=15; PutPixel(Random(639)+1,Random(479)+1,a); End; (**) Begin for ii:=1 to 255 do RR:=RR + Chr(ii); End.