KarelPasGtk
-----------------


Rozsireni Pascalu o prikazy programovaciho jazyka Karel.
Programovaci jazyk Karel je urcen k vyuce programovani. 
Pomoci prikazu krok, vlevoVbok ... ridime pohyb robota Karla.
Oproti klasickym verzim Karla je zde mnoho dalsich moznosti:
vkladani obrazku, ovladani z klavesnice, vice "Karlu" ...
 
Jednoduchy editor qek umoznuje z menu vkladat prikazy Karla 
a hned primo spoustet napsane programy.

Existuje ve verzi pro Linux nebo pro M$ Win32. 



POZADAVKY:

Linux, X windows, gtk2
(nebo M$ Win32 a dll knihovny gtk2)


a nainstalovany freepascal (verze 2.x): http://www.freepascal.org/



INSTALACE:

Rozbalit zip i s podadresarema k_units a examples.
Spustitelny soubor pro Linux je "qek", pro M$ Windows "qek.exe".
Ve stejnem adresari, jako je spustitelny soubor qek, musi byt 
adresar k_units. Pro prvni preklad vaseho karel-pascal programu
musi byt adresar k_units pristupny i na zapis.
V nastaveni programu je treba zadat celou cestu k freepascal 
kompilatoru ppc386. 

V Linuxu je doporuceno spoustet qek z xtermu, protoze program tam
vypisuje zpravy a spadly program odtud muze byt prerusen 
stisknutim ctrl-C.

Pro M$ Windows jsou jeste nutne dll knihovny gtk2. Mozno je stahnout 
z http://members.lycos.co.uk/alexv6/)




LOKALIZACE:

Pocestenou verzi ziskame nakopirovanim souboru qek.cfg a qekcs.help
do adresare, kde je spustitelny soubor qek, a souboru 
karelcs.pas do adresare k_units. 

Jine preklady muzeme ziskat podobne prelozeni souboru qek.cfg 
a vytvorenim programove jednotky s prelozenymi nazvy procedur. 



PRIKLADY:

V adresari examples najdeme nekolik prikladu programu.
1-maze: jednoduchy program na pruchod bludistem.
2-fill: vyplneni oblasti znackami pomoci rekurze.
3-allfunctions: ukazuje vsechny specialni funkce, 
  ovladani z klavesnice viz vypis na konsoli po spusteni programu
4-morekarels: priklad pohybu vice Karlu soucasne,
  Karel 6 se ovlada sipkama na klavesnici
5-snake: jednoducha hra had
6-pinguin: hra s pinguinem a lednimi medvedy, nekolik levelu.




UZITI:

Prikazy Karla a zakladni struktury Pascalu mohou byt vkladany z menu.
Struktury jako "if..then" nebo "while..do" mohou byt aplikovany 
na oznaceny blok.

Jednoduchy priklad:
menu:  Pascal->Zaklad programu,  Karel-zakladni->krok,  
Karel-zakladni->vlevoVbok,  Karel-zakladni->krok
tlacitko: ulozit>prelozit>spustit




Zakladni prikazy Karla:


kInit(sirka, vyska) 
 - nutno spusit vzdy na zacatku, nastavi  rozmery karlovy plochy.
   Sirka a vyska jsou pocty policek.

krok, vlevoVbok, vpravoVbok  
 - posun a otaceni robota Karla 

poloz, zvedni  
 - robot Karel pod sebe polozi (zvedne) znacku

zed, znacka 
 - podminky zda je pred Karlem zed nebo pod nim znacka

sever, zapad ... 
 - podminky jakym smerem je Karel natocen




Dalsi prikazy:


krokNaZed 
 - Karel vstoupi na policko, kde je zed
 
stavZed, zbotZed 
 - Karel po sebe umisti (zrusi) zed.

naZdi 
 - podminka zda je pod Karlem zed

ven 
 - podminka jestli je pred Karlem okraj plochy (podminka zed
      nerozlisi okraj plochy a zdi uvnitr)
      
