Pascal – Jednotka CRT

Jednotka CRT, patří k prvkům, zpestřující výsledný program. Jednotky obsahují sadu příkazů, které vykonávají různé činnosti v programu. Může to být časová odezva, vyčištění plochy konzole či také práce s kurzorem. Nejprve si tedy ukážeme funkce poskytující jednotka CRT a následně si na to vytvoříme jednoduchý program, využívající této jednotky.

CRT se deklaruje pod názvem programu (uses crt;), zde v odkazu máte nápovědu kam tento řádek vložit.


ClrScr

  • Slouží k vymazání obsahu v konzoli.
  • Zakončit středníkem!

Delay(ms)

  • Slouží k deklaraci odezvy.
  • V závorkách se zadává hodnota v milisekundách, po kterou bude tento příkaz vykonáván.
  • Zakončit středníkem!
  • Využitelné, pro vyčkání na přečtení úseku textu nebo také časování.

DelLine

  • Vymaže řádek, na kterém se nachází kurzor. 
  • Zakončit středníkem!

GotoXY(X,Y)

  • Skok na zadané souřadnice (rozsah 0-255).
  • Souřadnice X – sloupec.
  • Souřadnice Y – řádek.
  • Zakončit středníkem!
  • Využití, pro skoky v programu. Možné přepisování dat a ukládání jich do souboru. Lze využít v kombinaci zápisu do souboru.

InsLine

  • Vloží řádek na pozici kurzoru v konzoli.
  • Zakončit středníkem!

ReadKey

  • Čeká na stisk klávesy z klávesnice.
  • Zakončit středníkem!
  • Možno využít pro zadání hesla (v konzoli není vidět zadaný znak, jen pokud ho necháme vypsat).

TextBackground(barva)

  • Deklarace pozadí barvy za textem.
  • Barvy jsou deklarovány číslem v rozsahu 0-255.
  • Zakončit středníkem!
  • Využití u změny prostředí uživatelem.

zakladnibarvy

TextColor(barva)

  • Deklarace barvy textu v konzoli.
  • Barvy deklarovány číselně v rozsahu 0-255.
  • Zakončit středníkem!
  • Využití u změny prostředí uživatelem.

WhereX

  • Funkce vrací hodnotu souřadnice kurzoru (sloupec).
  • Zakončit středníkem!

WhereY

  • Funkce vrací hodnotu souřadnice kurzoru (řádek).
  • Zakončit středníkem!

Příklad použití funkcí jednotky CRT:

Tento program demonstruje některé funkce jednotky CRT. Příklad je možno i si stáhnout přímo do vašeho počítače. ODKAZ

program jednotka;
uses crt;
var a,menu,volba:byte;
var znak:char;

procedure prvni();
begin
 writeln('Vitejte v prvni procedure testujici funkci ClrScr');
 write('Tato funkce se zapisuje:  ');
 writeln('ClrScr;');
 writeln();
 writeln('Stiskem klavesy ENTER vymazete aktualni obsah...');
 readln();
 ClrScr;
 writeln('Tento text byl smazan funkci ClrScr');
 writeln('Tato procedura konci a vrati vas zpet do menu.');
 writeln('Stiskem klavesy Enter pokracujte...');
 readln();
 ClrScr;
end;

procedure druha();
begin
 writeln('Vitejte v automaticke procedure s DELAY');
 delay(1000);
 writeln('Nemusite nic delat, ono to pracuje samo, jen ctete');
 writeln();
 delay(500);
 writeln('Deklarace odezvy: Delay(pocet ms);');
 delay(1000);
 writeln('Ten na rychlovku vypisu par cisel... s vyuzitim cyklu');
 a := 0;
 while (a < 10) do
 begin
   write(a,' ');
   a := a + 1;
   delay(400);
 end;

 writeln('To je vse z teto procedury...');
 writeln('Navratim vas do menu a smazu tuto patlanici');
 delay(3000);
 ClrScr;
end;

