Files
vojta@alfred 4e5c55e846 Prvni commit.
2026-02-01 00:00:07 +01:00

247 lines
8.9 KiB
JavaScript

/*
* [Česky]
* Projekt: Robot Karel
* Copyright: Viz KOPIROVANI v kořenovém adresáři projektu
*
* [English]
* Project: Karel, the Robot
* Copyright: See COPYING in the top level directory
*/
// JavaScript - slovník
// ===========================================================================
// =~ Globální proměnné ~=====================================================
// Příkazy
//
// Každý příkaz má následující vlastnosti:
//
// jmeno jméno příkazu
// systemovy true, pokud se jedná o systémový příkaz
// zobrazit true, pokud má být příkaz zobrazen
// ignoruj true, pokud příkaz neprovádí žádnou činnost
// hlavicka true, pokud se příkaz může vyskytovat v hlavičce (před
// názvem příkazu)
// telo pole jednotlivých řádek. Jedna řádka příkazu je pole dvou
// hodnot - příkazu a parametrů
// syntaxe true, pokud příkaz vyžaduje kontrolu syntaxe (všechny
// příkazy, které neprovádí žádnou činnost)
// tooltip text nápovědy (není povinné)
// spust vykonání příkazu, provádí i kontrolu syntaxe (když je
// atribut syntaxe nastaven na true)
// formatovac formátování příkazu. Pokud chybí, použije se obecný
// formátovač
// rozpoznavac rozpoznání příkazu. Pokud chybí, použije se obecný
// rozpoznávač
// ukladac ukládání příkazu. Pokud chybí, použije se obecní funkce
// ukládání
// kompatibilita verze, které příkaz znají
// verze_ulozeni verze, ve kterých se příkaz ukládá. Pokud se v dané verzi
// neukládá, je zobrazeno varování. Pokud se má uložit, ale
// příkaz není s verzí kompatibilní, je zobrazena chyba. Pokud
// se má uložit a je s verzí kompatibilní, pak se ukládá
// prikaz true, pokud se jedná o příkaz. Pouze pro systémové příkazy
// a to jen pro zobrazení v chybové hlášce
//
// Navíc existuje pro každý příkaz prikazy.prikaz["PŘÍKAZ"]
//
prikazy.seznam = new Array(
{ jmeno: "prázdná řádka", systemovy: true, zobrazit: false, ignoruj: true,
hlavicka: true,
rozpoznavac: prikazy.rozpoznavac.prazdna_radka,
formatovac: prikazy.formatovac.prazdna_radka,
kompatibilita: prikazy.min_VERZE_20,
verze_ulozeni: prikazy.min_VERZE_20
},
{ jmeno: "komentář", systemovy: true, zobrazit: false, ignoruj: true,
hlavicka: true,
rozpoznavac: prikazy.rozpoznavac.komentar,
formatovac: prikazy.formatovac.komentar,
ukladac: data.ukladani.uloz_komentar,
nacitac: data.nacitani.nacti_komentar,
kompatibilita: prikazy.min_VERZE_20,
verze_ulozeni: prikazy.min_VERZE_20
},
{ jmeno: "název příkazu", systemovy: true, zobrazit: false, ignoruj: true,
hlavicka: true,
rozpoznavac: prikazy.rozpoznavac.nazev,
formatovac: prikazy.formatovac.nazev,
ukladac: data.ukladani.uloz_nazev,
nacitac: data.nacitani.nacti_nazev,
kompatibilita: prikazy.min_VERZE_10,
verze_ulozeni: prikazy.min_VERZE_20
},
{ jmeno: "prázdná řádka", systemovy: true, zobrazit: false, ignoruj: true,
rozpoznavac: prikazy.rozpoznavac.prazdna_radka,
formatovac: prikazy.formatovac.prazdna_radka,
kompatibilita: prikazy.min_VERZE_20,
verze_ulozeni: prikazy.min_VERZE_20
},
{ jmeno: "komentář", systemovy: true, zobrazit: false, ignoruj: true,
rozpoznavac: prikazy.rozpoznavac.komentar,
formatovac: prikazy.formatovac.komentar,
ukladac: data.ukladani.uloz_komentar,
nacitac: data.nacitani.nacti_komentar,
kompatibilita: prikazy.min_VERZE_20,
verze_ulozeni: prikazy.min_VERZE_20
},
{ jmeno: "KONEC, JINAK", systemovy: true, zobrazit: false,
spust: prikazy.jadro.KONEC_JINAK,
syntaxe: true,
formatovac: prikazy.formatovac.konec,
kompatibilita: prikazy.min_VERZE_10,
verze_ulozeni: prikazy.min_VERZE_10,
prikaz: true
},
{ jmeno: "KONEC", systemovy: true, zobrazit: false,
spust: prikazy.jadro.KONEC,
syntaxe: true,
formatovac: prikazy.formatovac.konec,
kompatibilita: prikazy.min_VERZE_10,
verze_ulozeni: prikazy.min_VERZE_10,
prikaz: true
},
{ jmeno: "KDYŽ", systemovy: true, zobrazit: false,
spust: prikazy.jadro.KDYZ,
syntaxe: true,
rozpoznavac: prikazy.rozpoznavac.podminka,
formatovac: prikazy.formatovac.podminka,
nacitac: data.nacitani.nacti_podminku,
kompatibilita: prikazy.min_VERZE_10,
verze_ulozeni: prikazy.min_VERZE_10,
prikaz: true
},
{ jmeno: "DOKUD", systemovy: true, zobrazit: false,
spust: prikazy.jadro.DOKUD,
syntaxe: true,
rozpoznavac: prikazy.rozpoznavac.podminka,
formatovac: prikazy.formatovac.podminka,
nacitac: data.nacitani.nacti_podminku,
kompatibilita: prikazy.min_VERZE_10,
verze_ulozeni: prikazy.min_VERZE_10,
prikaz: true
},
{ jmeno: "OPAKUJ", systemovy: true, zobrazit: false,
spust: prikazy.jadro.OPAKUJ,
syntaxe: true,
rozpoznavac: prikazy.rozpoznavac.cyklus,
formatovac: prikazy.formatovac.cyklus,
ukladac: data.ukladani.uloz_OPAKUJ,
nacitac: data.nacitani.nacti_OPAKUJ,
kompatibilita: prikazy.min_VERZE_10,
verze_ulozeni: prikazy.min_VERZE_10,
prikaz: true
},
{ jmeno: "AŽ", systemovy: true, zobrazit: false,
spust: prikazy.jadro.AZ,
syntaxe: true,
rozpoznavac: prikazy.rozpoznavac.podminka,
formatovac: prikazy.formatovac.podminka,
nacitac: data.nacitani.nacti_podminku,
kompatibilita: prikazy.min_VERZE_11,
verze_ulozeni: prikazy.min_VERZE_10,
prikaz: true
},
{ jmeno: "RYCHLE", systemovy: true, zobrazit: false,
spust: prikazy.jadro.RYCHLE,
syntaxe: true,
formatovac: prikazy.formatovac.odsazeni,
kompatibilita: prikazy.min_VERZE_12,
verze_ulozeni: prikazy.min_VERZE_10,
prikaz: true
},
{ jmeno: "POMALU", systemovy: true, zobrazit: false,
spust: prikazy.jadro.POMALU,
syntaxe: true,
formatovac: prikazy.formatovac.predsazeni,
kompatibilita: prikazy.min_VERZE_12,
verze_ulozeni: prikazy.min_VERZE_10,
prikaz: true
},
{ jmeno: "STOP", systemovy: true, zobrazit: false,
spust: prikazy.jadro.STOP,
kompatibilita: prikazy.min_VERZE_10,
verze_ulozeni: prikazy.min_VERZE_10,
prikaz: true
},
{ jmeno: "KROK", systemovy: true, zobrazit: true,
spust: prikazy.jadro.KROK,
kompatibilita: prikazy.min_VERZE_10,
verze_ulozeni: prikazy.min_VERZE_10,
prikaz: true,
tooltip: "Posune Karla o jedno políčko dopředu"
},
{ jmeno: "VLEVO-VBOK", systemovy: true, zobrazit: true,
spust: prikazy.jadro.VLEVO_VBOK,
kompatibilita: prikazy.min_VERZE_10,
verze_ulozeni: prikazy.min_VERZE_10,
prikaz: true,
tooltip: "Otočí Karla jednou vlevo"
},
{ jmeno: "POLOŽ", systemovy: true, zobrazit: true,
spust: prikazy.jadro.POLOZ,
kompatibilita: prikazy.min_VERZE_10,
verze_ulozeni: prikazy.min_VERZE_10,
prikaz: true,
tooltip: "Karel položí jednu značku, pokud je na políčku místo"
},
{ jmeno: "ZVEDNI", systemovy: true, zobrazit: true,
spust: prikazy.jadro.ZVEDNI,
kompatibilita: prikazy.min_VERZE_10,
verze_ulozeni: prikazy.min_VERZE_10,
prikaz: true,
tooltip: "Karel zvedne jednu značku, pokud na políčku nějaká je"
}
);
// Příkazy přístupné podle jména
prikazy.prikaz = new Object();
// Textové řetězce spojené s příkazy
prikazy.JE = "JE";
prikazy.NENI = "NENÍ";
prikazy.KRAT = "KRÁT";
prikazy.KRAT_text = escape(prikazy.KRAT);
prikazy._KRAT = "-" + prikazy.KRAT;
prikazy.podminky = [
{ jmeno: "ZEĎ", test: mesto.JE_ZED },
{ jmeno: "ZNAČKA", test: mesto.JE_ZNACKA },
{ jmeno: "DOMOV", test: mesto.JE_DOMOV },
{ jmeno: "VÝCHOD", test: mesto.JE_VYCHOD },
{ jmeno: "SEVER", test: mesto.JE_SEVER },
{ jmeno: "ZÁPAD", test: mesto.JE_ZAPAD },
{ jmeno: "JIH", test: mesto.JE_JIH }
];
// ===========================================================================
// =~ Základní nastavení ~====================================================
for ( var i = 0; i < prikazy.seznam.length; i++ ) {
var prikaz = prikazy.seznam[i];
if (! (prikaz.jmeno in prikazy.prikaz)) {
prikazy.prikaz[prikaz.jmeno] = prikaz;
}
}
// ===========================================================================
// =~ Příkazové konstanty ~===================================================
prikazy.HLAVICKA_KOMENTAR = prikazy.prikaz["komentář"];
prikazy.HLAVICKA_PRAZDNA_RADKA = prikazy.prikaz["prázdná řádka"];
prikazy.NAZEV = prikazy.prikaz["název příkazu"];
prikazy.KONEC_JINAK = prikazy.prikaz["KONEC, JINAK"];
prikazy.KONEC = prikazy.prikaz["KONEC"];
prikazy.KDYZ = prikazy.prikaz["KDYŽ"];
prikazy.DOKUD = prikazy.prikaz["DOKUD"];
prikazy.OPAKUJ = prikazy.prikaz["OPAKUJ"];
prikazy.AZ = prikazy.prikaz["AŽ"];
prikazy.RYCHLE = prikazy.prikaz["RYCHLE"];
prikazy.POMALU = prikazy.prikaz["POMALU"];
prikazy.STOP = prikazy.prikaz["STOP"];
prikazy.KROK = prikazy.prikaz["KROK"];
prikazy.VLEVO_VBOK = prikazy.prikaz["VLEVO_VBOK"];
prikazy.POLOZ = prikazy.prikaz["POLOŽ"];
prikazy.ZVEDNI = prikazy.prikaz["ZVEDNI"];