klavesa 
 - funkce ktera vraci stisknutou klavesu. 
         napr. 'a' 'X' nebo ' ' 
	 krome klaves zastoupenych obycejnymi znaky 
	 na klavesu Enter vraci retezec 'enter'
	 na Esc vraci retezec 'Esc' 
         a na sipky 'up' 'down' 'left' 'right'
	 
cekej 
- ceka na stisk klavesy

kExit 
 - ukonci program 
 
rucniRizeni 
 - umozni pohybovat Karlem pomoci klaves, umistovat znacky a zdi 
 
ulozVse('jmenoSouboru') 
 - ulozi vsechno do souboru, zdi znacky,  pouzite obrazky... 
 
nahrajVse('jmenoSouboru') 
 - nacte vsecho
 
krestart 
 - nastavi vse na hodnoty jako po spusteni Karla
 
sumMarks, sumWalls 
 - vraci pocet vsech polozenych znacek, zdi
 
kSetxy(x,y) kSetdir(dir) 
 - primo nastavuje polohu a smer Karla.

kdialog('text') 
 - zobrazi dialogove okno. Konci-li text na '?'
   pak v dialogu budou dve tlacitka [Ano] a [Ne] po stisknuti [Ano]
   vrati funkce true. 
   napr.: if kdialog('co stisknes?') then writeln('stisk jsi ano');
   Kdyz text nekonci na '?' zobrazi se jen tlacitko [Ok]




Rychlost Karla:


kQuick 
 - nastavi maximalni rychlost pohybu Karla 
 
KNormal 
 - nastavi normalni rychlost

Rychlost Karla je mozne presneji nastavovat pomoci promenych:
kDelay - doba trvani jednoho kroku priblizne v 1/100 s
kMinisteps - pocet kroku v animaci presunu Karla o jedno policko



Prikazy pro praci s obrazky:


Vsechny obrazky nusi byt ve formatu xpm (na vytvoreni pouzijte gimp
nebo prevedte jinym programem, ktery umi xpm format).
Obrazky by mely byt ctvercove (krome obrazku pozadi). Mohou mit
i trochu jiny rozmer nez 30x30 (rozmer jednoho policka).

background('jmenoSouboru') 
 - zobrazi na pozadi obrazek.
background('RRRGGGBBB') 
 - vyplni pozadi barvou napr. background('999000000'); je cervena
 
drawpic('jmenoSouboru') 
 - Karel pod sebe nakresli obrazek 

loadWall('jmenoSouboru')
 - nacte obrazek zdi, ktery bude vykreslovan
  pri dalsich pouziti procedury stavZed 
  
loadMarks('xpic') 
 - nacte soubory xpic1.xpm, xpic2.xpm ... xpic9.xpm, xpicX.xpm,
   ktere budou pouzity pri pokladani znacek pro znazorneni 
   1, 2 ... 9 a vice znacek
   
loadKarel('xpic') 
 - nacte soubory xpicN.xpm, xpicE.xpm, xpicS.xpm
   a xpicW.xpm a ty pouzije pro zobrazeni Karla v ruznych smerech.




Prace s vice Karly:


Je k dispozici 7 Karlu s cisly 0,1,2,3,4,5,6

kSwitch(k) 
 - prepina mezi ovladanim jednotlivych Karlu

KShow, kHide 
 - ukaze nebo skryje Karla

isVisible 
 - je-li aktivni Karel viditelny

isKarel(k) 
 - podminka je li na pozici aktivniho Karla Karel cislo k

Aby se vsichni Karlove presunovali soucasne je nutne nejdrve
nastavit promenou kAutoexecute na false. Potom vsechny karlovy
prikazy se nebudou ihned zobrazovat, ale zobrazi se az pri zavolani
procedury kExecute.






LICENCE:

(c) 2004-2005 Jirka Bubenicek  - hebrak@yahoo.com 
GNU GENERAL PUBLIC LICENSE