procedure treti();
begin
  write('Treti procedura maze radek');
  writeln('Tento radek je druhy, programove prvni');
  writeln('Tohle je teprve druhy,protoze zaciname od nuly');
  write('Tento radek necham smazat programem');
  delay(2000);
  DelLine();
  writeln();
  writeln('Radek byl smazan a vlozil jsem zde dalsi...');
  writeln('Ted ukoncim tuto proceduru a jdeme zpet do Menu');
  delay(5000);
  ClrScr();
end;

procedure ctvrty();
begin
  writeln('Ted jsme v ctvrte procedure');                                                          // Prvni radek
  writeln('Nachazime se na druhem radku, ten predchozi byl nulty radek');                          // Druhy radek
  writeln('Ted jsme na tretim radku a provedu skok na ten predchozi a pripisu za to text..');      // Treti radek
  writeln('Jeste jen mala 2 vterinova odezva. ');                                                  // Ctvrty radek
  delay(2000);
  GotoXY(28,1);                                                                                    // Skok na prvni radek za text
  write (':skok sem');
  delay(2000);                                                                                     // Skok na paty radek zpet za psany text
  GotoXY(1,5);
  writeln('Skocil jsem zpet s kurzorem a ukoncim stiskem klavesy ENTER proceduru..');
  readln();
  ClrScr();
end;

procedure paty();
begin
  writeln('Vitej v pate procedure, vysvetlime si cteni z klavesy');
  writeln('Zadas znak, program ho precte a vypise na obrazovku');
  write('Zadej znak: ');
  znak := readkey();
  writeln();
  delay(1000);
  writeln('Zadal jsi znak: ',znak);
  writeln('Pokracuj libovolnou klavesou...');
  readkey();
  ClrScr;
end;

procedure sesty();
begin
  writeln('Sesta procedura nam zmeni barvy.');
  writeln('Muzeme pouzit barvy dle cisel a nebo normalne zapisem');
  writeln('Zmenim barvu textu na cervenou a pozadi na bilou');
  TextColor(red);
  TextBackground(white);
  writeln('Tento text by mel mit zmenenu barvu a pozadi');
  delay(2000);
  TextColor(7);
  TextBackground(black);
  writeln('Ted uz je text v puvodni barve a pokracujeme zpet do menu...');
  delay(2000);
  ClrScr;
end;

begin
 menu := 1;
 while (menu = 1) do
 begin
   writeln('    Program pro praci s jednotkou CRT     ');
   writeln('------------------------------------------');
   writeln('  [1] ClrScr  - Mazani obrazovky');
   writeln('  [2] Delay   - Casova odezva');
   writeln('  [3] DelLine - Mazani radku');
   writeln('  [4] GotoXY  - Skok na ... ');
   writeln('  [5] Readkey - Cteni klavesy');
   writeln('  [6] Colors  - Barva textu a pozadi');
   writeln('');
   writeln('  [7] Ukoncit program');
   writeln('------------------------------------------');
   write('Vase volba: ');
   readln(volba);

   if (volba = 1) then
    begin
      ClrScr;
      prvni;
    end
   else if (volba = 2) then
    begin
      ClrScr;
      druha;
    end
   else if (volba = 3) then
    begin
      ClrScr;
      treti;
    end
   else if (volba = 4) then
    begin
      ClrScr;
      ctvrty;
    end
   else if (volba = 5) then
    begin
      ClrScr;
      paty;
    end
   else if (volba = 6) then
    begin
      ClrScr;
      sesty();
    end
   else if (volba = 7) then
    begin
     menu := 0;
    end
   else
    begin
      writeln('Spatne zadana volba! Opakujte akci...');
      Delay(2000);
      ClrScr;
    end;
 end;
end.
Příspěvek byl publikován v rubrice Pascal se štítky , , , , , , , . Můžete si uložit jeho odkaz mezi své oblíbené záložky.

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

Můžete používat následující HTML značky a atributy: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>