Jednotka Crt

[Pro jistotu: není potřeba umět ani ke zkoušce ani k průběžné písemce. Spíš to pro někoho může být užitečná informace.]

Jednotka Crt je skupina konstant, proměnných, procedur a funkcí (příkazů) rozšiřujících možnosti práce s klávesnicí, obrazovkou v textovém módu a zvukem. Pokud chceme v programu některé z těchto procedur a funkcí použít, musíme na začátku programu (před deklaracemi proměnných, definicemi konstant atd.) uvést

uses Crt;

Všechny procedury a funkce s jejich podrobným popisem i příklady lze najít v helpu, například po napsání Crt a zmáčknutí Ctrl+F1. Některé z proměnných, procedur a funkcí jednotky Crt:

  • TextBackground(Barva: Byte)  změna barvy pozadí, hodnoty 0-7, případně předdefinované konstanty (viz dále)
  • TextColor(Barva: Byte)  změna barvy textu, hodnoty 0-15, případně předdefinované konstanty (viz dále)
  • ClrScr  smaže obrazovku (celá bude mít barvu pozadí)
  • TextAttr: Byte  proměnná, která určuje barvu vypisovaného textu, jeho pozadí a případné blikání. Nejvyšší bit je blikání, další tři bity jsou barva pozadí a spodní čtyři bity jsou barva textu. Barvy lze vidět například v menu Options->Environment->Colors

    Změna barvy popředí či pozadí (ať už ji provedeme jakýmkoli způsobem) se uplatní na dalšími příkazy vypisovaný text, nikoli tedy například na text již vypsaný. Pochopitelně platí jen do další případné změny.

  • WhereX: Byte  funkce vracející souřadnici aktuální polohy kurzoru na vodorovné ose
  • WhereY: Byte  funkce vracející souřadnici aktuální polohy kurzoru na svislé ose
  • GotoXY(X, Y: Byte)  přesune kurzor na danou pozici na obrazovce, levý horní roh obrazovky má souřadnice (1, 1), pravý dolní zpravidla (80, 25)

  • Delay(milisec: Word)  zastaví vykonávání programu na zadaný počet milisekund

  • KeyPressed: Boolean  řekne, jestli je možné načíst nějaký vstup z klávesnice, jestli byla zmáčknuta nějaká klávesa, ale nic nenačte.
  • ReadKey: Char  načte znak z klávesnice, pokud je KeyPressed = true, jinak čeká na stisk klávesy, znak nevypisuje na obrazovku a vrátí odpovídající znak, v případě stisku speciálních kláves (šipky, funkční klávesy, kombinace Alt+klávesa a podobně) je vrácen znak #0 a další ReadKey vrátí tzv. scancode klávesy či kombinace kláves. Asi je vhodné upozornit, že v bufferu klávesnice může být více nezpracovaných stisků kláves, po ReadKey tedy může být KeyPressed stále true. Následujícím prográmkem lze zjistit, která klávesa má jaký scancode:
    uses Crt;
    var c, d : char;
    begin
        writeln('Zmackni q, az te to prestane bavit.');
        repeat
    	c := readkey;
    	if c = #0 then begin
    	    d := readkey;
    	    writeln (ord(c), ',', ord(d));
    	    end
    	else
    	    writeln (ord(c));
        until c = 'q'
    end.
    
    Konstanty odpovídající jednotlivým barvám:
    0 = Black       8  = DarkGray
    1 = Blue        9  = LightBlue
    2 = Green       10 = LightGreen
    3 = Cyan        11 = LightCyan
    4 = Red         12 = LightRed
    5 = Magenta     13 = LightMagenta
    6 = Brown       14 = Yellow
    7 = LightGray   15 = White