Za běhu programu se automaticky zachytávají různé události, jako například stisknutí klávesy, pohyb s myší, vstup a výstup kurzoru z okna atd. K zachytávání událostí slouží následující příkazy. Pro zjišťování stisku kláves, tlačítka myši, nebo jiné události je třeba použít příkaz Čti klávesu nebo tlačítko myši (s čekáním na stisk, nebo bez něj).
Konstanty kláves a tlačítek myši najdete na stránce Klávesy a tlačítka myši, konstanty pro další události na stránce Události (používají se s příkazem Přečtená událost).
|  | Čti klávesu nebo tlačítko myši (čekej na stisk) (For modes 2D, 3D, Console) |  Zobrazit příkladySkrýt příklady | Program je pozastaven do té doby, dokud nestisknete, nepodržíte nebo nepustíte nějakou klávesu, nebo tlačítko myši. |
Příkaz se nejčastěji využívá v cyklech, pokud chcete kontrolovat stisk kláves, tlačítkek myši nebo jiné události. Bez něho by nebylo možné zjistit, jaké klávesy byly stisknuty.
Pokud si již Baltík ve frontě kláves pamatuje, že jste před příkazem stiskli, podrželi nebo pustili nějakou klávesu a nevymazali jste poté frontu kláves, tak tento příkaz běh programu nepozastaví a bude pokračovat v provádění dalšího kódu.
Nekonečnokrát čeká na stisk nějaké klávesy nebo tlačítka myši. Pokud je stisknuta klávesa K, ukončí program. | | |
Vypíše na obrazovku zeleně pokyny pro ovládání a vytvoří nový 2D text. Poté čeká na stisk nějaké klávesy. Pokud je stisknut "Esc", program skončí, jinak je scan kód stisknuté klávesy vložen do textu 2D textu a program opět čeká na další stisknutí nějaké klávesy. | | |
Do závorek za příkaz můžete zadat dobu v sekundách, po kterou bude Baltík čekat na událost (stisk klávesy nebo tlačítka myši):
Vypíše na obrazovku text a čeká 8 sekund na stisk klávesy nebo tlačítka myši. Poté, co uběhne časový limit nebo bude něco stisknuto, porovná Baltík kód stisknuté klávesy s kódem žádné klávesy a pokud se shodují, nebyla stisknuta žádná klávesa, ale vypršel časový limit. V opačném případě musela být během 8 sekund stisknuta nějaká klávesa. | | |
Lze také definovat, na jaké události má Baltík čekat. Stačí zadat konstantu požadované události do závorek za příkaz. Jestliže chcete čekat na více událostí najednou, spojte je pomocí plus. Čekání potom může skončit jenom definovanými událostmi, pokud tedy například zadáte čekání na událost stisknutí tlačítka myši, při stisknutí klávesy se nic nestane.
Čekání na určité události lze také časově omezit, do závorek před události vložte čas v sekundách a čárku.
Baltík se stane viditelným a vypne se standartní ovládání myši. Poté se nekonečnokrát opakuje, že Baltík čeká na událost vstupu myši do okna nebo opuštění okna myší. Když myš vstoupí do okna, tak Baltík popojde dopředu a otočí se doleva. Když myš opustí okno, tak se Baltík otočí doleva a popojde dopředu. | | |
Tento příkaz vrací klávesu, která byla stisknuta během události a kterou můžete uložit do proměnné:
Umožňuje ovládání kurzorovými klávesami a myší, při stisku End se program ukončí. Při stisku jakékoli jiné klávesy Baltík vyčaruje podlahu. | | |
|
|
|  | Smazat vstupní frontu (For modes 2D, 3D, Console) |  Zobrazit příkladSkrýt příklad | Vyčistí frontu událostí klávesnice a myši tak, že tam nezbydou žádné informace o stisklých klávesách nebo tlačítkách myši. |
Některé klávesy zpracovává počítač rychleji, některé pomaleji. Je totiž rozdíl, má-li počítač v reakci na stisk klávesy pouze vypsat znak na obrazovku nebo provést nějakou složitější akci. Při běhu programu proto často nastávají situace, že uživatel stiskne další klávesu dříve, než počítač zpracuje klávesu předchozí.
Aby uživatel nemusel myslet na to, kterou klávesu počítač zpracovává rychle a kterou pomalu, staví se v počítači jednotlivé stisknuté klávesy do fronty, v níž čekají, až si jich program všimne.
Často se stane, že potřebujete zapomenout na všechny předchozí stisknuté klávesy a zaručit, že program bude reagovat až na klávesu, která byla stisknuta po nějakém definovaném okamžiku. Tento úkol řeší prvek Vyprázdni frontu kláves, který frontu kláves vyčistí.
Neustále dokola: Čeká na stisk klávesy (takové, kterou leze převést na znak). Když je klávesa stisknuta, popojde a vyprázdní frontu kláves. Pokud by fronta kláves nebyla vyprázdněna a stiskli bychom třeba pět kláves, Baltík by popošel o deset metrů (5 krát popojde o 2 metry) a pak by se teprve zastavil. Takto zajistíme, že během popocházení nebude Baltík brát ohled na žádné stisknuté klávesy a proto popojde pouze jednou (2 metry). | | |
|
|
|  | Zapnout / vypnout vstup z klávesnice a myši (For modes 2D, 3D) |  Zobrazit příkladSkrýt příklad | Vypne nebo zapne vstup z klávesnice a tlačítek myši. Znamená to, že všechny klávesy nebo tlačítka myši, co uživatel stiskne v době vypnutého vstupu, budou ignorovány. | Čte klávesu s maximální dobou čekání 2 vteřiny. Pokud byla stiskuta klávesa "S", zakáže vstup z klávesnice a tlačítek myši, jinak ho povolí. Když stisknete nějakou klávesu, fialový Baltík popojde. Nakonec vyprázdní frontu kláves. Výsledek bude vypadat tak, že Baltík popojde vždy, když stiskneme nějakou klávesu. Pokud však stiskneme klávesu "S", Baltík se zastaví na 2 vteřiny než zase bude povolen vstup z klávesnice a tlačítek myši. | | |
|
|
|  | Je klávesa stisknuta (For modes 2D, 3D, Console) |  Zobrazit příkladSkrýt příklad | Vrátí pravdu, pokud je zadaná klávesa stisknuta. | Vytvoří nový text. Poté do nekonečna kontroluje, jestli je stisknutý mezerník. Když je stisknutý, tak změní text na "Key Space is pressed." Když toto neplatí, tak změní text na "Key Space is not pressed." | | |
|
|
|  | Přečtená událost (For modes 2D, 3D) |  Zobrazit příkladSkrýt příklad | Baltík si pamatuje poslední událost, která byla provedená. Tento příkaz jí vrátí. | Vytvoří 2D text. Do nekonečna čeká na provedení nějaké z těchto událostí: vstup myši na okno (E), opuštění okna myší (L), pohyb myší (M), otočení kolečkem myši (W), stisk klávesy (D), puštění klávesy (U) a přečtení znaku (C). Po provedení nějaké z těchto událostí se vypíše její zkratka pomocí vytvořeného 2D textu na obrazovku. | | |
|
|
|  | Kód přečtené klávesy (For modes 2D, 3D, Console) |  Zobrazit příkladySkrýt příklady | Tento příkaz vrátí scan kód klávesy, která byla naposledy zpracovávána (každá klávesa má originální kód). | Vytvoří nový 2D text. Poté do nekonečna čeká na stisk jakékoli klávesy. Pokud je stisknuta nějaká klávesa, vloží se její kód do textu 2D textu. | | |
Baltík se stane viditelným a vypne se standartní ovládání myši. Poté se v nekonečném cyklu čeká na stisk klávesy nebo tlačítka myši. Když bylo stisknuto levé tlačítko myši, tak Baltík popojde dopředu, když bylo stisknuto pravé tlačítko myši, tak Baltík popojde dozadu, když bylo stisknuto prostřední tlačítko myši, tak se Baltík vznese, když bylo stisknuto první x tlačítko na pětitlačítkové myši, tak se Baltík otočí doleva, když bylo stisknuto druhé x tlačítko na pětitlačítkové myši, tak se Baltík otočí doprava, když je stisknuto nějaké jiné tlačítko myši, tak Baltík popoletí dolů, když je stisknuta klávesa End, tak se nekonečný cyklus přeruší, a když není stisknuto žádné tlačítko myši, tak Baltík pípne. | | |
|
|
|  | Znak přečtené klávesy (For modes 2D, 3D, Console) |  Zobrazit příkladSkrýt příklad | Tento příkaz vrací poslední znak přečtený z fronty kláves (tj. klávesy, která byla naposledy zpracovávána). | Vytvoří nový 2D text. Poté do nekonečna čeká na stisk nějaké klávesy, kterou lze převést na libovolný znak (čísla, písmena, ...). Pokud je nějaká takováto klávesa stisknuta, je její znak vložen do textu 2D textu. | | |
|
|
Shledali jste tuto informaci pro Vás užitečnou?
Máte nějaký dotaz nebo připomínku k tomuto tématu? Napište nám.
©1978-2010 SGP SystemsNadřazená stránka | Předchozí stránka | Další stránka |