Prvni commit.
@@ -0,0 +1,4 @@
|
||||
SetHandler None
|
||||
AddDefaultCharset utf-8
|
||||
AddCharset utf-8 .js
|
||||
AddCharset utf-8 .css
|
||||
@@ -0,0 +1 @@
|
||||
Oldřich Jedlička <oldium.pro@seznam.cz>
|
||||
@@ -0,0 +1,25 @@
|
||||
Copyright (c) 2006-2013, Oldrich Jedlicka
|
||||
All Rights Reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright notice,
|
||||
this list of conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation
|
||||
and/or other materials provided with the distribution.
|
||||
* Neither the name of the original author nor the names of the contributors
|
||||
(see AUTHORS) may be used to endorse or promote products derived from this
|
||||
software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
||||
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
@@ -0,0 +1,28 @@
|
||||
Copyright (c) 2006-2013, Oldřich Jedlička
|
||||
Všechna práva vyhrazena.
|
||||
|
||||
Šíření a použití ve zdrojové a binární formě s nebo beze změn je povoleno,
|
||||
pokud jsou splněny následující podmínky:
|
||||
|
||||
* Při šířená ve zdrojové podobě musí být zachována výše uvedená informace
|
||||
o autorských právech, tento seznam podmínek a níže uvedené prohlášení.
|
||||
* Při šíření v binární podobě musí být výše uvedená zmínka o autorských
|
||||
právech, tento seznam podmínek a níže uvedené prohlášení uvedené
|
||||
v dokumentaci a/nebo v dalších materiálech, které jsou součástí šířeného
|
||||
produktu.
|
||||
* Ani jméno autora, ani jména přispěvatelů (viz AUTHORS) nesmí být použita
|
||||
pro podporu nebo propagaci produktu bez předchozího výslovného písemného
|
||||
souhlasu.
|
||||
|
||||
TOTO PROGRAMOVÉ VYBAVENÍ JE POSKYTNUTO VLASTNÍKEM AUTORSKÝCH PRÁV
|
||||
A PŘISPĚVOVATELI "TAK, JAK JE", BEZ JAKÝCHKOLIV ZÁRUK, AŤ VÝSLOVNÝCH NEBO
|
||||
SAMOZŘEJMÝCH, VČETNĚ, ALE NIKOLIV POUZE, PŘEDPOKLÁDANÝCH ZÁRUK PRODEJNOSTI A
|
||||
VHODNOSTI PRO DANÝ ÚČEL. V ŽÁDNÉM PŘÍPADĚ NEJSOU ANI VLASTNÍK AUTORSKÝCH PRÁV,
|
||||
ANI PŘISPĚVOVATELÉ ODPOVĚDNI ZA ŠKODY PŘÍMÉ, NEPŘÍMÉ, SPECIFICKÉ, VZNIKLÉ
|
||||
OMYLEM, NÁHODOU, ZA ZVLÁŠTNÍCH PODMÍNEK, ANI ZA NÁSLEDNĚ VZNIKLÉ ŠKODY (VČETNĚ,
|
||||
ALE NIKOLIV POUZE, ZPŮSOBENÍ NUTNOSTI NÁHRADY ČI VÝMĚNY ZBOŽÍ NEBO SLUŽEB;
|
||||
ZTRÁTY MOŽNOSTI POUŽÍVÁNÍ, ZTRÁTY DAT NEBO ZISKŮ; NEBO PŘERUŠENÍ PODNIKÁNÍ) PŘI
|
||||
JAKÉKOLI MOŽNOSTI ZODPOVĚDNOSTI, AŤ UŽ SMLUVNÍ, ABSOLUTNÍ ODPOVĚDNOSTI (BEZ
|
||||
OHLEDU NA ÚMYSL ČI ZAVINĚNÍ) NEBO TRESTNÍ ODPOVĚDNOSTI (VČETNĚ NEDBALOSTI NEBO
|
||||
NĚČEHO JINÉHO) VZNIKLÉ JAKKOLI PŘI POUŽÍVÁNÍ TOHOTO PROGRAMOVÉHO VYBAVENÍ, A TO
|
||||
DOKONCE ANI V PŘÍPADĚ, ŽE JE MOŽNOST TAKOVÉTO ŠKODY UVEDENA.
|
||||
@@ -0,0 +1,50 @@
|
||||
2013-01-10 Verze 2.0.5
|
||||
|
||||
* Oprava problému s ukládáním v iPadu, nyní to už není textové pole
|
||||
(<textarea>), ale předformátovaný text (<pre>).
|
||||
|
||||
2012-12-09 Verze 2.0.4.1
|
||||
|
||||
* Opraven text nápovědy.
|
||||
|
||||
2010-10-19 Verze 2.0.4
|
||||
|
||||
* Komprese skriptů - rychlejší načítání.
|
||||
* Lepší barvy nového příkazu a cyklů v příkladech a nápovědě.
|
||||
|
||||
2007-05-20 Verze 2.0.3
|
||||
|
||||
* Oprava pro Internet Explorer 7.
|
||||
|
||||
2007-03-13 Verze 2.0.2
|
||||
|
||||
* Oprava pár drobností.
|
||||
|
||||
2007-03-12 Verze 2.0.1
|
||||
|
||||
* Podpora prohlížečů Internet Explorer 7, Internet Explorer 6,
|
||||
Opera 9.10, Konqueror 3.5.6, Firefox 2.0.0.1. Starší prohlížeče nejsou
|
||||
testovány.
|
||||
|
||||
2006-07-31 Verze 2.0
|
||||
|
||||
* Úplně nové a lepší uživatelské rozhraní.
|
||||
* Podpora prohlížečů Firefox 1.0.3, Firefox 1.5, Internet Exporer 6,
|
||||
Opera 9.00, Konqueror 3.5.2. Verze Opery 8.52 funguje také, ale kvůli
|
||||
chybě Opery může ve slovníku vzniknout při použití posuvníku nepořádek.
|
||||
* Automatické doplňování konce uživetelského příkazu, pokud chybí příkaz
|
||||
KONEC nebo KONEC, JINAK.
|
||||
* Ukládání (všech) komentářů a prázdných řádek s kontrolou, jestli je pouze
|
||||
jedna volná řádka mezi příkazy (kvůli programátorskému stylu).
|
||||
* Větší inteligence při načítání příkazů.
|
||||
* První komentář uvedený před názvem samotného příkazu se zobrazuje v
|
||||
nástrojovém tipu, stejně jako popis u systémových příkazů.
|
||||
* Vylepšený export, který rozlišuje komentáře a prázdné řádky.
|
||||
* Automatické načtení obrázků do vyrovnávací paměti.
|
||||
* Pokud prohlížeč pracuje správně s vyrovnávací pamětí, je možné po spuštění
|
||||
programu odpojit připojení na internet.
|
||||
* Automatické ukládání v nejstarším formátu, který podporuje všechny
|
||||
příkazy, takže pokud nepoužijete nějakou novinku, např. komentáře a
|
||||
prázdné řádky, poběži programy ve staších verzích.
|
||||
* Podpora exportu do starší verze 1.2, komentáře a prázdné řádky nebudou
|
||||
do této verze uloženy.
|
||||
@@ -0,0 +1,21 @@
|
||||
Copak se plánuje:
|
||||
|
||||
---------------
|
||||
Priorita VYSOKÁ
|
||||
|
||||
* Ukládání dat na serveru
|
||||
* Více velikostí města
|
||||
* Oddělení města od vývojového prostředí
|
||||
|
||||
-----------------
|
||||
Priorita Normální
|
||||
|
||||
* Zobrazovat dotazy přímo v okně Karla (zašednout okolí, nechat pouze dotaz)
|
||||
* Dialog na spojování slovníků při importu/načítání
|
||||
* Čtení více příkazů najednou (import)
|
||||
|
||||
--------------
|
||||
Priorita nízká
|
||||
|
||||
* Zkontrolovat a doplnit nápovědu o nové vlastnosti (např. automatické vyplnění
|
||||
nástrojového tipu podle prvního komentáře)
|
||||
|
After Width: | Height: | Size: 1.1 KiB |
@@ -0,0 +1,2 @@
|
||||
ExpiresActive On
|
||||
ExpiresByType image/png A2592000
|
||||
|
After Width: | Height: | Size: 566 B |
|
After Width: | Height: | Size: 337 B |
|
After Width: | Height: | Size: 358 B |
|
After Width: | Height: | Size: 572 B |
|
After Width: | Height: | Size: 334 B |
|
After Width: | Height: | Size: 353 B |
|
After Width: | Height: | Size: 564 B |
|
After Width: | Height: | Size: 703 B |
|
After Width: | Height: | Size: 768 B |
|
After Width: | Height: | Size: 794 B |
|
After Width: | Height: | Size: 439 B |
|
After Width: | Height: | Size: 384 B |
|
After Width: | Height: | Size: 745 B |
|
After Width: | Height: | Size: 484 B |
|
After Width: | Height: | Size: 407 B |
|
After Width: | Height: | Size: 892 B |
|
After Width: | Height: | Size: 831 B |
|
After Width: | Height: | Size: 543 B |
|
After Width: | Height: | Size: 442 B |
|
After Width: | Height: | Size: 551 B |
|
After Width: | Height: | Size: 966 B |
|
After Width: | Height: | Size: 390 B |
|
After Width: | Height: | Size: 492 B |
|
After Width: | Height: | Size: 504 B |
|
After Width: | Height: | Size: 656 B |
|
After Width: | Height: | Size: 714 B |
|
After Width: | Height: | Size: 753 B |
|
After Width: | Height: | Size: 753 B |
|
After Width: | Height: | Size: 713 B |
|
After Width: | Height: | Size: 604 B |
|
After Width: | Height: | Size: 1.5 KiB |
|
After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 304 B |
|
After Width: | Height: | Size: 348 B |
|
After Width: | Height: | Size: 351 B |
|
After Width: | Height: | Size: 405 B |
|
After Width: | Height: | Size: 385 B |
|
After Width: | Height: | Size: 386 B |
|
After Width: | Height: | Size: 387 B |
|
After Width: | Height: | Size: 387 B |
|
After Width: | Height: | Size: 387 B |
|
After Width: | Height: | Size: 384 B |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 586 B |
|
After Width: | Height: | Size: 688 B |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 533 B |
|
After Width: | Height: | Size: 635 B |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 1.6 KiB |
|
After Width: | Height: | Size: 2.2 KiB |
|
After Width: | Height: | Size: 2.4 KiB |
|
After Width: | Height: | Size: 786 B |
|
After Width: | Height: | Size: 640 B |
|
After Width: | Height: | Size: 2.0 KiB |
|
After Width: | Height: | Size: 934 B |
|
After Width: | Height: | Size: 755 B |
|
After Width: | Height: | Size: 2.8 KiB |
|
After Width: | Height: | Size: 2.5 KiB |
|
After Width: | Height: | Size: 952 B |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 3.9 KiB |
|
After Width: | Height: | Size: 324 B |
|
After Width: | Height: | Size: 323 B |
|
After Width: | Height: | Size: 288 B |
|
After Width: | Height: | Size: 349 B |
|
After Width: | Height: | Size: 322 B |
|
After Width: | Height: | Size: 367 B |
|
After Width: | Height: | Size: 292 B |
|
After Width: | Height: | Size: 318 B |
|
After Width: | Height: | Size: 271 B |
|
After Width: | Height: | Size: 271 B |
|
After Width: | Height: | Size: 453 B |
|
After Width: | Height: | Size: 451 B |
|
After Width: | Height: | Size: 453 B |
|
After Width: | Height: | Size: 440 B |
|
After Width: | Height: | Size: 430 B |
|
After Width: | Height: | Size: 757 B |
|
After Width: | Height: | Size: 601 B |
@@ -0,0 +1,185 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
|
||||
<head>
|
||||
<title>Robot Karel: vývojové prostředí</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta http-equiv="Content-Language" content="cs" />
|
||||
<meta name="Description" content="Robot Karel: vývojové prostředí" />
|
||||
<meta name="Keywords" content="robot,karel,gui,prostredi,vyvojove prostredi,prostředí,vývojové prostředí" />
|
||||
<meta name="Author" content="Oldřich Jedlička" />
|
||||
<meta name="Copyright"
|
||||
content="Copyright © 2006-2013 Oldřich Jedlička, Všechna práva vyhrazena" />
|
||||
|
||||
<link href="favicon.ico" rel="icon" />
|
||||
<link href="favicon.ico" rel="shortcut icon" />
|
||||
<link href="style/mesto-obecne.css" rel="stylesheet" type="text/css" />
|
||||
<link href="style/nastroje-mesto.css" rel="stylesheet" type="text/css" />
|
||||
<link href="style/obecny-styl.css" rel="stylesheet" type="text/css" />
|
||||
<link href="style/tooltip.css" rel="stylesheet" type="text/css" />
|
||||
|
||||
<script type="text/javascript" charset="utf-8">
|
||||
ie_hack = 0;
|
||||
verze_karla = "2.0.5";
|
||||
</script>
|
||||
<link href="style/nastroje-obecne.css" rel="stylesheet" type="text/css" />
|
||||
<link href="style/prikazy-slovnik.css" rel="stylesheet" type="text/css" />
|
||||
<link href="style/prikazy-editor.css" rel="stylesheet" type="text/css" />
|
||||
<link href="style/ladici-konzola.css" rel="stylesheet" type="text/css" />
|
||||
<link href="style/nastaveni.css" rel="stylesheet" type="text/css" />
|
||||
<link href="style/styly.css" rel="stylesheet" type="text/css" />
|
||||
<link href="style/tipy.css" rel="stylesheet" type="text/css" />
|
||||
|
||||
<link href="style/mesto-normalni.css" rel="stylesheet" type="text/css"
|
||||
title="Klasika" id="styl-klasika" />
|
||||
<link href="style/mesto-kulicky.css" rel="stylesheet" type="text/css"
|
||||
title="Kuličky" id="styl-kulicky" />
|
||||
|
||||
<link href="style/nastroje-normalni.css" rel="stylesheet" type="text/css"
|
||||
title="Klasika" />
|
||||
<link href="style/tipy-normalni.css" rel="stylesheet" type="text/css"
|
||||
title="Klasika" />
|
||||
<link href="style/nastroje-kulicky.css" rel="stylesheet" type="text/css"
|
||||
title="Kuličky" />
|
||||
<link href="style/tipy-kulicky.css" rel="stylesheet" type="text/css"
|
||||
title="Kuličky" />
|
||||
|
||||
<!--[if gte IE 5.5 & lt IE 7]>
|
||||
<script type="text/javascript" charset="utf-8">
|
||||
ie_hack = 1;
|
||||
</script>
|
||||
|
||||
<link href="style/nastroje-obecne-ie.css" rel="stylesheet" type="text/css" />
|
||||
<link href="style/prikazy-slovnik-ie.css" rel="stylesheet" type="text/css" />
|
||||
<link href="style/prikazy-editor-ie.css" rel="stylesheet" type="text/css" />
|
||||
<link href="style/ladici-konzola-ie.css" rel="stylesheet" type="text/css" />
|
||||
<link href="style/nastaveni-ie.css" rel="stylesheet" type="text/css" />
|
||||
<link href="style/styly-ie.css" rel="stylesheet" type="text/css" />
|
||||
<link href="style/tipy-ie.css" rel="stylesheet" type="text/css" />
|
||||
|
||||
<link href="style/mesto-normalni-ie.css" rel="stylesheet" type="text/css"
|
||||
title="Klasika" />
|
||||
<link href="style/mesto-kulicky-ie.css" rel="stylesheet" type="text/css"
|
||||
title="Kuličky" />
|
||||
|
||||
<link href="style/nastroje-normalni-ie.css" rel="stylesheet" type="text/css"
|
||||
title="Klasika" />
|
||||
<link href="style/tipy-normalni-ie.css" rel="stylesheet" type="text/css"
|
||||
title="Klasika" />
|
||||
<link href="style/nastroje-kulicky-ie.css" rel="stylesheet" type="text/css"
|
||||
title="Kuličky" />
|
||||
<link href="style/tipy-kulicky-ie.css" rel="stylesheet" type="text/css"
|
||||
title="Kuličky" />
|
||||
<![endif]-->
|
||||
|
||||
<script type="text/javascript" charset="utf-8"
|
||||
src="scripts/obecne-funkce.js"></script>
|
||||
<script type="text/javascript" charset="utf-8"
|
||||
src="scripts/tvorici-funkce.js"></script>
|
||||
<script type="text/javascript" charset="utf-8"
|
||||
src="scripts/tooltip.js"></script>
|
||||
<script type="text/javascript" charset="utf-8"
|
||||
src="scripts/mys.js"></script>
|
||||
<script type="text/javascript" charset="utf-8"
|
||||
src="scripts/nastaveni-funkce.js"></script>
|
||||
<script type="text/javascript" charset="utf-8"
|
||||
src="scripts/ladici-konzola-funkce.js"></script>
|
||||
<script type="text/javascript" charset="utf-8"
|
||||
src="scripts/ajax.js"></script>
|
||||
<script type="text/javascript" charset="utf-8"
|
||||
src="scripts/mesto-funkce.js"></script>
|
||||
<script type="text/javascript" charset="utf-8"
|
||||
src="scripts/nastroje-funkce.js"></script>
|
||||
<script type="text/javascript" charset="utf-8"
|
||||
src="scripts/styly-funkce.js"></script>
|
||||
<script type="text/javascript" charset="utf-8"
|
||||
src="scripts/velikosti-funkce.js"></script>
|
||||
<script type="text/javascript" charset="utf-8"
|
||||
src="scripts/prikazy-jadro.js"></script>
|
||||
<script type="text/javascript" charset="utf-8"
|
||||
src="scripts/prikazy-rozpoznavani.js"></script>
|
||||
<script type="text/javascript" charset="utf-8"
|
||||
src="scripts/nacitaci-ukladaci-funkce.js"></script>
|
||||
<script type="text/javascript" charset="utf-8"
|
||||
src="scripts/okno-ulozeni-a-exportu.js"></script>
|
||||
<script type="text/javascript" charset="utf-8"
|
||||
src="scripts/slovnik.js"></script>
|
||||
<script type="text/javascript" charset="utf-8"
|
||||
src="scripts/prikazy-funkce-slovnik.js"></script>
|
||||
<script type="text/javascript" charset="utf-8"
|
||||
src="scripts/prikazy-funkce-editor.js"></script>
|
||||
<script type="text/javascript" charset="utf-8"
|
||||
src="scripts/kodovani-odkazu.js"></script>
|
||||
</head>
|
||||
<body onload="ajax.kontrola_metody(); spust_po_spusteni(); obnov_odkazy();">
|
||||
|
||||
<div id="okno1">
|
||||
</div>
|
||||
<div id="okno2">
|
||||
</div>
|
||||
|
||||
<!-- Stránka -->
|
||||
<div id="stranka">
|
||||
<div id="okraj"></div>
|
||||
|
||||
<!-- Pravý sloupec -->
|
||||
<div class="pravy-sloupec">
|
||||
<div class="centrovany">
|
||||
|
||||
<!-- Město a nástroje -->
|
||||
|
||||
<!-- Město -->
|
||||
<script type="text/javascript" charset="utf-8"
|
||||
src="scripts/mesto-tvar.js"></script>
|
||||
|
||||
<!-- Nástroje -->
|
||||
<script type="text/javascript" charset="utf-8"
|
||||
src="scripts/nastroje-tvar.js"></script>
|
||||
|
||||
<!-- Konec města a nástrojů -->
|
||||
|
||||
<script type="text/javascript" charset="utf-8"
|
||||
src="scripts/ladici-konzola-tvar.js"></script>
|
||||
|
||||
<script type="text/javascript" charset="utf-8"
|
||||
src="scripts/styly-tvar.js"></script>
|
||||
|
||||
<script type="text/javascript" charset="utf-8"
|
||||
src="scripts/nastaveni-tvar.js"></script>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<!-- Konec pravého sloupce -->
|
||||
|
||||
<!-- Levý (hlavní) sloupec -->
|
||||
<div class="informace">
|
||||
<a class="levy" href="javascript:napoveda();">Nápověda</a>
|
||||
<a class="levy" href="javascript:priklady();">Příklady</a>
|
||||
<div class="pravy">
|
||||
Copyright © 2006-2013 <a href="mailto:">Oldřich Jedlička</a>,
|
||||
Všechna práva vyhrazena.<a class="pravy"
|
||||
href="KOPIROVANI">Pravidla kopírování</a><a class="pravy"
|
||||
href="http://download.oldium.net/karel/karel-2.0.5.tar.gz">Zdrojový kód</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="hlavni-sloupec">
|
||||
<script type="text/javascript" charset="utf-8"
|
||||
src="scripts/prikazy-tvar-slovnik.js"></script>
|
||||
</div>
|
||||
|
||||
<div class="hlavni-sloupec-posledni">
|
||||
<form action="#">
|
||||
<script type="text/javascript" charset="utf-8"
|
||||
src="scripts/prikazy-tvar-editor.js"></script>
|
||||
</form>
|
||||
|
||||
</div>
|
||||
<!-- Konec levého sloupce -->
|
||||
|
||||
</div>
|
||||
<!-- Konec stránky -->
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,112 @@
|
||||
/*
|
||||
* [Č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 - funkce pro použití XMLHttpRequest (AJAX)
|
||||
|
||||
// ===========================================================================
|
||||
// =~ Globální proměnné ~=====================================================
|
||||
|
||||
// Hlavní objekt
|
||||
ajax = new Object();
|
||||
|
||||
// Typ používané metody pro AJAX
|
||||
ajax.typ_metody = new Object();
|
||||
ajax.typ_metody.NIC = 0;
|
||||
ajax.typ_metody.JAVASCRIPT = 1;
|
||||
ajax.typ_metody.ACTIVEX = 2;
|
||||
|
||||
// Nalezená metoda pro AJAX
|
||||
ajax.metoda = ajax.typ_metody.NIC;
|
||||
|
||||
// ===========================================================================
|
||||
// =~ Základní práce se soubory ~=============================================
|
||||
|
||||
// Zjištění podporované metody
|
||||
ajax.zjisti_metodu = function ()
|
||||
{
|
||||
ajax.metoda = ajax.typ_metody.NIC;
|
||||
try {
|
||||
if ( window.XMLHttpRequest ) {
|
||||
var nahravac = new XMLHttpRequest();
|
||||
if ( nahravac ) {
|
||||
ladici_vypis(LADENI, "ajax",
|
||||
"nalezen javascriptový XMLHttpRequest");
|
||||
ajax.metoda = ajax.typ_metody.JAVASCRIPT;
|
||||
}
|
||||
} else if ( window.ActiveXObject ) {
|
||||
var nahravac = new ActiveXObject("Microsoft.XMLHTTP");
|
||||
if ( nahravac ) {
|
||||
ladici_vypis(LADENI, "ajax", "nalezen ActiveX objekt XMLHTTP");
|
||||
ajax.metoda = ajax.typ_metody.ACTIVEX;
|
||||
}
|
||||
}
|
||||
} catch (e) {}
|
||||
|
||||
if ( ajax.metoda == ajax.typ_metody.NIC ) {
|
||||
ladici_vypis(CHYBA, "ajax", "nenalezena vhodná metoda");
|
||||
}
|
||||
|
||||
return ajax.metoda;
|
||||
}
|
||||
|
||||
// Vrátí true, pokud je možné použít metodu XMLHttpRequest
|
||||
ajax.je_funkcni = function ()
|
||||
{
|
||||
return (ajax.metoda != ajax.typ_metody.NIC);
|
||||
}
|
||||
|
||||
// Vytvoření nahrávače
|
||||
ajax.vrat_nahravac = function ()
|
||||
{
|
||||
try {
|
||||
if ( ajax.metoda == ajax.typ_metody.JAVASCRIPT ) {
|
||||
return new XMLHttpRequest();
|
||||
} else if ( ajax.metoda == ajax.typ_metody.ACTIVEX ) {
|
||||
return new ActiveXObject("Microsoft.XMLHTTP");
|
||||
}
|
||||
} catch (vse) {}
|
||||
return undefined;
|
||||
}
|
||||
|
||||
// Nahrání souboru
|
||||
ajax.nahraj_soubor = function (nahravac, url, notifikace, asynchronne)
|
||||
{
|
||||
if ( nahravac ) {
|
||||
try {
|
||||
if ( notifikace ) {
|
||||
nahravac.onreadystatechange = notifikace;
|
||||
}
|
||||
nahravac.open("GET", url, asynchronne);
|
||||
nahravac.send(null);
|
||||
return nahravac;
|
||||
} catch (vse) {
|
||||
return undefined;
|
||||
}
|
||||
} else {
|
||||
return undefined;
|
||||
}
|
||||
}
|
||||
|
||||
// Nahrání souboru asynchronně
|
||||
ajax.nahraj_soubor_pozdeji = function (nahravac, url, notifikace)
|
||||
{
|
||||
return this.nahraj_soubor(nahravac, url, notifikace, true);
|
||||
}
|
||||
|
||||
// Zkontrolování podporované metody
|
||||
ajax.kontrola_metody = function ()
|
||||
{
|
||||
if ( ajax.zjisti_metodu() == ajax.typ_metody.NIC ) {
|
||||
alert(
|
||||
"Nepodařilo se nalézt vhodnou metodu pro nahrávání souborů.\n\n" +
|
||||
"Funkce spojování slovníku nebude dostupná."
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
/*
|
||||
* [Č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 - kódování odkazů do dokumentu
|
||||
|
||||
var kodovany_mail = [ "oldium", "pro", "seznam", "cz" ];
|
||||
if ( typeof(je_oldium_dot_home) == "undefined" ) {
|
||||
je_oldium_dot_home = false;
|
||||
if ( /^https?:\/\/[^\/]+\.oldium\.home\//.exec(document.URL) ) {
|
||||
je_oldium_dot_home = true;
|
||||
}
|
||||
}
|
||||
|
||||
function dekoduj_mail() {
|
||||
return kodovany_mail[0] + "." + kodovany_mail[1] + "@" +
|
||||
kodovany_mail[2] + "." + kodovany_mail[3];
|
||||
}
|
||||
|
||||
function obnov_odkazy() {
|
||||
var odkazy = document.getElementsByTagName("a");
|
||||
var muj_mail = dekoduj_mail();
|
||||
for ( var i = 0; i < odkazy.length; i++ ) {
|
||||
if ( odkazy[i].href == "mailto:" ) {
|
||||
odkazy[i].href = "mailto:" + muj_mail;
|
||||
} else {
|
||||
if ( je_oldium_dot_home ) {
|
||||
var novy_odkaz = odkazy[i].href.replace(
|
||||
/^(https?:\/\/[^\/]+\.oldium)\.net\//, "$1.home/" );
|
||||
odkazy[i].href = novy_odkaz;
|
||||
}
|
||||
if ( typeof(verze_karla) != "undefined" ) {
|
||||
var odkaz_verze = odkazy[i].href.replace(
|
||||
/karel-VERZE/, "karel-" + verze_karla );
|
||||
odkazy[i].href = odkaz_verze;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,226 @@
|
||||
/*
|
||||
* [Č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 - funkce konzole pro ladění
|
||||
|
||||
// ===========================================================================
|
||||
// =~ Globální nastavení ~====================================================
|
||||
|
||||
// Maximální počet řádek ve výpisu
|
||||
// TODO: Nastavení v uživatelském rozhraní
|
||||
nastaveni.pocet_radek_vypisu = 120;
|
||||
|
||||
// ===========================================================================
|
||||
// =~ Globální proměnné ~=====================================================
|
||||
|
||||
// Informace o vypisu
|
||||
vypisy = new Object();
|
||||
|
||||
// Aktuální počet řádek výpisu
|
||||
vypisy.pocet_radek = 0;
|
||||
|
||||
// Sledování myši
|
||||
vypisy.stisknute = false;
|
||||
|
||||
// Výpis v obráceném pořadí (novější první)
|
||||
vypisy.obracene = true;
|
||||
|
||||
// Úrovně ladicích výpisů
|
||||
CHYBA = 1; // Činnost nelze provést a uživatel nebyl informován
|
||||
VAROVANI = 2; // Činnost nelze provést, ale uživatel byl informován
|
||||
INFORMACE = 3; // Informace o provedené (!) činnosti
|
||||
DETAIL = 4; // Detailní informace o činnosti
|
||||
LADENI = 5; // Ladicí infomace pro vývojáře
|
||||
|
||||
vypisy.nazvy_urovni = new Array(
|
||||
"chyba",
|
||||
"varování",
|
||||
"informace",
|
||||
"detail",
|
||||
"ladění"
|
||||
);
|
||||
|
||||
// Nastavená úrovně výpisů
|
||||
var uroven = unescape(hodnota_cookie("uroven_ladeni"));
|
||||
for ( var i = 0; i < vypisy.nazvy_urovni.length; i++ ) {
|
||||
if ( uroven == vypisy.nazvy_urovni[i] ) {
|
||||
vypisy.uroven = i+1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if ( vypisy.uroven == undefined ) {
|
||||
if ( je_oldium_dot_home ) {
|
||||
vypisy.uroven = DETAIL;
|
||||
} else {
|
||||
vypisy.uroven = INFORMACE;
|
||||
}
|
||||
}
|
||||
|
||||
// Nápověda k nastavení hloubky výpisů
|
||||
vypisy.uroven_tooltip = new Array(
|
||||
[ "Úroveň chyb", "Zapisuj pouze chyby" ],
|
||||
[ "Uroveň varování", "Zapisuj chyby a varování" ],
|
||||
[ "Úroveň informací", "Zapisuj chyby, varování a informativní zprávy" ],
|
||||
[ "Úroveň detailů",
|
||||
"Zapisuj chyby, varování, informativní a detailní zprávy" ],
|
||||
[ "Úroveň pro vývojáře", "Zapisuj všechny informace pro vývojáře" ]
|
||||
);
|
||||
|
||||
vypisy.zobrazeni_tooltip = new Array(
|
||||
[ "Ladicí konzola", "Zobraz ladicí konzolu" ],
|
||||
[ "Ladicí konzola", "Skryj ladicí konzolu" ]
|
||||
);
|
||||
|
||||
// Objekt pro práci s myší
|
||||
vypisy.mys = new Mys(new Tooltip());
|
||||
vypisy.mys.tooltip.muzu_zobrazit = function (info, detail) { return true; }
|
||||
|
||||
// ===========================================================================
|
||||
// =~ Funkce pro operace s konzolí ~==========================================
|
||||
|
||||
function ladici_vypis(uroven, funkce, info, text)
|
||||
{
|
||||
if ( uroven > vypisy.uroven ) return;
|
||||
var konzola = document.getElementById("konzola");
|
||||
if ( !konzola ) return;
|
||||
|
||||
if ( vypisy.pocet_radek == nastaveni.pocet_radek_vypisu ) {
|
||||
if ( ! vypisy.obracene ) {
|
||||
// Smaž první řádku ve výpisu
|
||||
konzola.removeChild(konzola.firstChild); // Text
|
||||
konzola.removeChild(konzola.firstChild); // <BR />
|
||||
vypisy.pocet_radek--;
|
||||
} else {
|
||||
// Smaž poslední řádku ve výpisu
|
||||
konzola.removeChild(konzola.lastChild); // <BR />
|
||||
konzola.removeChild(konzola.lastChild); // Text
|
||||
vypisy.pocet_radek--;
|
||||
}
|
||||
}
|
||||
|
||||
if ( text == undefined ) {
|
||||
text = info;
|
||||
info = undefined;
|
||||
}
|
||||
|
||||
var cas = formatuj_text(new Date());
|
||||
if ( info != undefined ) {
|
||||
info = formatuj_text(info);
|
||||
}
|
||||
|
||||
var element_radka = document.createElement("SPAN");
|
||||
var element_cas = element_radka.cloneNode(false);
|
||||
var element_uroven = element_radka.cloneNode(false);
|
||||
var element_funkce = element_radka.cloneNode(false);
|
||||
if ( info != undefined ) var element_info = element_radka.cloneNode(false);
|
||||
var element_text = element_radka.cloneNode(false);
|
||||
var element_mezera = document.createTextNode("\u00A0"); //
|
||||
var element_br = document.createElement("BR");
|
||||
|
||||
// Text
|
||||
element_cas.appendChild(document.createTextNode(cas));
|
||||
element_funkce.appendChild(document.createTextNode(funkce));
|
||||
element_uroven.appendChild(document.createTextNode(
|
||||
"["+vypisy.nazvy_urovni[uroven-1]+"]"));
|
||||
if ( info != undefined )
|
||||
element_info.appendChild(document.createTextNode("("+info+")"));
|
||||
element_text.appendChild(document.createTextNode(text));;
|
||||
|
||||
// Styly
|
||||
element_radka.className = "radka";
|
||||
element_cas.className = "cas";
|
||||
element_uroven.className = "uroven";
|
||||
element_funkce.className = "funkce";
|
||||
if ( info != undefined ) element_info.className = "info";
|
||||
element_text.className = "text";
|
||||
|
||||
// Tvar
|
||||
element_radka.appendChild(element_cas);
|
||||
element_radka.appendChild(element_mezera.cloneNode(false));
|
||||
element_radka.appendChild(element_uroven);
|
||||
element_radka.appendChild(element_mezera.cloneNode(false));
|
||||
element_radka.appendChild(element_funkce);
|
||||
if ( info != undefined ) {
|
||||
element_radka.appendChild(element_mezera.cloneNode(false));
|
||||
element_radka.appendChild(element_info);
|
||||
}
|
||||
element_radka.appendChild(element_mezera);
|
||||
element_radka.appendChild(element_text);
|
||||
|
||||
// Zařazení do HTML
|
||||
if ( ! vypisy.obracene ) {
|
||||
konzola.appendChild(element_radka);
|
||||
konzola.appendChild(element_br);
|
||||
} else {
|
||||
konzola.insertBefore(element_br, konzola.firstChild);
|
||||
konzola.insertBefore(element_radka, konzola.firstChild);
|
||||
}
|
||||
|
||||
vypisy.pocet_radek++;
|
||||
}
|
||||
|
||||
vypisy.mys.proved_vyber = function(objekt)
|
||||
{
|
||||
if ( objekt == "vypis" ) {
|
||||
return false;
|
||||
} else {
|
||||
vypisy.uroven = objekt.slice(-1);
|
||||
nastav_cookie("uroven_ladeni",
|
||||
escape(vypisy.nazvy_urovni[vypisy.uroven-1]), 365);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
vypisy.mys.prekresli_stav = function(objekt, detail, zvyraznen, stisknut,
|
||||
vybran)
|
||||
{
|
||||
if ( objekt != "vypis" ) {
|
||||
var element=document.getElementById("uroven");
|
||||
ladici_vypis(LADENI,"vypisy.mys.prekresli_stav",objekt,
|
||||
"nastavuji odpovídající pozadí");
|
||||
element.className = objekt;
|
||||
}
|
||||
}
|
||||
|
||||
vypisy.mys.proved_stisk = function(objekt)
|
||||
{
|
||||
if ( objekt == "vypis" ) {
|
||||
var element = document.getElementById("konzola");
|
||||
var konzola = element.parentNode;
|
||||
var ikona = document.getElementById("vypis-ikona");
|
||||
|
||||
if ( konzola.style.display != "block" ) {
|
||||
konzola.style.display = "block";
|
||||
ikona.className = "ikona-sbalit";
|
||||
} else {
|
||||
konzola.style.display = "none";
|
||||
ikona.className = "ikona-rozbalit";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
vypisy.mys.tooltip.obnov = function (tooltip, info, detail)
|
||||
{
|
||||
if ( info == 'vypis' ) {
|
||||
var element = document.getElementById("konzola");
|
||||
var konzola = element.parentNode;
|
||||
var id = ( konzola.style.display != "block" ) ? 0 : 1;
|
||||
tvoric.obnov_tooltip( tooltip, "",
|
||||
vypisy.zobrazeni_tooltip[id][0], vypisy.zobrazeni_tooltip[id][1] );
|
||||
} else {
|
||||
tvoric.obnov_tooltip( tooltip, "", detail.nadpis, detail.popis );
|
||||
}
|
||||
}
|
||||
|
||||
function uroven_ladeni(uroven)
|
||||
{
|
||||
vypisy.mys.vyber("uroven-"+uroven);
|
||||
}
|
||||
@@ -0,0 +1,56 @@
|
||||
/*
|
||||
* [Č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 - základní tvar ladicí konzole
|
||||
|
||||
// ===========================================================================
|
||||
// =~ Vygenerování konzole ~==================================================
|
||||
|
||||
document.write('<div class="ovladani-ladeni">');
|
||||
|
||||
document.write('<div class="prvky"><div class="obsah">');
|
||||
|
||||
document.write('<div id="uroven" class="uroven-1"></div>');
|
||||
|
||||
document.write('<div class="maska">');
|
||||
for ( var i = 1; i <= vypisy.uroven_tooltip.length; i++ ) {
|
||||
var mys_info = "'uroven-"+i+"'";
|
||||
var mys_detail =
|
||||
"{nadpis:'"+vypisy.uroven_tooltip[i-1][0]+"',"+
|
||||
"popis:'"+vypisy.uroven_tooltip[i-1][1]+"'}";
|
||||
document.write('<div id="uroven-'+i+'" '+
|
||||
'onmouseover="return vypisy.mys.pres(event,'+mys_info+','+mys_detail+');" '+
|
||||
'onmouseout="return vypisy.mys.pryc(event,'+mys_info+','+mys_detail+');" '+
|
||||
'onmousedown="return vypisy.mys.stisk(event,'+mys_info+','+mys_detail+');"'+
|
||||
'onmouseup="return vypisy.mys.pust(event,'+mys_info+','+mys_detail+');" '+
|
||||
'></div>');
|
||||
}
|
||||
document.write('</div>');
|
||||
|
||||
document.write('<div id="vypis-ikona" class="ikona-rozbalit"></div>');
|
||||
document.write('<div class="vypis-ikona" '+
|
||||
'onmouseover="return vypisy.mys.pres(event,\'vypis\');" ' +
|
||||
'onmouseout="return vypisy.mys.pryc(event,\'vypis\');" '+
|
||||
'onmousedown="return vypisy.mys.stisk(event,\'vypis\');" '+
|
||||
'onmouseup="return vypisy.mys.pust(event,\'vypis\');" '+
|
||||
'></div>');
|
||||
|
||||
document.write('</div></div>');
|
||||
|
||||
document.write('<p class="popis">Ladicí konzola</p>');
|
||||
|
||||
document.write('</div>');
|
||||
|
||||
document.write('<div class="konzola"><p id="konzola"></p></div>');
|
||||
|
||||
// ===========================================================================
|
||||
// =~ Základní nastavení ~====================================================
|
||||
|
||||
uroven_ladeni(vypisy.uroven);
|
||||
@@ -0,0 +1,401 @@
|
||||
/*
|
||||
* [Č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 - základní funkce pro město
|
||||
|
||||
// ===========================================================================
|
||||
// =~ Globální nastavení ~====================================================
|
||||
|
||||
// Čas pro dvojklik v milisekundách
|
||||
// TODO: Nastavení v uživatelském rozhraní
|
||||
nastaveni.dvojklik = 500;
|
||||
|
||||
// ===========================================================================
|
||||
// =~ Globální proměnné ~=====================================================
|
||||
|
||||
// Pozice Karla
|
||||
karel = new Object();
|
||||
|
||||
// Směr: 0-východ, 1-sever, 2-západ, 3-jih
|
||||
karel.VYCHOD = 0;
|
||||
karel.SEVER = 1;
|
||||
karel.ZAPAD = 2;
|
||||
karel.JIH = 3;
|
||||
|
||||
karel.smer = karel.VYCHOD;
|
||||
karel.pozice = {x:0, y:0};
|
||||
karel.nazev_smeru = new Array("vychod", "sever", "zapad", "jih");
|
||||
karel.nazev_smeru_plny = new Array("východ", "sever", "západ", "jih");
|
||||
|
||||
// Pozice domova
|
||||
domov = new Object();
|
||||
domov.pozice = {x:0, y:0};
|
||||
|
||||
// Konstanty pohybu (východ, sever, západ, jih)
|
||||
plus = new Object();
|
||||
plus.x = new Array(1, 0, -1, 0);
|
||||
plus.y = new Array(0, 1, 0, -1);
|
||||
|
||||
// Struktura města
|
||||
mesto = new Object();
|
||||
|
||||
// Velikost
|
||||
mesto.velikost = {x: 10, y: 10};
|
||||
|
||||
// Pole
|
||||
mesto.pole = new Array();
|
||||
mesto.pole[0] = new Array();
|
||||
for ( var x = 0; x < mesto.velikost.x; x++ ) {
|
||||
mesto.pole[0].push(0);
|
||||
}
|
||||
for ( var y = 1; y < mesto.velikost.y; y++ ) {
|
||||
mesto.pole[y] = mesto.pole[0].concat();
|
||||
}
|
||||
|
||||
// Názvy obrázků
|
||||
mesto.obrazky = new Array();
|
||||
|
||||
mesto.obrazky[-1] = "zed";
|
||||
mesto.obrazky[0] = null;
|
||||
for ( var i = 1; i < 9; i++ ) { // A potom značky
|
||||
mesto.obrazky[i] = "znacka-"+i;
|
||||
}
|
||||
|
||||
// Objekt pro práci s myší
|
||||
mesto.mys = new Mys();
|
||||
|
||||
// Čas posledního kliku (provedení akce) - pro dvojklik
|
||||
mesto.posledni_klik = null;
|
||||
|
||||
// ===========================================================================
|
||||
// =~ Základní funkce pro aktualizaci města ~=================================
|
||||
|
||||
// Nastav správné parametry políčka podle města
|
||||
mesto.prekresli_pole = function (pozice)
|
||||
{
|
||||
var element = document.getElementById('pozice_'+pozice.x+'_'+pozice.y);
|
||||
var pole = mesto.pole[pozice.x][pozice.y];
|
||||
var obrazek = mesto.obrazky[pole];
|
||||
|
||||
if ( element.className != obrazek ) {
|
||||
element.className = obrazek;
|
||||
}
|
||||
}
|
||||
|
||||
// Nastav pozici Karla
|
||||
mesto.pozice_karla = function (pozice)
|
||||
{
|
||||
if ( pozice.x >= 0 && pozice.x < mesto.velikost.x &&
|
||||
pozice.y >= 0 && pozice.y < mesto.velikost.y &&
|
||||
mesto.pole[pozice.x][pozice.y] >= 0 )
|
||||
{
|
||||
var element = document.getElementById('pozice_karel');
|
||||
element.style.left = (pozice.x*32)+"px";
|
||||
element.style.top = ((mesto.velikost.y - pozice.y - 1)*32)+"px";
|
||||
karel.pozice = pozice;
|
||||
ladici_vypis(DETAIL, "mesto.pozice_karla", pozice, "Karel umístěn");
|
||||
return true;
|
||||
} else {
|
||||
ladici_vypis(CHYBA, "mesto.pozice_karla", pozice, "Karla nelze umístit kvůli zdi");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
// Nastav orientaci Karla
|
||||
mesto.orientace_karla = function (smer)
|
||||
{
|
||||
smer %= karel.nazev_smeru.length;
|
||||
if ( smer < 0 ) smer += karel.nazev_smeru.length;
|
||||
var element = document.getElementById('pozice_karel');
|
||||
element.className = "karel-"+karel.nazev_smeru[smer];
|
||||
karel.smer = smer;
|
||||
ladici_vypis(DETAIL, "mesto.orientace_karla",
|
||||
"Karel nasměrován na "+karel.nazev_smeru_plny[smer]);
|
||||
}
|
||||
|
||||
// Nastav pozici Domova
|
||||
mesto.pozice_domova = function (pozice)
|
||||
{
|
||||
if ( mesto.pole[pozice.x][pozice.y] >= 0 ) {
|
||||
var element = document.getElementById('pozice_domov');
|
||||
element.style.left = (pozice.x*32)+"px";
|
||||
element.style.top = ((mesto.velikost.y - pozice.y - 1)*32)+"px";
|
||||
domov.pozice = pozice;
|
||||
ladici_vypis(DETAIL, "mesto.pozice_domova", pozice, "domov umístěn");
|
||||
} else {
|
||||
ladici_vypis(CHYBA, "mesto.pozice_domova", pozice, "domov nelze umístit kvůli zdi");
|
||||
}
|
||||
}
|
||||
|
||||
// Nahrání celého města
|
||||
mesto.nahraj_mesto = function (karel_pozice, smer, domov_pozice, mesto_pole)
|
||||
{
|
||||
var uzivatel_chce = window.confirm("Opravdu si přejete nahrát město?");
|
||||
if ( uzivatel_chce ) {
|
||||
mesto.velikost.x = mesto_pole.length;
|
||||
mesto.velikost.y = mesto_pole[0].length;
|
||||
|
||||
this.pozice_karla(karel_pozice);
|
||||
this.orientace_karla(smer);
|
||||
this.pozice_domova(domov_pozice);
|
||||
for ( var x = 0; x < mesto.pole.length; x++ ) {
|
||||
for ( var y = 0; y < mesto.pole[0].length; y++ ) {
|
||||
if ( mesto.pole[x][y] != mesto_pole[x][y] ) {
|
||||
mesto.pole[x][y] = mesto_pole[x][y];
|
||||
this.prekresli_pole( {x: x, y: y} );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
// =~ Podmínky pro Karla ~====================================================
|
||||
|
||||
mesto.JE_ZED = function ()
|
||||
{
|
||||
var pozice = {
|
||||
x: karel.pozice.x+plus.x[karel.smer],
|
||||
y: karel.pozice.y+plus.y[karel.smer]
|
||||
};
|
||||
return !( pozice.x >= 0 && pozice.x < mesto.velikost.x &&
|
||||
pozice.y >= 0 && pozice.y < mesto.velikost.y &&
|
||||
mesto.pole[pozice.x][pozice.y] >= 0 );
|
||||
}
|
||||
|
||||
mesto.JE_ZNACKA = function ()
|
||||
{
|
||||
return mesto.pole[karel.pozice.x][karel.pozice.y] > 0;
|
||||
}
|
||||
|
||||
mesto.JE_DOMOV = function ()
|
||||
{
|
||||
return ( karel.pozice.x == domov.pozice.x
|
||||
&& karel.pozice.y == domov.pozice.y );
|
||||
}
|
||||
|
||||
mesto.JE_VYCHOD = function ()
|
||||
{
|
||||
return karel.smer == karel.VYCHOD;
|
||||
}
|
||||
|
||||
mesto.JE_SEVER = function ()
|
||||
{
|
||||
return karel.smer == karel.SEVER;
|
||||
}
|
||||
|
||||
mesto.JE_ZAPAD = function ()
|
||||
{
|
||||
return karel.smer == karel.ZAPAD;
|
||||
}
|
||||
|
||||
mesto.JE_JIH = function ()
|
||||
{
|
||||
return karel.smer == karel.JIH;
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
// =~ Práce s myší ~==========================================================
|
||||
|
||||
mesto.mys.prekresli_stav = function (pozice, detail, zvyraznen, stisknut,
|
||||
vybran)
|
||||
{
|
||||
var element = document.getElementById('pozice_vyber');
|
||||
if ( zvyraznen ) {
|
||||
element.style.visibility = "visible";
|
||||
element.style.left = (pozice.x*32)+"px";
|
||||
element.style.top = ((mesto.velikost.y - pozice.y - 1)*32)+"px";
|
||||
nastroje.zobraz_pozici(pozice);
|
||||
} else if ( !this.je_zvyraznen() ) {
|
||||
element.style.visibility = "hidden";
|
||||
nastroje.zobraz_pozici(null);
|
||||
}
|
||||
}
|
||||
|
||||
mesto.mys.proved_zvyrazneni = function(pozice, detail)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
mesto.mys.proved_vyber = function(pozice, detail)
|
||||
{
|
||||
var cas = new Date();
|
||||
var rychly = (
|
||||
mesto.posledni_klik != null &&
|
||||
(cas-mesto.posledni_klik) < nastaveni.dvojklik
|
||||
);
|
||||
mesto.posledni_klik = cas;
|
||||
switch ( nastroje.vybrany() ) {
|
||||
case "karel":
|
||||
if ( ! rychly || ! jsou_shodne(pozice, karel.pozice) ) {
|
||||
mesto.pozice_karla(pozice);
|
||||
} else {
|
||||
mesto.proved_vlevo_vbok();
|
||||
}
|
||||
break;
|
||||
case "domov":
|
||||
mesto.pozice_domova(pozice);
|
||||
break;
|
||||
case "zed":
|
||||
mesto.umisti_zed(pozice);
|
||||
break;
|
||||
case "znacka-plus":
|
||||
mesto.poloz(pozice);
|
||||
break;
|
||||
case "znacka-minus":
|
||||
mesto.zvedni(pozice);
|
||||
break;
|
||||
default:
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
// =~ Příkazy a funkce pro editaci města ~====================================
|
||||
|
||||
mesto.proved_poloz = function (pozice)
|
||||
{
|
||||
var chyba = new Chyba();
|
||||
if ( pozice == null ) {
|
||||
pozice = {x:karel.pozice.x, y:karel.pozice.y};
|
||||
}
|
||||
if ( mesto.pole[pozice.x][pozice.y] >= 0 ) {
|
||||
if ( mesto.pole[pozice.x][pozice.y] < 8 ) {
|
||||
mesto.pole[pozice.x][pozice.y]++;
|
||||
ladici_vypis(DETAIL, "mesto.proved_poloz", pozice,
|
||||
"položena značka, aktuální počet: "+mesto.pole[pozice.x][pozice.y]);
|
||||
mesto.prekresli_pole(pozice);
|
||||
} else {
|
||||
ladici_vypis(VAROVANI, "mesto.proved_poloz", pozice,
|
||||
"příliš mnoho značek");
|
||||
chyba.nastav( true, "Nemohu položit více jak 8 značek." );
|
||||
}
|
||||
} else {
|
||||
ladici_vypis(CHYBA, "mesto.proved_poloz", pozice,
|
||||
"nelze položit značku kvůli zdi");
|
||||
}
|
||||
return new Vysledek( chyba, Vysledek.PROVEDL_AKCI );
|
||||
}
|
||||
|
||||
mesto.proved_zvedni = function (pozice)
|
||||
{
|
||||
var chyba = new Chyba();
|
||||
if ( pozice == null ) {
|
||||
pozice = {x:karel.pozice.x, y:karel.pozice.y};
|
||||
}
|
||||
if ( mesto.pole[pozice.x][pozice.y] >= 0 ) {
|
||||
if ( mesto.pole[pozice.x][pozice.y] > 0 ) {
|
||||
mesto.pole[pozice.x][pozice.y]--;
|
||||
ladici_vypis(DETAIL, "mesto.proved_zvedni", pozice,
|
||||
"zvednuta značka, aktuální počet: "+mesto.pole[pozice.x][pozice.y]);
|
||||
mesto.prekresli_pole(pozice);
|
||||
} else {
|
||||
ladici_vypis(VAROVANI, "mesto.proved_zvedni", pozice,
|
||||
"žádná značka, nelze zvednout");
|
||||
chyba.nastav( true, "Nemohu zvednout značku. Žádná tam není." );
|
||||
}
|
||||
} else {
|
||||
ladici_vypis(CHYBA, "mesto.proved_zvedni", pozice,
|
||||
"pouze zeď, nelze zvednout");
|
||||
}
|
||||
return new Vysledek( chyba, Vysledek.PROVEDL_AKCI );
|
||||
}
|
||||
|
||||
mesto.proved_vlevo_vbok = function (pozice)
|
||||
{
|
||||
mesto.orientace_karla(karel.smer+1);
|
||||
return new Vysledek( new Chyba(), Vysledek.PROVEDL_AKCI );
|
||||
}
|
||||
|
||||
mesto.proved_krok = function (pozice)
|
||||
{
|
||||
if ( pozice == null ) {
|
||||
pozice = {x:karel.pozice.x, y:karel.pozice.y};
|
||||
}
|
||||
var nova_pozice =
|
||||
{ x:pozice.x+plus.x[karel.smer], y:pozice.y+plus.y[karel.smer] };
|
||||
var chyba = new Chyba();
|
||||
if ( ! mesto.pozice_karla( nova_pozice ) ) {
|
||||
chyba.nastav( true, "Nemůžu učinit KROK, přede mnou je zeď." );
|
||||
}
|
||||
return new Vysledek( chyba, Vysledek.PROVEDL_AKCI );
|
||||
}
|
||||
|
||||
mesto.poloz = function (pozice)
|
||||
{
|
||||
var navrat = mesto.proved_poloz(pozice);
|
||||
navrat.chyba.zobraz();
|
||||
}
|
||||
|
||||
mesto.zvedni = function (pozice)
|
||||
{
|
||||
var navrat = mesto.proved_zvedni(pozice);
|
||||
navrat.chyba.zobraz();
|
||||
}
|
||||
|
||||
mesto.umisti_zed = function (pozice)
|
||||
{
|
||||
var je_karel = jsou_shodne(pozice, karel.pozice);
|
||||
var je_domov = jsou_shodne(pozice, domov.pozice);
|
||||
if ( !je_karel && !je_domov ) {
|
||||
if ( mesto.pole[pozice.x][pozice.y] >= 0 ) {
|
||||
mesto.pole[pozice.x][pozice.y] = -1;
|
||||
ladici_vypis(DETAIL, "mesto.umisti_zed", pozice, "zeď umístěna");
|
||||
} else {
|
||||
mesto.pole[pozice.x][pozice.y] = 0;
|
||||
ladici_vypis(DETAIL, "mesto.umisti_zed", pozice, "zeď zrušena");
|
||||
}
|
||||
mesto.prekresli_pole(pozice);
|
||||
} else {
|
||||
var hlaska = "";
|
||||
if ( je_karel ) {
|
||||
hlaska = "Karlovi a ";
|
||||
}
|
||||
if ( je_domov ) {
|
||||
hlaska += "domovu ";
|
||||
}
|
||||
ladici_vypis(CHYBA, "mesto.umisti_zed", pozice,
|
||||
"nelze umístit zeď kvůli "+hlaska.slice(0,-3));
|
||||
}
|
||||
}
|
||||
|
||||
mesto.vymaz_znacky = function ()
|
||||
{
|
||||
for ( var x=0; x<mesto.pole.length; x++ ) {
|
||||
for ( var y=0; y<mesto.pole[x].length; y++ ) {
|
||||
if ( mesto.pole[x][y] > 0 ) {
|
||||
mesto.pole[x][y] = 0;
|
||||
mesto.prekresli_pole({x:x, y:y});
|
||||
}
|
||||
}
|
||||
}
|
||||
ladici_vypis(INFORMACE, "mesto.vymaz_znacky", "značky vymazány");
|
||||
}
|
||||
|
||||
mesto.vymaz_mesto = function ()
|
||||
{
|
||||
var uzivatel_chce = window.confirm("Opravdu chcete vyčistit celé město?");
|
||||
if ( uzivatel_chce ) {
|
||||
ladici_vypis(INFORMACE, "mesto.vymaz_mesto", "mažu značky");
|
||||
for ( var x=0; x<mesto.pole.length; x++ ) {
|
||||
for ( var y=0; y<mesto.pole[x].length; y++ ) {
|
||||
if ( mesto.pole[x][y] != 0 ) {
|
||||
mesto.pole[x][y] = 0;
|
||||
mesto.prekresli_pole({x:x, y:y});
|
||||
}
|
||||
}
|
||||
}
|
||||
mesto.pozice_karla({x:0, y:0});
|
||||
mesto.orientace_karla(0);
|
||||
mesto.pozice_domova({x:0, y:0});
|
||||
} else {
|
||||
ladici_vypis(DETAIL, "mesto.vymaz_mesto", "zrušené mazání města");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,78 @@
|
||||
/*
|
||||
* [Č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 - základní tvar města
|
||||
|
||||
// Pomocné funkce
|
||||
function zapis_strukturu(obsah)
|
||||
{
|
||||
for ( var y = mesto.velikost.y-1; y >= 0; y-- ) {
|
||||
for ( var x = 0; x < mesto.velikost.x; x++ ) {
|
||||
formatovany_obsah = obsah(x, y);
|
||||
document.write('<div>' + formatovany_obsah + '</div>');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
// =~ Vygenerování města ~====================================================
|
||||
|
||||
// Začátek
|
||||
document.write('<div class="mesto">');
|
||||
|
||||
// Nadpis
|
||||
document.write('<div class="nadpis">Město</div>');
|
||||
|
||||
// Obsah
|
||||
document.write('<div class="obsah">');
|
||||
|
||||
// Pozadí
|
||||
document.write('<div class="linka"></div>');
|
||||
document.write('<div class="pozadi">');
|
||||
zapis_strukturu(function(x, y){ return '<div class="policko"></div>'; });
|
||||
document.write('</div>');
|
||||
|
||||
// Struktura města
|
||||
document.write('<div class="struktura">');
|
||||
zapis_strukturu(function(x, y){ return '<div id="pozice_'+x+'_'+y+'"></div>'; });
|
||||
document.write('</div>');
|
||||
|
||||
// Domov
|
||||
document.write('<div class="policko-domov">' +
|
||||
'<div class="domov" id="pozice_domov"></div></div>');
|
||||
|
||||
// Karel
|
||||
document.write('<div class="policko-karel">' +
|
||||
'<div class="karel-vychod" id="pozice_karel"></div></div>');
|
||||
|
||||
// Výběr
|
||||
document.write('<div class="policko-vyber">' +
|
||||
'<div class="vyber" id="pozice_vyber"></div></div>');
|
||||
|
||||
// Maska města - rychlejší řešení, než :hover
|
||||
document.write('<div class="maska">');
|
||||
zapis_strukturu(function(x, y){ return '<div '+
|
||||
'onmouseover="return mesto.mys.pres(event,{x:'+x+',y:'+y+'});" ' +
|
||||
'onmouseout="return mesto.mys.pryc(event,{x:'+x+',y:'+y+'});" '+
|
||||
'onmousedown="return mesto.mys.stisk(event,{x:'+x+',y:'+y+'});" '+
|
||||
'onmouseup="return mesto.mys.pust(event,{x:'+x+',y:'+y+'});" '+
|
||||
'></div>' });
|
||||
document.write('</div>');
|
||||
|
||||
// Konec
|
||||
document.write('</div>');
|
||||
document.write('</div>');
|
||||
|
||||
// ===========================================================================
|
||||
// =~ Základní nastavení ~====================================================
|
||||
|
||||
mesto.pozice_karla( karel.pozice );
|
||||
mesto.orientace_karla( karel.smer );
|
||||
mesto.pozice_domova( domov.pozice );
|
||||