home *** CD-ROM | disk | FTP | other *** search
Text File | 2002-09-26 | 121.3 KB | 3,113 lines |
- SGPC 5.05 034#000001035 3.08.2002 16:19:34 StructNo47 47
-
- # include <sgpbalt.h>
-
- // globální prom╪nné
- float pesec = 1.0, // hodnoty figur
- jezdec = 3.25,
- strelec = 3.5,
- vez = 5.0,
- dama = 9.0,
- kral = 1000.0,
- pole = 0.0000001, // hodnota volného políƒka τachovnice pro poziƒní ocen╪ní
- check = 0.001, // hodnota τachu
- placek = 0.00001; // hodnota pole pro centralizaci figur
- typedef int RosadaType[4]; // stav roτád
- typedef struct { // záznam tahu
- double h; // hodnota tahu
- int x1,y1,x2,y2; // odkud kam
- int z,k,s,p, // sebraná figurka, útoƒící figurka, τach, typ p²em╪ny
- dest; // urƒení poƒáteƒní destinace figurky ve zkrácené notaci
- RosadaType ros; // zm╪ny roτád
- } TahType;
- typedef int Sachovnice[12][12]; // matrice pro τachovnici s okrajem
- Sachovnice s,p; // základní a pomocná τachovnice (nap². pro náhled)
- RosadaType rosada; // stav roτád
- int n,ja, // hrრna tahu: 1,-1; "obracítko" toho, kdo hraje
- b,c, // bíl∞,ƒern∞ - ƒlov╪k/poƒítaƒ
- bz,cz, // záloºní hodnoty pro vyhledávaƒ
- i,ii,iii,iv,m, // pomocné
- x,y, //pomocné - i mínusové hodnoty kvàli okrajàm τachovnice
- h, // aktuální hloubka propoƒítávání
- z,o, // pomocné
- zajate[2][16], // zajaté figurky
- konec = 0, // ukonƒovací prom╪nná
- x1,y1,x2,y2, // pomocné
- tleve,tprave, // pro myτ
- mod, // mód programu (Hra/Editor pozic)
- k, // klávesa
- ox,oy, // znaƒení p²i táhnutí
- matpat, // indikace matu/patu
- smaz, // po²adavek na smazání celé plochy
- posun,misto, // ...pro pohyb v okn╪ otev²ení souboru
- delka,pozice, // délka a pozice v partiá²i
- ok, // indikace správnosti posledního tahu
- bs,cs, // stav τachu pro bílého (bs) a ƒerného (cs)
- xx,yy,xi,yi; // pomocné
- char* tah; // tah hráƒe
- int skoc; // skok protivníkova kamene
- struct {
- int abs; // hodnota posledního tahu není provizorní (je absolutní)
- TahType nejlepsi,posledni; // informace o v∞znamn∞ch tazích
- int x,y,z; // informace o posledním tahu
- } v[11]; // varianta (sled optimálních tahà)
- TahType nejtah; // záznam nejlepτího tahu
- TahType partiar[1000]; // seznam vτech tahà (max. 1000)
- long count; // poƒet koncov∞ch uzlà
- float ctab[8][8]; // centralizaƒní tabulka
- TypSoubor ct, // soubor s centralizaƒní tabulkou
- cfg, // soubor s konfigurací
- txt, // textov∞ soubor (PGN,POS,LNG)
- kom; // komunikaƒní soubor (KOM)
- Typ¼as cas_of,cas_f,cas_o,cas,cas_b,cas_c; // ƒasové prom╪nné
- float f,fx,fy; // posun v osách p²i automatické animaci
- char px,py,zn; // pomocné (nap². sou²adnice u τachovnice)
- string str,obsah[512],adresar; // pomocné (nap². otevírání souborà)
- TypPoloºkaAdresá²e pa;
- TypAnimP²edm╪t kamen; // ..pro animaci kamene
- long limit, // ƒasové omezení hráƒe v sekundách
- l; // pomocné
- struct {
- int delka;
- string nazev,nabidka[17];
- } vyber[2][9]; // [0][n] - menu, [1][n] - konfigurace
- int kon[41]; // nastavení programu, které je moºné uloºit
- char ch; // pomocné
- string pgn[12]; // PGN informace
- TypDatum datum; // datum pro zadání ƒasu do informaƒní hlaviƒky
- struct {
- int R,G,B;
- } paleta[15]; // paleta pro úvodní rozsv╪tlení obrazu
- int R,G,B; // pomocné poloºky palety
-
- /////////////////////
- // Pomocné definice
- //
-
- #define NE 0
- #define ANO 1
-
- #define ABS(x) ((x)>0?(x):-(x))
-
- #define __CYKLUS(N) __Cyklus(1,N);__Cyklus(0,N); //Hlava cyklu
- #define __MPVC_ 100 //Maximální poƒet vno²en∞ch cyklà
-
- int __Cyklus( int Nov∞, int Poƒet )
- //Nov∞ > 0: Otev²ení nového cyklu s N opakováními (vƒetn╪ 0)
- //Nov∞ = 0: Dalτí pràchod cyklem
- //Nov∞ < 0: P²edƒasné ukonƒení cyklu
- { static int I[__MPVC_];
- static int i = -1;
- if( Nov∞ > 0 )
- { if( ++i >= __MPVC_)
- { TxtPiτⁿet╪zec("P²íliτ mnoho vno²en∞ch cyklà");
- while(1) {Tón(1000);};
- }else I[i]=Poƒet;
- }else if( Nov∞ == 0 )
- { if(--I[i]<0){ i--; return(0);}
- else return(1);
- }else return(-(i--)); //Vrací zápornou aktuální hloubku vno²ení
- } //Cyklus
-
- void ¼ekejNaReakci(void)
- //¼eká na sitsk klávesy nebo tlaƒítka myτi
- { VyprázdniFrontuKláves();
- MyτVyprázdniFrontuUdálostí();
- ¼ekej(NaKlávesu|NaMyτ);
- VyprázdniFrontuKláves();
- MyτVyprázdniFrontuUdálostí();
- } //¼ekejNaReakci
-
- long ¥¼ti¼íslo ( char* Text )
- { long Vrátit = 0;
- GrNastavPozici(272, 0);
- Gr¼tiL¼íslo(Text,Vrátit,8,1,0xe);
- GrNastavPozici(272, 0);
- GrPiτⁿet╪zec( " " );
- return Vrátit;
- } //¥¼ti¼íslo
-
- long BaltEmuluj( char* Text )
- { long Vrátit = 0;
- int Klávesa;
- int Konec = 0;
- TypP²edm╪t P²edm╪t=1;
- VyprázdniFrontuKláves();
- GrNastavBarvy( 0x7 ); GrSmaºOkno();
- GrPiτⁿet╪zec( Text );
- Tón(1000); ¼ekej(10); VypniTón();
- while (!Konec)
- { int p;
- GrNastavPozici(0, GrV∞τkaZnaku);
- GrPiτⁿet╪zec( "ⁿá: "); GrPiτL¼íslo( PoziceBaltazaraY(), 2 );
- GrPiτⁿet╪zec( ", Sl: " ); GrPiτL¼íslo( PoziceBaltazaraX(), 2 );
- GrPiτⁿet╪zec( ", Sm: " );
- int s=Sm╪rBaltazara();
- GrPiτⁿet╪zec( s==V∞chod ? "V∞chod" :
- s==Jih ? "Jih " :
- s==Západ ? "Západ " :
- "Sever " );
- GrPiτⁿet╪zec( ", Ba: " ); NastavBarvu¼arování( p=NastavBarvu¼arování(0));
- GrPiτL¼íslo( p, 2 );
- GrPiτⁿet╪zec( ", Ry: " ); RychlostBaltazara(p = RychlostBaltazara(0));
- GrPiτL¼íslo( p, 2 );
- switch ¼tiKlávesuZFrontyS¼ekáním()
- { case KlDoleva: VlevoVbok(); break;
- case KlDoprava: VpravoVbok(); break;
- case KlNahoru: Popojdi(1); break;
- case KlDolà: ¼aruj(Baltedit()); break;
- case KlIns: Vrátit = ¥¼ti¼íslo( "¼íslo: " ); break;
- case 'B':
- case 'b': NastavBarvu¼arování( ¥¼ti¼íslo("Barva: ") ); break;
- case 'C':
- case 'c': ¼aruj(¼tverec); break;
- case 'R':
- case 'r': RychlostBaltazara( ¥¼ti¼íslo("Rychlost: ") ); break;
- case KlEnter: Konec = 1; break;
- } //switch
- } //while
- GrNastavBarvy( 0x77 ); GrSmaºOkno();
- return Vrátit;
- } //BaltEmuluj
-
-
- ///////////////////
- // Globální makra
- //
- -o1-Globals ----------------------------------------------------------------
- 0 ;prom╪nné
- ;globální prom╪nné (jsou definovány v globálních definicích Ctrl+G):
- ;prom╪nné celoƒíselné: gA,gB,gC,gD,gE,gF,gG,gH,gI,gJ,gKlávesa;
- ;dalτí p²eddefinované globální prom╪nné mají vºdy p²edponu g..
- ;a jejich názvy jsou shodné xaverov lokálními prom╪nn∞mi definovan∞mi níºe,
- ;nap². gD¼íslo1, gⁿet╪zec atd.
- ;lokální prom╪nné:
- ;prom╪nné celoƒíselné:
- int a,b,c,d,e,f,g,h,i,j,Klávesa, //rozsah -32768..32767
- I¼íslo1,I¼íslo2,I¼íslo3,PàvBarvy;
- ;prom╪nné reálné:
- double D¼íslo1,D¼íslo2,D¼íslo3; //rozsah 5.0E-324..1.7E308
- ;prom╪nná znak:
- char Znak;
- ;prom╪nná ²et╪zec:
- string ⁿet╪zec;
- [ ;vytvo² Baltazaràv grafick∞ prostor
- Vytvo²Prostor(); MyτZaƒátekObsluhy();
- ] ;zruτ Baltazaràv grafick∞ prostor
- MyτKonecObsluhy(); ZruτProstor();
- a Klávesa= ¼tiKlávesuZFronty();
- b GrNastavBarvuPop²edí /* Partie */
- c ¼aruj(¼tverec);
- d Gr¼tiZnak("?",Znak,1,0x07); /* edit ano, ƒerná/sv.τedá*/
- ╨ return BaltEmuluj("Hodnota?");
- e BezObláƒku();
- f VyprázdniFrontuKláves();
- g Gr¼tiSⁿet╪zec("?",ⁿet╪zec,40,1,0x3f); /*40zn, edit ano, modrá/bílá */
- h Gr¼tiI¼íslo("?",I¼íslo1,6,0,0x0e); /* 6zn, edit ne, ƒerná/ºlutá */
- i Gr¼tiD¼íslo("?",D¼íslo1,20,1,0x0f); /*20zn, edit ne, ƒerná/bílá */
- j GrPiτZnak(Znak);
- k Klávesa= ¼tiKlávesuZFrontyS¼ekáním();
- ê BaltEmuluj("STOP");
- m ;vypiτ ⁿet╪zec do grafického okénka
- PàvBarvy=GrNastavBarvy(Modrá<<4|ªlutá); /*ºlutá na modré */
- GrPiτⁿet╪zec(ⁿet╪zec); /*vypíτe obsah prom╪nné ⁿet╪zec*/
- GrNastavBarvy(PàvBarvy); /*nastaví pàvodní barvy */
- n Neviditeln∞();
- o SObláƒkem();
- p GrNastavPozici /* Partie */
- q GrPiτL¼íslo(I¼íslo1,-1); /* -1 = nejkratτí v∞pis */
- r VpravoVbok();
- t P²epniNaText();
- u GrPiτD¼íslo(D¼íslo1,10,2); /*10 ƒíslic, z toho 2 desetinné*/
- v Viditeln∞();
- w ;ƒekej na stisk klávesy nebo tlaƒítka myτi
- ¼ekejNaReakci();
- x Skryj();
- y Odhal();
- z ;ƒelem vzad
- VlevoVbok(); VlevoVbok();
- C ¼aruj /* C:(p²edm╪t)! 1-150 */
- ╤ return BaltEmuluj /* ╤:("Volno")! "Test" */
- K GrKresliP²edm╪ty /* Partie */
- L NaƒtiScénu /* L:("soubor")! "c:\\pavel\\soubor.s00" */
- ¥ BaltEmuluj /* ¥:("Text")! "Test" */
- N Náhodn╪¼aruj /* N:(p²edm╪t)! 1-150 */
- P Popojdi /* P:(poƒet_polí)! 0-14 */
- R RychlostBaltazara /* R:(rychlost)! 0-9 */
- S UloºScénu /* S:("soubor")! "c:\\pavel\\soubor.s00" */
- W ¼ekej /* W:(milisekund)! 0-32000 */
- X ¼arujNaPozici /* X:(p²edm╪t,x,y)! 1-150, 1-15, 1-10 */
- -c1-Globals ---- (? lze pouºít jako náhrada pouze pro /,*,+) -----------------
- ?n PràchodnostP²edm╪tuP²edB() Je 0
- ?p PràchodnostP²edm╪tuP²edB() Je 1
- ?B Barva¼tverceP²edB() /* Je, Není, <, >, <= ,>= */
- ?P P²edm╪tP²edB() /* Je, Není, <, >, <= ,>= */
- ?S Sm╪rBaltazara() /* Je, Není, <, >, <= ,>= */
- \b Barva¼tverceP²edB()??
- \p P²edm╪tP²edB()??
- \x Sm╪rBaltazara()??
- \C case
- #C ; n-krát #C:(5) 5₧
- __CYKLUS
- #A ;opakuj vzestupn╪ pro prom╪nnou od,do,krok #A:(i,2,10,2) i=2,4..10
- OdDoKrok
- #D ;opakuj sestupn╪ pro prom╪nnou od,do,krok #D:(i,10,2,2) i=10,8..2
- OdDolàDoKrok
- #M ;opakuj n-krát sestupn╪ pro prom╪nnou #M:(i,8) (8x) i=7,6..0
- DolàDo0
- #N ;opakuj n-krát vzestupn╪ pro prom╪nnou #N:(i,8) (8x) i=0,1..7
- Od0
- ===Globals ------------------------------------------------------------------
- /*-hf(*/
- /*-hf-*/
- void Konfig(int typ) // práce s konfiguraƒními soubory
- /*-hf-*/;
- void FishStop( void ) // zastaví stopky a p²iƒte ƒas táhnoucímu hráƒi
- /*-hf-*/;
- void FishP²iƒti(int komu) // p²iƒítá ƒas a vykresluje v∞poƒetní informace
- /*-hf-*/;
- void Fisher(int x) // vykreslí ruƒiƒky/displej Fisherov∞ch hodin
- /*-hf-*/;
- void Klik(int fish,int pockat) // real-time práce s myτí a klávesnicí
- /*-hf-*/;
- int Muj(int cislo, int diagonalne) // souƒást funkce µach
- /*-hf-*/;
- void µach( void ) // naplní prom╪nné bs a cs informací o stavu τachu
- /*-hf-*/;
- void TahV╪ºí(int x, int y) // tah v╪ºí, ztráta práva na jednu roτádu
- /*-hf-*/;
- void TahKrálem( void ) // tah králem, ztráta práva roτády
- /*-hf-*/;
- void Táhni( void ) // provede nejlepτí nalezen∞ tah
- /*-hf-*/;
- void Vra£Roτády( void ) // nabytí práva roτády p²i vrácení tahu
- /*-hf-*/;
- void Vra£Tah( void ) // vrátí poslední zadan∞ tah
- /*-hf-*/;
- void DoPartiá²e( void ) // zápis do partiá²e a promítnutí následkà vzetí
- /*-hf-*/;
- void Potáhni(int X1,int Y1,int X2,int Y2) // souƒást funkce ZkusTah
- /*-hf-*/;
- int TestTahu(int x1,int y1,int x2,int y2) // test tahu pro uºivatele
- /*-hf-*/;
- void Skok(int max) // zm╪na sm╪ru figury po napadení cizí
- /*-hf-*/;
- void Vyno²ení( void ) // sníºení hloubky prohledávání v herním stromu
- /*-hf-*/;
- void Zano²ení( void ) // zv∞τení hloubky prohledávaní v herním stromu
- /*-hf-*/;
- void Test(int x,int y,int z) // soućst funkce VyhledejTah
- /*-hf-*/;
- void Obnovµachovnici( void ) // p²enese informace o stavu τachovnice ze zálohy
- /*-hf-*/;
- void OceσPozici(int pocitat) // ohdnotí danou pozici ƒíslem
- /*-hf-*/;
- void VyhledejTah(int maxhloubka, int pocitat) // vypoƒítá pokraƒování
- /*-hf-*/;
- int SrovnejTah(int t1,int t2) // porovná dva tahy partiá²e na shodnost
- /*-hf-*/;
- void Okno(int x1,int y1,int x2,int y2, int transp) // plastické okno
- /*-hf-*/;
- void Piτ(int px,int py,int pozadi,string text) // text se stínem, pop². pozadím
- /*-hf-*/;
- int Nabídka(int px,int py,int a, int b) // p²eddefinovaná nabídka
- /*-hf-*/;
- void LCD(int x, int y, long cislo, int cif, int typ) // v∞stup údajà na displej
- /*-hf-*/;
- void Notes(string poznamka) // vypíτe poznámku k objektu pod kurzorem
- /*-hf-*/;
- string Txt(int index) // vypíτe hláτku ƒíslo 'index' aktuálním jazykem
- /*-hf-*/;
- void Popis( void ) // popis políƒka τachovnice (kámen+pozice)
- /*-hf-*/;
- void Tlaƒítko(int x,int y,string text,int stiskle) // vykreslí talƒítko
- /*-hf-*/;
- void Volba(int x, int y, int a,int b) // okénko s nastavením
- /*-hf-*/;
- void MenuProst²edí( void ) // okno nastavení prost²edí
- /*-hf-*/;
- void MenuHledání( void ) // podrobné nastavení vyhledávacího algoritmu
- /*-hf-*/;
- void MenuJiné( void ) // nastavení myτi, animací
- /*-hf-*/;
- int Hláτka(int typ, string text) // informaƒní/varovné/dotazovací okno
- /*-hf-*/;
- string Otev²ít(string ext) // otev²e soubor s p²iponou ext
- /*-hf-*/;
- void Uloºit(string ext) // uloºí zadan∞ soubor
- /*-hf-*/;
- void ¼istiµachovnici( void ) // vyprázdní τachovnici a nastaví její okraje
- /*-hf-*/;
- void Inicializace( void ) // deklarace prom╪nn∞ch
- /*-hf-*/;
- void NabídkaPartie( void ) // nabídka práce s partií, uonƒení programu
- /*-hf-*/;
- void NabídkaVolby( void ) // nabídka sociálních funkcí, editace, tahy
- /*-hf-*/;
- void NabídkaNastavení( void ) // nabídka nastavení uºivatelského rozhraní
- /*-hf-*/;
- void NaƒtiJazyk( void ) // naƒte jazykov∞ balíƒek (CZ+ENG) z LNG souboru
- /*-hf-*/;
- void NabídkaZobrazení( void ) // nabídka pro grafick∞ interface
- /*-hf-*/;
- void NabídkaInformace( void ) // nabídka vyvolá informaƒní okna
- /*-hf-*/;
- void RozvinovacíNabídky( void ) // veτkeré volby z horního panelu
- /*-hf-*/;
- void main( void ) // ░░▒▒▓▓██ PARTIE V1.01 (public domain) ██▓▓▒▒░░
- /*-hf)*/;
- ;-h---------------------------------------------------------------------------
- void Konfig(int typ) // práce s konfiguraƒními soubory
- -s--Konfig ■ 16 -2 -8 3
- ___________Konfig__________
- ___otev²ení__ ƒtení/Zápis zav²ení
- \a \b \c #1 3!
- cfg~zápis │ def~ƒtení __zápis?__
- a! │ c! /:typ==0 /
- │ ano ne
- cfg~ƒtení 1! 2!
- b!
- -o1----------------------SEZNAM OPERAC╓------------TENTO ⁿ╡DEK NEM╖NIT!-------
- a cfg=SouborOtev²i("*\\partie.cfg",SouborP²ístupZápis|SouborP²ístupBinární);
- b cfg=SouborOtev²i("*\\partie.cfg",SouborP²ístup¼tení|SouborP²ístupBinární);
- c cfg=SouborOtev²i("*\\partie.def",SouborP²ístup¼tení|SouborP²ístupBinární);
- 1 ;naƒtení nastavení do buσky pole
- SouborPiτL¼íslo(cfg,kon[i],4);
- SouborPiτNov∞ⁿádek(cfg);
- 2 ;zápis buσky pole do konfiguraƒního souboru
- Soubor¼tiI¼íslo(cfg,kon[i]);
- Soubor¼tiNov∞ⁿádek(cfg);
- 3 SouborZav²i(cfg);
- -c1----------------------SEZNAM PODM╓NEK-----------TENTO ⁿ╡DEK NEM╖NIT!-------
- \a typ ?? case 0:
- \b case 1:
- \c case 2:
- #1 i=0; i<=40; i++
- =SP---------------------------------------------------------------------------
-
- ;-h---------------------------------------------------------------------------
- void FishStop( void ) // zastaví stopky a p²iƒte ƒas táhnoucímu hráƒi
- -s--FishStop ■ 4 -2 -15 3
- __________FishStop______
- 1! _____komu~p²iƒíst?_____
- /:n==1 /
- bílému ƒernému
- a! b!
- -o1----------------------SEZNAM OPERAC╓------------TENTO ⁿ╡DEK NEM╖NIT!-------
- 1 ;zjiτt╪ní nam╪²eného ƒasu a zastavení stopek
- if (partiar[delka].s>1) StopkyNuluj();
- Stopky(cas_f);StopkyStop();
- a ;posun ƒasu bílého
- ¼asPosuσ(cas_b,cas_f.Hodiny,cas_f.Minuty,cas_f.Sekundy,cas_f.Setiny);
- b ;posun ƒasu ƒerného
- ¼asPosuσ(cas_c,cas_f.Hodiny,cas_f.Minuty,cas_f.Sekundy,cas_f.Setiny);
- -c1----------------------SEZNAM PODM╓NEK-----------TENTO ⁿ╡DEK NEM╖NIT!-------
- =SP---------------------------------------------------------------------------
-
- ;-h---------------------------------------------------------------------------
- void FishP²iƒti(int komu) // p²iƒítá ƒas a vykresluje v∞poƒetní informace
- -s--FishP²iƒti ■ 24 -2 -6 3
- ___FishP²iƒti__
- :Stopky(cas) p²iƒtení~ƒasu
- /a
- __:MyτSchovejKurzor()___
- │ │ │
- zpracování~na~hodiny │ konec
- /:kon[21]==1 │ :MyτZobrazKurzor()
- _______│______ │ :cas_o=cas
- p²iƒtení vykreslení │
- :cas_of=cas_o :Fisher(x1) │
- :cas_f=cas │
- komu~p²iƒíst? │
- /:komu==1 / │
- bílého~ƒas ƒerného~ƒas │
- a! b! │
- v∞stup~na~displej
- /b
- :LCD(318,435,count,8,kon[8])
- -o1----------------------SEZNAM OPERAC╓------------TENTO ⁿ╡DEK NEM╖NIT!-------
- a ;bílého ƒas se p²iƒte
- x1=119;
- ¼asPosuσ(cas_of,cas_b.Hodiny,cas_b.Minuty,cas_b.Sekundy,cas_b.Setiny);
- ¼asPosuσ(cas_f,cas_b.Hodiny,cas_b.Minuty,cas_b.Sekundy,cas_b.Setiny);
- b ;ƒerného ƒas se p²iƒte
- x1=236;
- ¼asPosuσ(cas_of,cas_c.Hodiny,cas_c.Minuty,cas_c.Sekundy,cas_c.Setiny);
- ¼asPosuσ(cas_f,cas_c.Hodiny,cas_c.Minuty,cas_c.Sekundy,cas_c.Setiny);
- -c1----------------------SEZNAM PODM╓NEK-----------TENTO ⁿ╡DEK NEM╖NIT!-------
- /a (cas.Sekundy!=cas_o.Sekundy) && (partiar[delka].s<2)
- /b (kon[24]==1) && (((komu==1) && (b==0)) || ((komu==-1) && (c==0)))
- =SP---------------------------------------------------------------------------
-
- ;-h---------------------------------------------------------------------------
- void Fisher(int x) // vykreslí ruƒiƒky/displej Fisherov∞ch hodin
- -s--Fisher ■ 6 -1 20 3
- Fisher
- ________ruƒiƒky/displej_________
- /:kon[5]==0 /
- ruƒiƒky _________________displej__________________
- p²emazání │ _umíst╪ní_ _____typ_____ zobrazení
- p:(0)! │ /:x==119 / /:kon[5]==1 / :LCD(99,y,cas_f.Minuty,2,o)
- :ii=30 │ :y=396 :y=431 :o=1 :o=0 :LCD(181,y,cas_f.Sekundy,2,o)
- p²emazání │
- #1 │
- ƒárka │
- 1! │
- vykreslení
- #2
- ____________│_____________
- ___________typy~ruƒiƒek__________ ruƒiƒka
- \1 \2 \3 1!
- :i=cas_f.Hodiny :i=cas_f.Minuty :i=cas_f.Sekundy
- :ii=15 :ii=25 :ii=30
- p:(kon[17])! p:(kon[16])! p:(kon[15])!
- -o1----------------------SEZNAM OPERAC╓------------TENTO ⁿ╡DEK NEM╖NIT!-------
- 1 ;vykreslí ruƒku o délce ii v "úhlu" i
- GrKresliLinku(x,425,
- integer(x+ii*cos((6*i-90)*Pí/180)),
- integer(425+ii*sin((6*i-90)*Pí/180)));
- p GrNastavBarvuPop²edí
- -c1----------------------SEZNAM PODM╓NEK-----------TENTO ⁿ╡DEK NEM╖NIT!-------
- #1 i=0; i<=60; i++
- #2 z=1; z<=3; z++
- \1 z ?? case 1:
- \2 case 2:
- \3 case 3:
- =SP---------------------------------------------------------------------------
-
- ;-h---------------------------------------------------------------------------
- void Klik(int fish,int pockat) // real-time práce s myτí a klávesnicí
- -s--Klik ■ 37 -2 2 3
- Klik
- 1!
- ____________________│_____________________
- zavedení~limitu ƒasomíra _________________klik________________
- /a /b ƒekání poƒkat? __zakonƒení___
- _____komu?______ │ +1 /:pockat==1 zastavení~stopek klávesa?
- /:n==1 / 2! ___│____ ano /b /d /
- :limit=kon[36] :limit=kon[37] │ │ +2 :FishStop() ano ne
- "pozice limit 'pozice /c 5! 6!
- 3! /b hraje~dalτí
- :FishP²iƒti(n) :n=n*-1
- /c :delka=-1
- ƒas~vyprτel :pozice=-1
- 4!
- -o1----------------------SEZNAM OPERAC╓------------TENTO ⁿ╡DEK NEM╖NIT!-------
- 1 ;zahájení práce s myτí
- MyτZobrazKurzor();
- MyτZm╪σGrKurzor(13);
- MyτVyprázdniFrontuUdálostí();
- VyprázdniFrontuKláves();
- 2 ;spuτt╪ní stopek
- StopkyNuluj();StopkyStart();
- 3 ;urƒení pozice myτi
- Myτ¼tiUdálost(gMyτUdálost);
- x=gMyτUdálost.X;
- y=gMyτUdálost.Y;
- 4 ;stop cyklu
- break;
- 5 ;naƒtení klávesy
- MyτSchovejKurzor();
- k=¼tiKlávesuZFronty();
- tleve=0;tprave=0;
- 6 ;naƒtení tlaƒítek
- k=KlNení;
- if (gMyτUdálost.Typ==MyτUdálostLevéTlDolà) tleve=1; else tleve=0;
- if (gMyτUdálost.Typ==MyτUdálostPravéTlDolà) tprave=1; else tprave=0;
- MyτSchovejKurzor();if (pockat==0) ¼ekej(kon[38]);
- -c1----------------------SEZNAM PODM╓NEK-----------TENTO ⁿ╡DEK NEM╖NIT!-------
- /a (fish==1) && (kon[33]==2)
- /b (fish==1) && (matpat==0)
- /c (kon[33]==2) && (cas.Hodiny*3600+cas.Minuty*60+cas.Sekundy>limit)
- /d BylaStisknutaKlávesa()==1
- +1 (gMyτUdálost.Tlaƒítka==0) && (BylaStisknutaKlávesa()==0)
- +2 (gMyτUdálost.Typ!=4) && (BylaStisknutaKlávesa()==0)
- =SP---------------------------------------------------------------------------
-
- ;-h---------------------------------------------------------------------------
- int Muj(int cislo, int diagonalne) // souƒást funkce µach
- -s--Muj ■ 2 -2 0 3
- __________Muj___________
- __moje~figurka/král?_ konec
- /a / :return(0)
- ano ________ne_______
- :return(1) /:diagonalne==1 /
- digonální~test lineární~test
- /b /c
- :return(1) :return(1)
- -o1----------------------SEZNAM OPERAC╓------------TENTO ⁿ╡DEK NEM╖NIT!-------
- -c1----------------------SEZNAM PODM╓NEK-----------TENTO ⁿ╡DEK NEM╖NIT!-------
- /a (cislo*o<0) || (abs(cislo)==6)
- /b (abs(cislo)==1) || (abs(cislo)==2) || (abs(cislo)==4)
- /c (abs(cislo)==1) || (abs(cislo)==2) || (abs(cislo)==3)
- =SP---------------------------------------------------------------------------
-
- ;-h---------------------------------------------------------------------------
- void µach( void ) // naplní prom╪nné bs a cs informací o stavu τachu
- -s--µach ■ 112 22 0 3
- µach
- :bs=0
- :cs=0
- procházení~τachovnice
- #1
- x~a~y
- #2
- p²ítomen~král?
- /:abs(s[x][y])==6
- ____ano____
- __obracítko__ │
- /:s[x][y]<0 / │
- :o=1 :o=-1 │
- │
- ____________rychlé~vylouƒení_________
- /1 /
- vylouƒení vylouƒení~v~osmi~sm╪rech
- __"koho?_ #3
- ___│____ :break _______parametry+test___
- /:o==1 / ___________parametry_____________ │
- :cs=1 :bs=1 \1 \2 \3 \4 \5 \6 \7 \8 │
- :xi=-1 │ :xi=0 │ :xi=1 │ :xi=0 │ │
- :yi=-1/*0*/ │ :yi=-1 │ :yi=0 │ :yi=1 │ │
- │ │ │ │ │
- :xi=-1 :xi=1 :xi=1 :xi=-1 │
- :yi=-1 :yi=-1 :yi=1 :yi=1 │
- │
- prohledávací~cyklus
- ____________:i=1___________
- ____"podmínky_____ │
- _____pro~x______ │ │
- /:xi>0 / │ │
- :x1=(x+i*xi)<10 :x1=(x+i*xi)>1 │ │
- │ │
- _____pro~y______ │
- /:yi>0 / │
- :x2=(y+i*yi)<10 :x2=(y+i*yi)>1 │
- │
- cyklus
- *a
- ______│_______
- :iii=s[x+i*xi][y+i*yi] │
- /3 /2 │
- :i=9 'koho? zadání
- :i++
- 'podmínky
- -o1----------------------SEZNAM OPERAC╓------------TENTO ⁿ╡DEK NEM╖NIT!-------
- a ;prohledávací cyklus
- i=1;
- if (xi>0) x1=(x+i*xi)<10; else x1=(x+i*xi)>1;
- if (yi>0) y1=(y+i*yi)<10; else y1=(y+i*yi)>1;
- while (x1 || y1)
- {
- iii=s[x+i*xy][y+i*yi];
- if (Muj(iii,xi!=yi)==1) i=9; else
- if ((iii==3*o) || (iii==5*o))
- if (o==1) cs=1; else bs=1;
- i++;
- if (xi>0) x1=(x+i*xi)<10; else x1=(x+i*xi)>1;
- if (yi>0) y1=(y+i*yi)<10; else y1=(y+i*yi)>1;
- }
- -c1----------------------SEZNAM PODM╓NEK-----------TENTO ⁿ╡DEK NEM╖NIT!-------
- /1 (s[x-1][y+1*o]==1*o) ||
- (s[x+1][y+1*o]==1*o) ||
- (s[x-2][y-1]==2*o) ||
- (s[x-1][y-2]==2*o) ||
- (s[x+1][y-2]==2*o) ||
- (s[x+2][y-1]==2*o) ||
- (s[x+2][y+1]==2*o) ||
- (s[x+1][y+2]==2*o) ||
- (s[x-1][y+2]==2*o) ||
- (s[x-1][y-1]==6*o) ||
- (s[x][y-1]==6*o) ||
- (s[x+1][y-1]==6*o) ||
- (s[x+1][y]==6*o) ||
- (s[x+1][y+1]==6*o) ||
- (s[x][y+1]==6*o) ||
- (s[x-1][y+1]==6*o) ||
- (s[x-1][y]==6*o)
- /2 (((abs(xi)==abs(yi)) && ((iii==3*o) || (iii==5*o)))) ||
- (((abs(xi)!=abs(yi)) && ((iii==4*o) || (iii==5*o))))
- /3 Muj(iii,abs(xi)==abs(yi))==1
- #1 y=2; y<=9; y++
- #2 x=2; x<=9; x++
- #3 ii=1; ii<=8; ii++
- \1 ii ?? case 1:
- \2 case 2:
- \3 case 3:
- \4 case 4:
- \5 case 5:
- \6 case 6:
- \7 case 7:
- \8 case 8:
- *a x1 && x2
- =SP---------------------------------------------------------------------------
-
- ;-h---------------------------------------------------------------------------
- void TahV╪ºí(int x, int y) // tah v╪ºí, ztráta práva na jednu roτádu
- -s--TahV╪ºí ■ 4 -2 -6 3
- TahV╪ºí
- c!
- legální?
- /1
- ____ano_____
- /:n==1 /
- │ _______kam?______
- │ /:x==2 /:rosada[3]==0
- │ │ :i=3
- │ /:rosada[2]==0 a!
- │ :i=2
- │ a!
- │
- _______kam?______
- /:x==2 /:rosada[1]==0
- │ :i=1
- /:rosada[0]==0 a!
- :i=0
- a!
- -o1----------------------SEZNAM OPERAC╓------------TENTO ⁿ╡DEK NEM╖NIT!-------
- a ;zápis roτády
- v[h].posledni.ros[i]=1;
- rosada[i]=1;
- C ¼aruj /* C:(p²edm╪t)! 1-150 */
- c ;ƒiτt╪ní pole s právem na roτádu
- for (i=0; i<=3; i++) v[h].posledni.ros[i]=0;
- -c1----------------------SEZNAM PODM╓NEK-----------TENTO ⁿ╡DEK NEM╖NIT!-------
- /1 ((x==2) || (x==9)) && ((y==2) || (y==9))
- =SP---------------------------------------------------------------------------
-
- ;-h---------------------------------------------------------------------------
- void TahKrálem( void ) // tah králem, ztráta práva roτády
- -s--TahKrálem ■ 4 -2 -27 3
- TahKrálem
- c!
- na~tahu?
- /:n==1 /
- 0-1 2-3
- #1 #2
- │ │
- a! a!
- -o1----------------------SEZNAM OPERAC╓------------TENTO ⁿ╡DEK NEM╖NIT!-------
- a ;p²ehození roτády
- if (rosada[i]==0)
- {
- v[h].posledni.ros[i]=1;
- rosada[i]=1;
- }
- r VpravoVbok();
- c ;ƒiτt╪ní pole s právem na roτádu
- for (i=0; i<=3; i++) v[h].posledni.ros[i]=0;
- -c1----------------------SEZNAM PODM╓NEK-----------TENTO ⁿ╡DEK NEM╖NIT!-------
- #1 i=0; i<=1; i++
- #2 i=2; i<=3; i++
- =SP---------------------------------------------------------------------------
-
- ;-h---------------------------------------------------------------------------
- void Táhni( void ) // provede nejlepτí nalezen∞ tah
- -s--Táhni ■ 30 -2 -3 3
- Táhni
- lze~táhnout?
- /:x1>-2
- _________________tah_________________
- _záloha~figury__ vlastní~tah konec
- /:s[x2][y2]==0 / :s[x2][y2]=s[x1][y1] k!
- ne ano :s[x1][y1]=0 :n=n*-1
- :z=0 :z=s[x2][y2] :m=0
- :h=1
- speciální~tahy?
- \1 \4 \6
- p╪τec v╪º král
- 1! 4! 6!
- -o1----------------------SEZNAM OPERAC╓------------TENTO ⁿ╡DEK NEM╖NIT!-------
- 1 ;p²em╪na p╪τce
- if (v[1].nejlepsi.p!=0)
- {
- if (((n==1) && (b=0)) || ((n==-1) && (c=0)))
- m=5*n; else m=v[1].nejlepsi.p;
- s[x2][y2]=m;
- }
- 4 ;tah v╪ºí - ovlivní právo na roτádu
- TahV╪ºí(x1,y1);
- 6 ;tah králem - roτáda
- if (abs(x1-x2)==2)
- if ((x2<x1) &&
- (((n==1) && (rosada[0]==0)) || ((n==-1) && (rosada[2]==0))))
- {
- s[5][y1]=4*n;
- s[2][y1]=0;
- } else
- if ((((n==1) && (rosada[1]==0)) || ((n==-1) && (rosada[3]==0))))
- {
- s[7][y1]=4*n;
- s[9][y1]=0;
- }
- TahKrálem();
- k ;zápis do partiá²e
- µach();
- x1=v[1].nejlepsi.x1;
- y1=v[1].nejlepsi.y1;
- x2=v[1].nejlepsi.x2;
- y2=v[1].nejlepsi.y2;
- DoPartiá²e();
- -c1----------------------SEZNAM PODM╓NEK-----------TENTO ⁿ╡DEK NEM╖NIT!-------
- \1 abs(s[x2][y2]) ?? case 1:
- \4 case 4:
- \6 case 6:
- =SP---------------------------------------------------------------------------
-
- ;-h---------------------------------------------------------------------------
- void Vra£Roτády( void ) // nabytí práva roτády p²i vrácení tahu
- -s--Vra£Roτády ■ 9 -2 -24 3
- Vra£Roτády
- vτechny~strany
- #1
- zm╪nit?
- /1
- ano
- a!
- -o1----------------------SEZNAM OPERAC╓------------TENTO ⁿ╡DEK NEM╖NIT!-------
- a ;zisk práva roτády
- v[h].posledni.ros[i]=0;
- rosada[i]=0;
- -c1----------------------SEZNAM PODM╓NEK-----------TENTO ⁿ╡DEK NEM╖NIT!-------
- #1 i=0; i<=3; i++
- /1 v[h].posledni.ros[i]==1
- =SP---------------------------------------------------------------------------
-
- ;-h---------------------------------------------------------------------------
- void Vra£Tah( void ) // vrátí poslední zadan∞ tah
- -s--Vra£Tah ■ 4 -2 -12 3
- Vra£Tah
- 0a!
- ______________│________________
- p²em╪na? roτáda konec
- /p /r :Vra£Roτády()
- ano _______jaká?___
- :s[x1][y1]=n /:x2<x1 /
- velká malá
- v! m!
- -o1----------------------SEZNAM OPERAC╓------------TENTO ⁿ╡DEK NEM╖NIT!-------
- 0 ;prom╪nné
- x1=v[h].posledni.x1;
- y1=v[h].posledni.y1;
- x2=v[h].posledni.x2;
- y2=v[h].posledni.y2;
- a ;základní vrácení tahu
- ok=0;
- s[x1][y1]=s[x2][y2];
- s[x2][y2]=v[h].posledni.z;
- v ;dokonƒení vrácení velké roτády
- s[2][y1]=4*n;
- s[5][y1]=0;
- m ;dokonƒení vrácení malé roτády
- s[9][y1]=4*n;
- s[7][y1]=0;
- -c1----------------------SEZNAM PODM╓NEK-----------TENTO ⁿ╡DEK NEM╖NIT!-------
- /p v[h].posledni.p!=0
- /r (abs(s[x1][y1])==6) && (abs(x1-x2)==2)
- =SP---------------------------------------------------------------------------
-
- ;-h---------------------------------------------------------------------------
- void DoPartiá²e( void ) // zápis do partiá²e a promítnutí následkà vzetí
- -s--DoPartiá²e ■ 4 -2 0 3
- DoPartiá²e
- 0!
- ________________│_________________
- │ ___τach?____ skoƒeno? │
- │ /s / /z │
- │ ano │ ano │
- │ :partiar[delka].s=1 │ z! │
- │ ne │
- p²em╪na? :partiar[delka].s=0 │
- /:m==0 / │
- ne ano udání~destinace
- n! a! _____________:ii=0_____________
- poƒítání vyhodnocení
- __________typ~figurky__________ /:ii>0
- \2 \3 \4 \5 ano
- jezdec "st²elec "v╪º dáma :partiar[delka].dest=1
- /j #1 #2 'st²elec
- víc~jak~jeden "kontrola 'kontrola 'v╪º
- :ii++ c!
- -o1----------------------SEZNAM OPERAC╓------------TENTO ⁿ╡DEK NEM╖NIT!-------
- 0 ;prom╪nné
- if (pozice<delka) delka=pozice;
- delka++;pozice++;
- partiar[delka].x1=x1;
- partiar[delka].y1=y1;
- partiar[delka].x2=x2;
- partiar[delka].y2=y2;
- partiar[delka].z=z;
- partiar[delka].dest=0;
- for (i=0; i<=3; i++) partiar[delka].ros[i]=v[h].posledni.ros[i];
- n ;zápis táhnoucí figurky
- partiar[delka].k=abs(s[x2][y2]);
- a ;zápis p²em╪ny
- partiar[delka].k=1;
- partiar[delka].p=m;
- z ;p²idání zajaté figurky do seznamu
- i=0;
- if (z<0) ii=1; else ii=0;
- while (zajate[ii][i]!=0) i++;
- zajate[ii][i]=z;
- c ;hledací cyklus
- i=1;
- switch (iii)
- {
- case 1: xi=-1;yi=-1;break;
- case 2: xi=1;yi=-1;break;
- case 3: xi=1;yi=1;break;
- case 4: xi=-1;yi=1;break;
- case 5: xi=-1;yi=0;break;
- case 6: xi=0;yi=-1;break;
- case 7: xi=1;yi=0;break;
- case 8: xi=0;yi=1;
- }
- while (s[x2+i*xi][y2+i*yi]==0) i++;
- if (s[x2+i*xi][y2+i*yi]*n==3) ii++;
- -c1----------------------SEZNAM PODM╓NEK-----------TENTO ⁿ╡DEK NEM╖NIT!-------
- /s (bs==1) || (cs==1)
- /z (z!=0) && (z<7)
- /j (s[x2-2][y2-1]*n==2) || (s[x2-1][y2-2]*n==2) || (s[x2+1][y2-2]*n==2) ||
- (s[x2+2][y2-1]*n==2) || (s[x2+2][y2+1]*n==2) || (s[x2+1][y2+2]*n==2) ||
- (s[x2-1][y2+2]*n==2) || (s[x2-2][y2+1]*n==2)
- \2 s[x2][y2]*n ?? case 2:
- \3 case 3:
- \4 case 4:
- \5 case 5:
- #1 iii=1; iii<=4; iii++
- #2 iii=5; iii<=8; iii++
- =SP---------------------------------------------------------------------------
-
- ;-h---------------------------------------------------------------------------
- void Potáhni(int X1,int Y1,int X2,int Y2) // souƒást funkce ZkusTah
- -s--Potáhni ■ 29 -2 0 3
- Potáhni
- 0!
- ________│_________
- speciální~tahy má~táhnoucí~τach?
- \4 \6 __:µach()__
- v╪º král /s /
- :TahV╪ºí(X1,Y1) 6! ano :ok=1
- v! ne~-~táhne~ƒlov╪k?
- /c /
- _______│_______ ne
- ano~-~volba~figurky? zápis z!
- /f / d! │
- ano ne │
- f! :m=0 │
- ___________│___________
- __p²em╪na?_ taºeno~urƒit∞m~kamenem?
- /f / /t /
- ano ne ano ne
- p! :v[h].posledni.p=0 :skoc=0 /:v[h].posledni.z~Není~0
- :skoc=1
- -o1----------------------SEZNAM OPERAC╓------------TENTO ⁿ╡DEK NEM╖NIT!-------
- 0 ;zákládní posun figurky
- z=s[X2][Y2];
- s[X2][Y2]=s[X1][Y1];
- s[X1][Y1]=0;
- 6 ;dàsledek tahu králem (právo roτády)
- TahKrálem();
- if (abs(X1-X2)==2)
- if (n==1)
- {
- if (X2<X1)
- {
- s[5][9]=6;µach();
- if ((bs==0) && (cs==0))
- {
- ok=1;
- s[5][9]=4;s[2][9]=0;
- } else s[5][9]=0;
- } else
- {
- s[7][9]=6;µach();
- if ((bs==0) && (cs==0))
- {
- ok=1;
- s[7][9]=4;s[9][9]=0;
- } else s[7][9]=0;
- }
- } else
- {
- if (X2<X1)
- {
- s[5][2]=-6;µach();
- if ((bs==0) && (cs==0))
- {
- ok=1;
- s[5][2]=-4;s[2][2]=0;
- } else s[5][2]=0;
- } else
- {
- s[7][2]=-6;µach();
- if ((bs==0) && (cs==0))
- {
- ok=1;
- s[7][2]=-4;s[9][2]=0;
- } else s[6][2]=0;
- }
- }
- v ;vrácení tahu
- s[X1][Y1]=s[X2][Y2];
- s[X2][Y2]=z;
- Vra£Roτády();
- f ;v∞b╪r p²em╪ny p╪τce
- Okno(241,224,400,256,0);
- for (i=0; i<=3; i++)
- if (n==1)
- GrKresliP²edm╪t(kon[0]*15+(i+2),1,243+i*39,226); else
- GrKresliP²edm╪t(kon[1]*15+i+8,1,243+i*39,226);
- do Klik(1,1); while (!((x>242) && (y>225) && (x<399) && (y<255)));
- GrNastavBarvuPozadí(0);GrKresliVypln╪n∞Obdélník(241,224,400,256);
- m=((x-243)/39+2)*n;
- s[X2][Y2]=m;
- µach();
- d ;zápis do partiá²e
- x1=X1;y1=Y1;x2=X2;y2=Y2;
- DoPartiá²e();
- z ;zápis do varianty
- ok=1;
- v[h].posledni.h=0;
- v[h].posledni.x1=X1;
- v[h].posledni.y1=Y1;
- v[h].posledni.x2=X2;
- v[h].posledni.y2=Y2;
- v[h].posledni.z=z;
- v[h].abs=0;
- p ;automatická p²em╪na na dámu
- s[X2][Y2]=5*n;
- v[h].posledni.p=5*n;
- -c1----------------------SEZNAM PODM╓NEK-----------TENTO ⁿ╡DEK NEM╖NIT!-------
- /s ((n==1) && (bs==1)) || ((n==-1) && (cs==1))
- /c ((n==1) && (b==1)) || ((n==-1) && (c==1))
- /f (abs(s[X2][Y2])==1) && (((n==1) && (Y2==2)) || ((n==-1) && (Y2==9)))
- /t (abs(s[X2][Y2])==1) || (abs(s[X2][Y2])==2) || (abs(s[X2][Y2])==6)
- \4 abs(s[X2][Y2]) ?? case 4:
- \6 case 6:
- =SP---------------------------------------------------------------------------
-
- ;-h---------------------------------------------------------------------------
- int TestTahu(int x1,int y1,int x2,int y2) // test tahu pro uºivatele
- -s--TestTahu ■ 37 -2 2 3
- TestTahu
- :ok=0
- ___________________________│____________________________
- delτí~tah? základní~kontrola konec
- /l /t :return(ok)
- ano~kontrola ____________│________________
- l! ____individuální~kontrola_____ táhnout?
- \1 \2 \3 \4 \5 \6 /:ok==1
- p╪τec jezdec st²elec v╪º dáma král :ok=0
- 1! 2! 3! 4! 5! 6! :Potáhni(x1,y1,x2,y2);
- -o1----------------------SEZNAM OPERAC╓------------TENTO ⁿ╡DEK NEM╖NIT!-------
- l ;kontrola proti p²eskoƒení figury
- skoc=0;x=x1;y=y1;
- while (((x!=x2) || (y!=y2)) && (skoc==0))
- {
- if (x1<x2) x++; else if (x1>x2) x--;
- if (y1<y2) y++; else if (y1>y2) y--;
- if (((x!=x2) || (y!=y2)) && (s[x][y]!=0)) skoc=1;
- }
- 1 ;kontrola pro p╪τce
- if (((y1-y2)*n>0) && (abs(y1-y2)<3))
- if (x1==x2)
- {
- if (s[x2][y2]==0)
- if (abs(y1-y2)==2)
- {
- if ((s[x1][y1-n]==0) && ((y1==3) || (y1==8))) ok=1;
- } else ok=1;
- } else
- if (abs(x1-x2)==1)
- if (s[x2][y2]*n<0) ok=1;
- 2 ;kontrola pro jezdce
- if (((abs(x1-x2)==2) && (abs(y1-y2)==1)) ||
- ((abs(x1-x2)==1) && (abs(y1-y2)==2))) ok=1;
- 3 ;kontrola pro st²elce
- if (abs(x1-x2)==abs(y1-y2)) ok=1;
- 4 ;kontrola pro vا
- if (((x1!=x2) && (y1==y2)) || ((x1==x2) && (y1!=y2))) ok=1;
- 5 ;kontrola pro dámu
- if ((abs(x1-x2)==abs(y1-y2)) ||
- (((x1!=x2) && (y1=y2)) || ((x1==x2) && (y1!=y2)))) ok=1;
- 6 ;kontrola pro krále
- if ((abs(x1-x2)<2) && (abs(y1-y2)<2)) ok=1; else
- if ((abs(x1-x2)==2) && (y1==y2) && ((y1==2) || (y1==9)))
- {
- µach();
- if (((n==1) && (bs==0)) || ((n==-1) && (cs==0)))
- {
- if (n==1)
- {
- if (x2<x1)
- {
- if ((rosada[0]==0) && (s[2][9]==4) &&
- (s[5][9]==0) && (s[4][9]==0) && (s[3][9]==0)) ok=1;
- } else
- if ((rosada[1]==0) && (s[9][9]==4) &&
- (s[7][9]==0) && (s[8][9]==0)) ok=1;
- } else
- if (x2<x1)
- {
- if ((rosada[2]==0) && (s[2][2]==-4) &&
- (s[5][2]==0) && (s[4][2]==0) && (s[3][2]==0)) ok=1;
- } else
- if ((rosada[3]==0) && (s[9][2]==-4) &&
- (s[7][2]==0) && (s[8][2]==0)) ok=1;
- }
- }
- -c1----------------------SEZNAM PODM╓NEK-----------TENTO ⁿ╡DEK NEM╖NIT!-------
- /l ((abs(x1-x2)>1) || (abs(y1-y2)>1)) && (abs(s[x1][y1])!=2)
- /t (skoc==0) &&
- ((x1!=x2) || (y1!=y2)) && (x1>1) && (x1<10) && (y1>1) && (y1<10) &&
- (x2>1) && (x2<10) && (y2>1) && (y2<10) &&
- (((s[x1][y1]>0) && (n==1)) || ((s[x1][y1]<0) && (n==-1))) &&
- (s[x2][y2]*n<=0)
- \1 abs(s[x1][y1]) ?? case 1:
- \2 case 2:
- \3 case 3:
- \4 case 4:
- \5 case 5:
- \6 case 6:
- =SP---------------------------------------------------------------------------
-
- ;-h---------------------------------------------------------------------------
- void Skok(int max) // zm╪na sm╪ru figury po napadení cizí
- -s--Skok ■ 2 -2 -28 3
- Skok
- màºe?
- /1
- ano
- 1!
- -o1----------------------SEZNAM OPERAC╓------------TENTO ⁿ╡DEK NEM╖NIT!-------
- 1 ;zm╪na direkce figurky
- skoc=0;
- v[h].z=(v[h].z/9+1)*9-1;
- if (v[h].z>max) v[h].z=0;
- -c1----------------------SEZNAM PODM╓NEK-----------TENTO ⁿ╡DEK NEM╖NIT!-------
- /1 skoc==1
- =SP---------------------------------------------------------------------------
-
- ;-h---------------------------------------------------------------------------
- void Vyno²ení( void ) // sníºení hloubky prohledávání v herním stromu
- -s--Vyno²ení ■ 4 -2 -27 3
- Vyno²ení
- 1!
- -o1----------------------SEZNAM OPERAC╓------------TENTO ⁿ╡DEK NEM╖NIT!-------
- 1 ;t╪lo
- if (v[h].nejlepsi.x1==-1)
- {
- µach();
- if ((bs==0) && (cs==0)) v[h].nejlepsi.h=9000; else
- if (n==ja) v[h].nejlepsi.h=-10000; else v[h].nejlepsi.h=10000;
- }
- v[h-1].posledni.h=v[h].nejlepsi.h;
- if (h>1)
- {
- h--;n=n*-1;
- ok=1;
- } else h--;
- v[h].abs=1;
- -c1----------------------SEZNAM PODM╓NEK-----------TENTO ⁿ╡DEK NEM╖NIT!-------
- =SP---------------------------------------------------------------------------
-
- ;-h---------------------------------------------------------------------------
- void Zano²ení( void ) // zv∞τení hloubky prohledávaní v herním stromu
- -s--Zano²ení ■ 4 -2 -27 3
- Zano²ení
- 1!
- -o1----------------------SEZNAM OPERAC╓------------TENTO ⁿ╡DEK NEM╖NIT!-------
- 1 ;t╪lo
- h++;n=n*-1;
- for (i=0; i<=3; i++) v[h].posledni.ros[i]=0;
- v[h].nejlepsi.h=0;
- v[h].nejlepsi.x1=-1;
- v[h].x=1;
- v[h].y=2;
- v[h].z=0;
- ok=0;
- -c1----------------------SEZNAM PODM╓NEK-----------TENTO ⁿ╡DEK NEM╖NIT!-------
- =SP---------------------------------------------------------------------------
-
- ;-h---------------------------------------------------------------------------
- void Test(int x,int y,int z) // soućst funkce VyhledejTah
- -s--Test ■ 4 -2 -29 3
- Test
- 1!
- -o1----------------------SEZNAM OPERAC╓------------TENTO ⁿ╡DEK NEM╖NIT!-------
- 1 ;t╪lo
- ok=0;
- if ((skoc==0) && (s[x][y]*n<=0) &&
- (v[h].x>1) && (v[h].x<10) && (v[h].y>1) && (v[h].y<10) &&
- (x>1) && (x<10) && (y>1) && (y<10)) Potáhni(v[h].x,v[h].y,x,y);
- if ((ok==0) && (z>-1)) v[h].z=z;
- -c1----------------------SEZNAM PODM╓NEK-----------TENTO ⁿ╡DEK NEM╖NIT!-------
- =SP---------------------------------------------------------------------------
-
- ;-h---------------------------------------------------------------------------
- void Obnovµachovnici( void ) // p²enese informace o stavu τachovnice ze zálohy
- -s--Obnovµachovnici ■ 2 -2 -24 3
- Obnovµachovnici
- první~rozm╪r
- #1
- druh∞~rozm╪r
- #2
- :s[x][y]=p[x][y]
- -o1----------------------SEZNAM OPERAC╓------------TENTO ⁿ╡DEK NEM╖NIT!-------
- -c1----------------------SEZNAM PODM╓NEK-----------TENTO ⁿ╡DEK NEM╖NIT!-------
- #1 y=2; y<=9; y++
- #2 x=2; x<=9; x++
- =SP---------------------------------------------------------------------------
-
- ;-h---------------------------------------------------------------------------
- void OceσPozici(int pocitat) // ohdnotí danou pozici ƒíslem
- -s--OceσPozici ■ 15 -2 -15 3
- OceσPozici
- ___________│_
- 0! procházení~τachovnice
- #y
- │
- #x
- _______cen╪ní_________
- _>>obracítko<<____ │ centralizace
- /:s[x][y]*ja<0 / │ c!
- :o=-1 :o=1 │
- │
- materiální~&~poziƒní~cen╪ní
- \1 \2 \3 \4 \5 \6
- p╪τec │ st²elec │ dáma │
- 1! │ 3! │ 5! │
- │ │ │
- jezdec v╪º král
- 2! 4! 6!
- -o1----------------------SEZNAM OPERAC╓------------TENTO ⁿ╡DEK NEM╖NIT!-------
- 0 ;inicializace: hodnoty + p²iƒtení uzlu a τachu
- v[h].posledni.h=0;
- if (pocitat==1) count++;
- v[h].abs=1;
- µach();
- if ((bs==1) || (cs==1)) v[h].posledni.h=v[h].posledni.h+check;
- 1 ;materiální a poziƒní ocen╪ní p╪τce
- v[h].posledni.h=v[h].posledni.h+pesec*o;
- i=1;
- while ((s[x][y-i*ja]==0) && (i<3))
- {
- if (i==2)
- {
- if (ja==1)
- {
- if (y==8) v[h].posledni.h=v[h].posledni.h+pole*o;
- } else if (y==3) v[h].posledni.h=v[h].posledni.h+pole*o;
- } else v[h].posledni.h=v[h].posledni.h+pole*o;
- i++;
- }
- 2 ;materiální a poziƒní ocen╪ní jezdce
- v[h].posledni.h=v[h].posledni.h+jezdec*o;
- if (s[x-2][y-1]==0) v[h].posledni.h=v[h].posledni.h+pole*o;
- if (s[x-1][y-2]==0) v[h].posledni.h=v[h].posledni.h+pole*o;
- if (s[x+1][y-2]==0) v[h].posledni.h=v[h].posledni.h+pole*o;
- if (s[x+2][y-1]==0) v[h].posledni.h=v[h].posledni.h+pole*o;
- if (s[x+2][y+1]==0) v[h].posledni.h=v[h].posledni.h+pole*o;
- if (s[x+1][y+2]==0) v[h].posledni.h=v[h].posledni.h+pole*o;
- if (s[x-1][y+2]==0) v[h].posledni.h=v[h].posledni.h+pole*o;
- if (s[x-2][y+1]==0) v[h].posledni.h=v[h].posledni.h+pole*o;
- 3 ;materiální a poziƒní ocen╪ní st²elce
- v[h].posledni.h=v[h].posledni.h+strelec*o;
- i=1;while (s[x-i][y-i]==0) { v[h].posledni.h=v[h].posledni.h+pole*o;i++; }
- i=1;while (s[x+i][y-i]==0) { v[h].posledni.h=v[h].posledni.h+pole*o;i++; }
- i=1;while (s[x+i][y+i]==0) { v[h].posledni.h=v[h].posledni.h+pole*o;i++; }
- i=1;while (s[x-i][y+i]==0) { v[h].posledni.h=v[h].posledni.h+pole*o;i++; }
- 4 ;materiální a poziƒní ocen╪ní v╪ºe
- v[h].posledni.h=v[h].posledni.h+vez*o;
- i=1;while (s[x-i][y]==0) { v[h].posledni.h=v[h].posledni.h+pole*o;i++; }
- i=1;while (s[x][y-i]==0) { v[h].posledni.h=v[h].posledni.h+pole*o;i++; }
- i=1;while (s[x+i][y]==0) { v[h].posledni.h=v[h].posledni.h+pole*o;i++; }
- i=1;while (s[x][y+i]==0) { v[h].posledni.h=v[h].posledni.h+pole*o;i++; }
- 5 ;materiální a poziƒní ocen╪ní dámy
- v[h].posledni.h=v[h].posledni.h+dama*o;
- i=1;while (s[x-i][y]==0) { v[h].posledni.h=v[h].posledni.h+pole*o;i++; }
- i=1;while (s[x-i][y-i]==0) { v[h].posledni.h=v[h].posledni.h+pole*o;i++; }
- i=1;while (s[x][y-i]==0) { v[h].posledni.h=v[h].posledni.h+pole*o;i++; }
- i=1;while (s[x+i][y-i]==0) { v[h].posledni.h=v[h].posledni.h+pole*o;i++; }
- i=1;while (s[x+i][y]==0) { v[h].posledni.h=v[h].posledni.h+pole*o;i++; }
- i=1;while (s[x+i][y+i]==0) { v[h].posledni.h=v[h].posledni.h+pole*o;i++; }
- i=1;while (s[x][y+i]==0) { v[h].posledni.h=v[h].posledni.h+pole*o;i++; }
- i=1;while (s[x-i][y+i]==0) { v[h].posledni.h=v[h].posledni.h+pole*o;i++; }
- 6 ;materiální a poziƒní ocen╪ní krále
- v[h].posledni.h=v[h].posledni.h+kral*o;
- if (s[x-1][y]==0) v[h].posledni.h=v[h].posledni.h+pole*o;
- if (s[x-1][y-1]==0) v[h].posledni.h=v[h].posledni.h+pole*o;
- if (s[x][y-1]==0) v[h].posledni.h=v[h].posledni.h+pole*o;
- if (s[x+1][y-1]==0) v[h].posledni.h=v[h].posledni.h+pole*o;
- if (s[x+1][y]==0) v[h].posledni.h=v[h].posledni.h+pole*o;
- if (s[x+1][y+1]==0) v[h].posledni.h=v[h].posledni.h+pole*o;
- if (s[x][y+1]==0) v[h].posledni.h=v[h].posledni.h+pole*o;
- if (s[x-1][y+1]==0) v[h].posledni.h=v[h].posledni.h+pole*o;
- c ;centralizaƒní faktor
- v[h].posledni.h=v[h].posledni.h+ctab[x-2][y-2]*o;
- -c1----------------------SEZNAM PODM╓NEK-----------TENTO ⁿ╡DEK NEM╖NIT!-------
- #y y=2; y<=9; y++
- #x x=2; x<=9; x++
- \1 abs(s[x][y]) ?? case 1:
- \2 case 2:
- \3 case 3:
- \4 case 4:
- \5 case 5:
- \6 case 6:
- =SP---------------------------------------------------------------------------
-
- ;-h---------------------------------------------------------------------------
- void VyhledejTah(int maxhloubka, int pocitat) // vypoƒítá pokraƒování
- -s--VyhledejTah ■ 2 -2 13 3
- ________________VyhledejTah_________________
- limit+~záloha~τachovnice inicializace hlavní~cyklus konec
- /:pocitat==1 0! +c u!
- _______________│_______________ │
- limit │ záloha │
- ______________│_______________ │ :count=0 │
- \a \b \2 \3 │ #y │
- pàltahy │ __turnaj__ nekoneƒno │ │ │
- :limit=0 │ /:n==1 / :limit=0 │ #x │
- │ bíl∞ │ │ :p[x][y]=s[x][y] │
- │ :limit=kon[36] │ │ │
- │ │ │ │
- ƒas ƒern∞ │ │
- :limit=kon[35] :limit=kon[37] │ │
- │ │
- hloubka │
- /:kon[33]>0 │
- :maxhloubka=4 │
- │
- _______________________________________________│________________________________________________
- __posun__ test~figur konec~τachovnice? vratiteln∞~tah vykreslení~a~p²eruτení
- kam? :v[h].z++ __________________│__________________ /k /:ok==1 p!
- /:v[h].z==0 \1 \2 \3 \4 \5 \6 \ ano _______ano________
- ______│______ p╪τec jezdec st²elec v╪º dáma král nic :Vyno²ení() max~hloubka? vrácení
- /:v[h].x==9 / 1! 2! 3! 4! 5! 6! :v[h].z=0 /:h==maxhloubka v!
- :v[h].x=2 :v[h].x++ ano
- :v[h].y++ :OceσPozici(pocitat)
- -o1----------------------SEZNAM OPERAC╓------------TENTO ⁿ╡DEK NEM╖NIT!-------
- 0 ;inicializace
- bz=b;cz=c;
- b=0;c=0;
- ja=n;
- v[0].nejlepsi.x1=-1;
- h=0;
- Zano²ení();
- n=ja;
- skoc=0;
- StopkyNuluj();StopkyStart();
- MyτZm╪σGrKurzor(43);MyτZobrazKurzor();
- VyprázdniFrontuKláves();
- u ;dokonƒení
- MyτSchovejKurzor();
- if (v[1].nejlepsi.x1==-2)
- {
- StopkyStop();
- ¼ekej(kon[38]);MyτVyprázdniFrontuUdálostí();
- Myτ¼tiUdálost(gMyτUdálost);
- x=gMyτUdálost.X;
- y=gMyτUdálost.Y;
- RozvinovacíNabídky();
- } else FishStop();
- b=bz;c=cz;
- 1 ;test pro p╪τce
- switch (v[h].z)
- {
- case 1:
- if (s[v[h].x][v[h].y-1*n]==0) Test(v[h].x,v[h].y-1*n,-1); else skoc=1;
- break;
- case 2:
- if ((s[v[h].x][v[h].y-2*n]==0) &&
- (((n==1) && (v[h].y==8)) || ((n==-1) && (v[h].y==3))))
- Test(v[h].x,v[h].y-2*n,-1);
- skoc=0;
- break;
- case 3:
- if (s[v[h].x-1][v[h].y-n]*n<0) Test(v[h].x-1,v[h].y-n,-1);
- break;
- case 4:
- if (s[v[h].x+1][v[h].y-n]*n<0) Test(v[h].x+1,v[h].y-n,-1);
- v[h].z=0;
- }
- 2 ;test pro jezdce
- switch (v[h].z)
- {
- case 1: Test(v[h].x-2,v[h].y-1,-1);break;
- case 2: Test(v[h].x-1,v[h].y-2,-1);break;
- case 3: Test(v[h].x+1,v[h].y-2,-1);break;
- case 4: Test(v[h].x+2,v[h].y-1,-1);break;
- case 5: Test(v[h].x+2,v[h].y+1,-1);break;
- case 6: Test(v[h].x+1,v[h].y+2,-1);break;
- case 7: Test(v[h].x-1,v[h].y+2,-1);break;
- case 8:
- Test(v[h].x-2,v[h].y+1,-1);
- v[h].z=0;
- }
- 3 ;test pro st²elce
- switch (v[h].z/9)
- {
- case 0: Test(v[h].x-v[h].z,v[h].y-v[h].z,8);break;
- case 1: Test(v[h].x+(v[h].z-8),v[h].y-(v[h].z-8),17);break;
- case 2: Test(v[h].x+(v[h].z-17),v[h].y+(v[h].z-17),26);break;
- case 3: Test(v[h].x-(v[h].z-26),v[h].y+(v[h].z-26),0);break;
- default: v[h].z=0;
- }
- Skok(26);
- 4 ;test pro vا
- switch (v[h].z/9)
- {
- case 0: Test(v[h].x-v[h].z,v[h].y,8);break;
- case 1: Test(v[h].x,v[h].y-(v[h].z-8),17);break;
- case 2: Test(v[h].x+(v[h].z-17),v[h].y,26);break;
- case 3: Test(v[h].x,v[h].y+(v[h].z-26),0);break;
- default: v[h].z=0;
- }
- Skok(26);
- 5 ;test pro dámu
- switch (v[h].z/9)
- {
- case 0: Test(v[h].x-v[h].z,v[h].y,8);break;
- case 1: Test(v[h].x-(v[h].z-8),v[h].y-(v[h].z-8),17);break;
- case 2: Test(v[h].x,v[h].y-(v[h].z-17),26);break;
- case 3: Test(v[h].x+(v[h].z-26),v[h].y-(v[h].z-26),35);break;
- case 4: Test(v[h].x+(v[h].z-35),v[h].y,44);break;
- case 5: Test(v[h].x+(v[h].z-44),v[h].y+(v[h].z-44),53);break;
- case 6: Test(v[h].x,v[h].y+(v[h].z-53),62);break;
- case 7: Test(v[h].x-(v[h].z-62),v[h].y+(v[h].z-62),0);break;
- default: v[h].z=0;
- }
- Skok(62);
- 6 ;test pro krále
- switch (v[h].z)
- {
- case 1: Test(v[h].x-1,v[h].y,-1);break;
- case 2: Test(v[h].x-1,v[h].y-1,-1);break;
- case 3: Test(v[h].x,v[h].y-1,-1);break;
- case 4: Test(v[h].x+1,v[h].y-1,-1);break;
- case 5: Test(v[h].x+1,v[h].y,-1);break;
- case 6: Test(v[h].x+1,v[h].y+1,-1);break;
- case 7: Test(v[h].x,v[h].y+1,-1);break;
- case 8: Test(v[h].x-1,v[h].y+1,-1);break;
- case 9:
- if ((v[h].y==2) || (v[h].y==9))
- {
- µach();
- if (((n==1) && (bs==0)) || ((n==-1) && (cs==0)))
- {
- if (n==1)
- {
- if ((rosada[0]==0) && (s[2][9]==4) &&
- (s[5][9]==0) && (s[4][9]==0) && (s[3][9]==0)) Test(v[h].x-2,v[h].y,-1);
- } else
- {
- if ((rosada[2]==0) && (s[2][2]==-4) &&
- (s[5][2]==0) && (s[4][2]==0) && (s[3][2]==0)) Test(v[h].x-2,v[h].y,-1);
- }
- }
- }
- break;
- case 10:
- if ((v[h].y==2) || (v[h].y==9))
- {
- µach();
- if (((n==1) && (bs==0)) || ((n==-1) && (cs==0)))
- {
- if (n==1)
- {
- if ((rosada[1]==0) && (s[9][9]==4) &&
- (s[7][9]==0) && (s[8][9]==0)) Test(v[h].x+2,v[h].y,-1);
- } else
- {
- if ((rosada[3]==0) && (s[9][2]==-4) &&
- (s[7][2]==0) && (s[8][2]==0)) Test(v[h].x+2,v[h].y,-1);
- }
- }
- }
- v[h].z=0;
- }
- v ;vrácení tahu + vyno²ení/zano²ení
- if (v[h].abs==1)
- if (v[h].nejlepsi.x1==-1) v[h].nejlepsi=v[h].posledni; else
- if (h%2==1)
- {
- if (v[h].posledni.h>v[h].nejlepsi.h) v[h].nejlepsi=v[h].posledni;
- } else
- if (v[h].posledni.h<v[h].nejlepsi.h) v[h].nejlepsi=v[h].posledni;
- if ((v[h].abs==1) && (h>1) &&
- (v[h-1].nejlepsi.x1!=-1) &&
- (((h%2==1) && (v[h].posledni.h>v[h-1].nejlepsi.h)) ||
- ((h%2==0) && (v[h].posledni.h<v[h-1].nejlepsi.h))))
- {
- Vra£Tah();Vyno²ení();
- Vra£Tah();
- } else
- if (v[h].abs==1) Vra£Tah(); else Zano²ení();
- p ;vykreslení hodin a moºné p²ijetí podn╪tu k p²eruτení
- FishP²iƒti(ja);
- if (pocitat==1)
- {
- if (((kon[33]==1) || (kon[33]==2)) &&
- ((cas.Hodiny*3600+cas.Minuty*60+cas.Sekundy)+1>=limit))
- {
- if (v[1].nejlepsi.x1==-1) v[1].nejlepsi=v[1].posledni;
- Obnovµachovnici();
- h=0;n=ja;
- } else
- {
- if (BylaStisknutaKlávesa()==1)
- {
- if ((¼tiKlávesuZFronty()==KlEsc) && (count>0))
- {
- if (v[1].nejlepsi.x1==-1) v[1].nejlepsi=v[1].posledni;
- Obnovµachovnici();
- h=0;n=ja;
- }
- } else
- {
- Myτ¼tiUdálost(gMyτUdálost);
- x=gMyτUdálost.X;
- y=gMyτUdálost.Y;
- if ((gMyτUdálost.Tlaƒítka!=0) && (x>2) && (y>2) && (x<334) && (y<15))
- {
- Obnovµachovnici();
- v[1].nejlepsi.x1=-2;
- h=0;n=ja;
- }
- }
- }
- }
- -c1----------------------SEZNAM PODM╓NEK-----------TENTO ⁿ╡DEK NEM╖NIT!-------
- /k (v[h].z==0) && (v[h].x==9) && (v[h].y==9)
- #y y=2; y<=9; y++
- #x x=2; x<=9; x++
- +c h!=0
- \a kon[33] ?? case 0:
- \b case 1:
- \1 s[v[h].x][v[h].y]*n ?? case 1:
- \2 case 2:
- \3 case 3:
- \4 case 4:
- \5 case 5:
- \6 case 6:
- =SP---------------------------------------------------------------------------
-
- ;-h---------------------------------------------------------------------------
- int SrovnejTah(int t1,int t2) // porovná dva tahy partiá²e na shodnost
- -s--SrovnejTah ■ 2 -2 -21 3
- SrovnejTah
- __rovnost?__
- /1 /
- ano ne
- :return(1) :return(0)
- -o1----------------------SEZNAM OPERAC╓------------TENTO ⁿ╡DEK NEM╖NIT!-------
- -c1----------------------SEZNAM PODM╓NEK-----------TENTO ⁿ╡DEK NEM╖NIT!-------
- /1 (partiar[t1].x1==partiar[t2].x1) &&
- (partiar[t1].y1==partiar[t2].y1) &&
- (partiar[t1].x2==partiar[t2].x2) &&
- (partiar[t1].y2==partiar[t2].y2)
- =SP---------------------------------------------------------------------------
-
- ;-h---------------------------------------------------------------------------
- void Okno(int x1,int y1,int x2,int y2, int transp) // plastické okno
- -s--Okno ■ 4 -2 -20 3
- ________Okno
- 1! transparentní?
- /:transp==0
- ano
- 2!
- -o1----------------------SEZNAM OPERAC╓------------TENTO ⁿ╡DEK NEM╖NIT!-------
- 1 ;vykreslení plastického okna
- GrNastavBarvuPop²edí(0);
- GrKresliLinku(x1+1,y1+1,x2-1,y1+1);GrKresliLinku(x2-1,y1+1,x2-1,y2-1);
- GrKresliLinku(x2-1,y2-1,x1+1,y2-1);GrKresliLinku(x1+1,y2-1,x1+1,y1+1);
- GrNastavBarvuPop²edí(kon[14]);
- GrKresliLinku(x2,y1,x2,y2);GrKresliLinku(x2,y2,x1,y2);
- GrNastavBarvuPop²edí(kon[13]);
- GrKresliLinku(x1,y1,x2,y1);GrKresliLinku(x1,y1,x1,y2);
- 2 ;prokreslení vnit²ní ƒásti (netransparentní okno)
- GrNastavBarvuPozadí(kon[12]);
- GrKresliVypln╪n∞Obdélník(x1+2,y1+2,x2-2,y2-2);
- -c1----------------------SEZNAM PODM╓NEK-----------TENTO ⁿ╡DEK NEM╖NIT!-------
- =SP---------------------------------------------------------------------------
-
- ;-h---------------------------------------------------------------------------
- void Piτ(int px,int py,int pozadi,string text) // text se stínem, pop². pozadím
- -s--Piτ ■ 3 -2 -37 3
- Piτ
- :GrNastavText(pozadi)
- b:(kon[11])!
- p:(px+1,py+1)!
- :GrPiτⁿet╪zec(text)
- :GrNastavText(1)
- b:(kon[10])!
- p:(px,py)!
- :GrPiτⁿet╪zec(text)
- -o1----------------------SEZNAM OPERAC╓------------TENTO ⁿ╡DEK NEM╖NIT!-------
- b GrNastavBarvuPop²edí
- p GrNastavPozici
- -c1----------------------SEZNAM PODM╓NEK-----------TENTO ⁿ╡DEK NEM╖NIT!-------
- =SP---------------------------------------------------------------------------
-
- ;-h---------------------------------------------------------------------------
- int Nabídka(int px,int py,int a, int b) // p²eddefinovaná nabídka
- -s--Nabídka ■ 20 -2 -4 3
- Nabídka
- ___________________:ii=0____________________
- nejdelτí~text základ vnit²ek volba bylo~n╪co~zvoleno?
- #c o! #c :Klik(0,1) /v /
- delτí? okno~s~textem ano ne
- /s p! v! :return(-1)
- ano
- 1!
- -o1----------------------SEZNAM OPERAC╓------------TENTO ⁿ╡DEK NEM╖NIT!-------
- 1 ;p²i²azení indexu zatím nejdelτího ²et╪zce
- ii=StrVelikost(vyber[a][b].nabidka[i]);
- o ;základní okno
- Okno(px,py,px+ii*Grµí²kaZnaku+9,py+(GrV∞τkaZnaku+6)*(vyber[a][b].delka+1)+4,0);
- p ;podruºné okno + text
- Okno(px+2+1,py+(GrV∞τkaZnaku+6)*i+3,
- px+ii*Grµí²kaZnaku+4+2,py+(GrV∞τkaZnaku+6)*(i+1)+1,1);
- Piτ(px+3+1,py+(GrV∞τkaZnaku+6)*i+5,1,vyber[a][b].nabidka[i]);
- v ;návrat zvolené hodnoty
- return((y-py-3)/(GrV∞τkaZnaku+6));
- -c1----------------------SEZNAM PODM╓NEK-----------TENTO ⁿ╡DEK NEM╖NIT!-------
- /s StrVelikost(vyber[a][b].nabidka[i])>ii
- /v (x>px+2) && (x<px+ii*Grµí²kaZnaku+7) &&
- (y>py+2) && (y<py+(GrV∞τkaZnaku+6)*(vyber[a][b].delka+1)+2)
- #c i=0; i<=vyber[a][b].delka; i++
- =SP---------------------------------------------------------------------------
-
- ;-h---------------------------------------------------------------------------
- void LCD(int x, int y, long cislo, int cif, int typ) // v∞stup údajà na displej
- -s--LCD ■ 4 -2 -19 3
- __________LCD__________
- 1! v∞poƒet~základu ƒíslice
- #1 +1
- :zaklad=zaklad*10 pokraƒuj
- 2!
- -o1----------------------SEZNAM OPERAC╓------------TENTO ⁿ╡DEK NEM╖NIT!-------
- 1 ;deklarace + hlavní okno
- long stare=cislo;
- long zaklad=1;
- Okno(x-2,y-2,x+cif*39+1,y+30,1);
- 2 ;vykreslení ƒíslice a úprava hodnot
- zaklad=zaklad/10;
- ii=cislo/zaklad;
- if (cislo-ii*zaklad==stare)
- GrKresliP²edm╪t(2011+15*typ,0,x,y); else
- GrKresliP²edm╪t(2001+15*typ+ii,0,x,y);
- cislo=cislo-ii*zaklad;
- x=x+39;
- -c1----------------------SEZNAM PODM╓NEK-----------TENTO ⁿ╡DEK NEM╖NIT!-------
- #1 i=1; i<=cif; i++
- +1 zaklad>1
- =SP---------------------------------------------------------------------------
-
- ;-h---------------------------------------------------------------------------
- void Notes(string poznamka) // vypíτe poznámku k objektu pod kurzorem
- -s--Notes ■ 5 -2 -28 3
- Notes
- :smaz=1
- 1!
- -o1----------------------SEZNAM OPERAC╓------------TENTO ⁿ╡DEK NEM╖NIT!-------
- 1 ;napíτe poznámku a p²iƒte ƒas
- StopkyNuluj();StopkyStart();
- Okno(x-2,y-2,x+StrVelikost(poznamka)*Grµí²kaZnaku+2,y+GrV∞τkaZnaku+2,1);
- GrNastavText(0);
- GrNastavBarvuPop²edí(0);GrNastavBarvuPozadí(kon[19]);
- GrNastavPozici(x,y);GrPiτⁿet╪zec(poznamka);
- do Myτ¼tiUdálost(gMyτUdálost); while (gMyτUdálost.Tlaƒítka!=0);
- GrNastavBarvuPozadí(0);
- GrKresliVypln╪n∞Obdélník
- (x-2,y-2,x+StrVelikost(poznamka)*Grµí²kaZnaku+2,y+GrV∞τkaZnaku+2);
- FishStop();
- -c1----------------------SEZNAM PODM╓NEK-----------TENTO ⁿ╡DEK NEM╖NIT!-------
- =SP---------------------------------------------------------------------------
-
- ;-h---------------------------------------------------------------------------
- string Txt(int index) // vypíτe hláτku ƒíslo 'index' aktuálním jazykem
- -s--Txt ■ 4 -2 -30 3
- Txt
- 1!
- -o1----------------------SEZNAM OPERAC╓------------TENTO ⁿ╡DEK NEM╖NIT!-------
- 1 ;t╪lo
- txt=SouborOtev²i("*\\partie.lng",SouborP²ístup¼tení|SouborP²ístupTextov∞);
- do{
- Soubor¼tiSⁿet╪zec(txt,str);
- StrSmaº(str,StrVelikost(str)-1,1);
- } while (str!="***");
- for (z=0; z<=index; z++)
- for (iii=0; iii<=1; iii++)
- if (iii==kon[40])
- Soubor¼tiSⁿet╪zec(txt,str);
- else Soubor¼tiNov∞ⁿádek(txt);
- StrSmaº(str,StrVelikost(str)-1,1);
- SouborZav²i(txt);
- return(str);
- -c1----------------------SEZNAM PODM╓NEK-----------TENTO ⁿ╡DEK NEM╖NIT!-------
- =SP---------------------------------------------------------------------------
-
- ;-h---------------------------------------------------------------------------
- void Popis( void ) // popis políƒka τachovnice (kámen+pozice)
- -s--Popis ■ 5 -2 12 3
- Popis
- Urƒení~pozice
- :px=x1+95!
- :py=58-y1!
- _____________________________misto+figurka_____________________________
- \1 \2 \3 \4 \5 \6 \
- :Notes(Txt(0)+px+py) │ :Notes(Txt(2)+px+py) │ :Notes(Txt(4)+px+py) │ :Notes(""+px+py);
- │ │ │
- :Notes(Txt(1)+px+py); :Notes(Txt(3)+px+py) :Notes(Txt(5)+px+py)
- -o1----------------------SEZNAM OPERAC╓------------TENTO ⁿ╡DEK NEM╖NIT!-------
- -c1----------------------SEZNAM PODM╓NEK-----------TENTO ⁿ╡DEK NEM╖NIT!-------
- \1 abs(s[x1][y1]) ?? case 1:
- \2 case 2:
- \3 case 3:
- \4 case 4:
- \5 case 5:
- \6 case 6:
- =SP---------------------------------------------------------------------------
-
- ;-h---------------------------------------------------------------------------
- void Tlaƒítko(int x,int y,string text,int stiskle) // vykreslí talƒítko
- -s--Tlaƒítko ■ 2 -2 -18 3
- TlaĒtko
- 1!
- _____│_____
- ___stisklé?___ text
- /:stiskle==1 / 4!
- ano ne
- 2! 3!
- -o1----------------------SEZNAM OPERAC╓------------TENTO ⁿ╡DEK NEM╖NIT!-------
- 1 ;vykreslení základu tlaƒítka
- GrNastavBarvuPozadí(kon[12]);
- GrKresliVypln╪n∞Obdélník
- (x+2,y+2,x+StrVelikost(text)*Grµí²kaZnaku+1,y+GrV∞τkaZnaku+3);
- 2 ;stisklé tlaƒítko
- Okno(x+StrVelikost(text)*Grµí²kaZnaku+3,y+GrV∞τkaZnaku+3,x,y,1);
- 3 ;volné tlaƒítko
- Okno(x,y,x+StrVelikost(text)*Grµí²kaZnaku+3,y+GrV∞τkaZnaku+3,1);
- 4 ;text v tlaĒtku
- Piτ(x+1,y+1,1,text);
- -c1----------------------SEZNAM PODM╓NEK-----------TENTO ⁿ╡DEK NEM╖NIT!-------
- =SP---------------------------------------------------------------------------
-
- ;-h---------------------------------------------------------------------------
- void Volba(int x, int y, int a,int b) // okénko s nastavením
- -s--Volba ■ 4 -2 -29 3
- Volba
- 1!
- -o1----------------------SEZNAM OPERAC╓------------TENTO ⁿ╡DEK NEM╖NIT!-------
- 1 ;t╪lo
- ii=0;
- for (i=0; i<=vyber[1][a].delka; i++)
- if (StrVelikost(vyber[1][a].nabidka[i])>ii)
- ii=StrVelikost(vyber[1][a].nabidka[i]);
- Okno(x,y,x+ii*Grµí²kaZnaku+4,y+GrV∞τkaZnaku+3,1);
- Piτ(x+1,y+1,1,vyber[1][a].nabidka[kon[b]]);
- -c1----------------------SEZNAM PODM╓NEK-----------TENTO ⁿ╡DEK NEM╖NIT!-------
- =SP---------------------------------------------------------------------------
-
- ;-h---------------------------------------------------------------------------
- void MenuProst²edí( void ) // okno nastavení prost²edí
- -s--MenuProst²edí ■ 9 -2 83 3
- MenuProst²edí
- :ok=0!
- *:ok==0
- Nastavení~prost²edí
- 1!
- :Klik(0,1)
- _______________________________________________________________________________oblasti~kliknutí_______________________________________________________________
- /a /b /c /d /e /f /g /h /i /j /k /l
- bílé~kameny ƒerné~kameny bílá~pole ƒerná~pole povrch~hodin typ~hodin notace pomlƒky~k²íºky displej barva typ~barvy OK
- │ │ │ │ │ │ │ /:kon[7]==1 / │ :kon[9+kon[20]]=(x-127)/10! │ :ok=1!
- │ :i=Nabídka(129,157,1,0) │ :i=Nabídka(129,217,1,1) │ :i=Nabídka(129,277,1,3) │ │ │ │ │ 3!
- │ /x │ /x │ /x │ :kon[7]=0! :kon[7]=1! │ │
- │ │ │ │ │ │ │ │ │
- │ :kon[1]=i! │ :kon[3]=i! │ :kon[5]=i! │ │ │
- │ │ │ │ │ │
- :i=Nabídka(129,127,1,0) :i=Nabídka(129,187,1,1) :i=Nabídka(129,247,1,2) :i=Nabídka(129,307,1,4) :i=Nabídka(129,353,1,5) :i=Nabídka(129,188,1,6)
- /x /x /x /x /x /x
- │ │ │ │ │ │
- :kon[0]=i! :kon[2]=i! :kon[4]=i! :kon[6]=i! :kon[8]=i! :kon[20]=i!
- -o1----------------------SEZNAM OPERAC╓------------TENTO ⁿ╡DEK NEM╖NIT!-------
- f VyprázdniFrontuKláves();
- 1 ;vykreslení okna nastavení prost²edí
- Okno(121,94,519,386,0);
- Piτ(125,98,1,Txt(44));Volba(125,112,0,0);
- Piτ(125,128,1,Txt(45));Volba(125,142,0,1);
- Piτ(125,158,1,Txt(46));Volba(125,172,1,2);
- Piτ(125,188,1,Txt(47));Volba(125,202,1,3);
- Piτ(125,218,1,Txt(48));Volba(125,232,2,4);
- Piτ(125,248,1,Txt(49));Volba(125,262,3,5);
- Piτ(125,278,1,Txt(50));Volba(125,292,4,6);
- Okno(125,308,137,308+GrV∞τkaZnaku,0);
- if (kon[7]==1)
- {
- GrNastavBarvuPop²edí(15);
- GrKresliLinku(127,310,135,306+GrV∞τkaZnaku);
- GrKresliLinku(135,310,127,306+GrV∞τkaZnaku);
- }
- Piτ(141,308,1,Txt(51));
- Piτ(125,324,1,Txt(52));Volba(125,338,5,8);
- Okno(125,355,289,366,1);
- for (i=0; i<=15; i++)
- {
- GrNastavBarvuPozadí(i);
- GrKresliVypln╪n∞Obdélník(127+i*10,357,137+i*10,364);
- }
- Okno(291,355,305,366,1);
- GrNastavBarvuPozadí(kon[9+kon[20]]);
- GrKresliVypln╪n∞Obdélník(293,357,303,364);
- Volba(125,370,6,20);
- Okno(279,97,516,219,1);
- for (i=1; i<=6; i++)
- {
- GrKresliP²edm╪t(kon[0]*15+i,1,242+i*39,99);
- GrKresliP²edm╪t(kon[1]*15+i+6,1,242+i*39,129);
- if (i%2==1)
- GrKresliP²edm╪t(kon[2]*15+14,0,242+i*39,159); else
- GrKresliP²edm╪t((kon[3]+1)*15,0,242+i*39,159);
- GrKresliP²edm╪t(1000+kon[4]*45+i,1,242+i*39,189);
- }
- TlaĒtko(497,370,"OK",0);
- 3 ;zruτení okna
- GrNastavBarvuPozadí(kon[9]);GrKresliVypln╪n∞Obdélník(121,94,519,386);
- -c1----------------------SEZNAM PODM╓NEK-----------TENTO ⁿ╡DEK NEM╖NIT!-------
- *n PràchodnostP²edm╪tuP²edB() Je 0
- /a (x>125) && (y>112) && (x<248) && (y<125)
- /b (x>125) && (y>142) && (x<248) && (y<155)
- /c (x>125) && (y>172) && (x<281) && (y<185)
- /d (x>125) && (y>202) && (x<281) && (y<215)
- /e (x>125) && (y>232) && (x<217) && (y<245)
- /f (x>125) && (y>262) && (x<337) && (y<275)
- /g (x>125) && (y>292) && (x<361) && (y<305)
- /h (x>125) && (y>308) && (x<137) && (y<318)
- /i (x>125) && (y>338) && (x<200) && (y<353)
- /j (x>126) && (y>356) && (x<288) && (y<365)
- /k (x>125) && (y>370) && (x<280) && (y<385)
- /l (x>497) && (y>370) && (x<518) && (y<385)
- /x i!=-1
- =SP---------------------------------------------------------------------------
-
- ;-h---------------------------------------------------------------------------
- void MenuHledání( void ) // podrobné nastavení vyhledávacího algoritmu
- -s--MenuHledání ■ 8 -2 -13 3
- MenuHledání
- :ok=0
- *:ok==0
- Nastavení~hledání
- 1!
- ____________________:Klik(0,1);__________________
- /a /b /c /d /e /f /g /h /i
- typ~hry pàltahy bm bs tbm tbs tcm tcs :ok=1
- :i=Nabídka(192,207,1,8) b! c! d! e! f! g! h!
- /:i~Není~-1
- :kon[33]=i
- -o1----------------------SEZNAM OPERAC╓------------TENTO ⁿ╡DEK NEM╖NIT!-------
- 1 ;vykreslení
- Okno(186,176,454,306,0);
- Piτ(188,178,0,Txt(16));
- Volba(189,192,8,33);
- GrNastavBarvuPozadí(6);
- for (i=0; i<=3; i++)
- {
- if (i==0) str=" "; else str=" : ";
- Piτ(188,220+i*24,0,str);
- Piτ(188,208+i*24,1,Txt(17+i));
- }
- TlaĒtko(432,290,"OK",0);
- GrNastavBarvuPop²edí(14);
- GrNastavPozici(188,220);GrPiτL¼íslo(kon[34],-1);
- for (i=0; i<=2; i++)
- {
- GrNastavPozici(188,244+i*24);GrPiτL¼íslo(kon[35+i]/60,-1);
- GrNastavPozici(212,244+i*24);GrPiτL¼íslo(kon[35+i]%60,-1);
- }
- /*GrNastavPozici(188,244);GrPiτL¼íslo(kon[35]/60,-1);
- GrNastavPozici(212,244);GrPiτL¼íslo(kon[35]%60,-1);
- GrNastavPozici(188,268);GrPiτL¼íslo(kon[36]/60,-1);
- GrNastavPozici(212,268);GrPiτL¼íslo(kon[36]%60,-1);
- GrNastavPozici(188,292);GrPiτL¼íslo(kon[37]/60,-1);
- GrNastavPozici(212,292);GrPiτL¼íslo(kon[37]%60,-1);*/
- b ;pàltahy
- GrNastavPozici(189,221);
- Gr¼tiI¼íslo("",i,2,0,224);
- if (i>0) kon[34]=i;
- c ;ƒas na tah (minuty)
- GrNastavPozici(189,245);
- Gr¼tiI¼íslo("",i,2,0,224);
- if ((abs(i)*60+kon[35]%60)>1) kon[35]=abs(i)*60+kon[35]%60;
- d ;ƒas na tah (sekundy)
- GrNastavPozici(213,245);
- Gr¼tiI¼íslo("",i,2,0,224);
- if ((kon[35]/60*60+abs(i))>1) kon[35]=kon[35]/60*60+abs(i);
- e ;turnaj - ƒas pro bílého (minuty)
- GrNastavPozici(189,269);
- Gr¼tiI¼íslo("",i,2,0,224);
- if ((abs(i)*60+kon[36]%60)>1) kon[36]=abs(i)*60+kon[36]%60;
- f ;turnaj - ƒas pro bílého (sekundy)
- GrNastavPozici(213,269);
- Gr¼tiI¼íslo("",i,2,0,224);
- if ((kon[36]/60*60+abs(i))>1) kon[36]=kon[36]/60*60+abs(i);
- g ;turnaj - ƒas pro ƒerného (minuty)
- GrNastavPozici(189,293);
- Gr¼tiI¼íslo("",i,2,0,224);
- if ((abs(i)*60+kon[37]%60)>1) kon[37]=abs(i)*60+kon[37]%60;
- h ;turnaj - ƒas pro ƒerného (sekundy)
- GrNastavPozici(213,293);
- Gr¼tiI¼íslo("",i,2,0,224);
- if ((kon[37]/60*60+abs(i))>1) kon[37]=kon[37]/60*60+abs(i);
- -c1----------------------SEZNAM PODM╓NEK-----------TENTO ⁿ╡DEK NEM╖NIT!-------
- /a (x>189) && (y>192) && (x<257) && (y<205)
- /b (x>188) && (y>220) && (x<212) && (y<230)
- /c (x>188) && (y>244) && (x<212) && (y<254)
- /d (x>212) && (y>244) && (x<228) && (y<254)
- /e (x>188) && (y>269) && (x<212) && (y<279)
- /f (x>212) && (y>269) && (x<228) && (y<279)
- /g (x>188) && (y>293) && (x<212) && (y<303)
- /h (x>212) && (y>293) && (x<228) && (y<303)
- /i (x>432) && (y>290) && (x<450) && (y<303)
- =SP---------------------------------------------------------------------------
-
- ;-h---------------------------------------------------------------------------
- void MenuJiné( void ) // nastavení myτi, animací
- -s--MenuJiné ■ 8 -2 -6 3
- MenuJiné
- :ok=0
- *:ok==0
- Nastavení~prodlev
- 1!
- ____________:Klik(0,1)________________
- /a /b /c
- prodleva~kliknutí prodleva~animace :ok=1
- a! b!
- -o1----------------------SEZNAM OPERAC╓------------TENTO ⁿ╡DEK NEM╖NIT!-------
- 1 ;vykreslení
- Okno(213,214,427,266,0);
- GrNastavBarvuPozadí(6);
- Piτ(215,216,1,Txt(21));
- Piτ(215,228,0," ");
- Piτ(215,240,1,Txt(22));
- Piτ(215,252,0," ");
- TlaĒtko(405,250,"OK",0);
- GrNastavBarvuPop²edí(14);
- GrNastavPozici(215,228);GrPiτL¼íslo(kon[38],-1);
- GrNastavPozici(215,252);GrPiτL¼íslo(kon[39],-1);
- a ;naƒtení prodlevy myτi
- GrNastavPozici(216,229);
- Gr¼tiI¼íslo("",i,3,0,224);
- if (i>50) kon[38]=i;
- b ;naƒtení prodlevy animace
- GrNastavPozici(216,253);
- Gr¼tiI¼íslo("",i,2,0,224);
- kon[39]=abs(i);
- -c1----------------------SEZNAM PODM╓NEK-----------TENTO ⁿ╡DEK NEM╖NIT!-------
- /a (x>215) && (y>228) && (x<239) && (y<238)
- /b (x>215) && (y>252) && (x<231) && (y<262)
- /c (x>405) && (y>250) && (x<423) && (y<263)
- =SP---------------------------------------------------------------------------
-
- ;-h---------------------------------------------------------------------------
- int Hláτka(int typ, string text) // informaƒní/varovné/dotazovací okno
- -s--Hláτka ■ 33 -2 -1 3
- Hláτka
- 1!
- _________________│__________________
- ____typ~ikony?____ text _tlaƒítka_ ƒekání~na~volbu
- \0 \1 \2 t! /:typ==2 / *:1
- informace varování dotaz ano/ne ok :Klik(0,1)
- 2! 3! 4! a! b! stlaƒeno?
- v!
- -o1----------------------SEZNAM OPERAC╓------------TENTO ⁿ╡DEK NEM╖NIT!-------
- 1 ;vykreslení pat²iƒn╪ velkého okna
- i=StrVelikost(text)*Grµí²kaZnaku+1;
- Okno((592-i)/2,215,(688+i)/2,265,0);
- 2 ;ikonka informace
- GrKresliP²edm╪t(58,1,(592-i)/2+3,218);
- 3 ;ikonka varování
- GrKresliP²edm╪t(73,1,(592-i)/2+3,218);
- 4 ;ikonka dotaz
- GrKresliP²edm╪t(88,1,(592-i)/2+3,218);
- t ;text hláτky
- Piτ((592-i)/2+46,227,1,text);
- v ;stlaƒeno tlaƒítko?
- if (typ==2)
- {
- if (((x>(688+i)/2-53) && (y>249) && (x<(688+i)/2-26) && (y<262)) ||
- (k==KlEnter)) return(1);
- if (((x>(688+i)/2-22) && (y>249) && (x<(688+i)/2-3) && (y<262)) ||
- (k==KlEsc)) return(0);
- } else
- if (((x>(688+i)/2-22) && (y>249) && (x<(688+i)/2-3) && (y<262)) ||
- (k==KlEnter)) return(-1);
- a ;tlaĒtka ANO, NE
- TlaĒtko((688+i)/2-53,249,"ANO",0);
- TlaĒtko((688+i)/2-22,249,"NE",0);
- b ;tlaĒtko OK
- TlaĒtko((688+i)/2-22,249,"OK",0);
- -c1----------------------SEZNAM PODM╓NEK-----------TENTO ⁿ╡DEK NEM╖NIT!-------
- \0 typ ?? case 0:
- \1 case 1:
- \2 case 2:
- =SP---------------------------------------------------------------------------
-
- ;-h---------------------------------------------------------------------------
- string Otev²ít(string ext) // otev²e soubor s p²iponou ext
- -s--Otev²ít ■ 10 -2 2 3
- Otev²ít
- 1!
- Nekoneƒn∞~cyklus
- *:1
- vykreslení~souborà
- 2!
- ___________________________:Klik(0,0)___________________________
- /:tleve==1 /:k==KlEnter /:k==KlNahoru /:k==KlDolà /:k==KlEsc
- │ 'ano │ │ konec
- │ │ │ :return("")
- /a │ │
- zm╪na~posun ___nahoru__ │
- :y=(y-22)/GrV∞τkaZnaku /:posun>0 /:misto>0 │
- ____volba?____ kurzor posun │
- /:y==posun /:(y<44)&&(y<m) :posun--! :posun=0! │
- "ano ne :misto--! │
- :Inicializace() :posun=y │
- :Obnovµachovnici() ____________dolà___________
- :return(obsah[misto+posun]) /:(posun<44)&&(posun<m-1) /:misto<m-45
- kurzor posun
- :posun++! :posun=44!
- :misto++!
- -o1----------------------SEZNAM OPERAC╓------------TENTO ⁿ╡DEK NEM╖NIT!-------
- 1 ;naƒtení souborà do pole
- Adresá²NastavAktuální("*\\");
- adresar=SouborAbsolutníCesta(adresar);
- if (adresar[StrVelikost(adresar)-1]!='\\') adresar+='\\';
- PoloºkaAdresá²eNajdiPrvní
- (adresar+"*."+ext,SouborAtributSkryt∞|SouborAtributAdresá²,pa);
- m=0;
- while ((! DOSChyba()) && (m<512))
- {
- obsah[m++]=pa.Jméno;
- PoloºkaAdresá²eNajdiDalτí(pa);
- }
- if (m==0)
- {
- Hláτka(1,Txt(6));
- return("");
- }
- for (i=0; i<m-1; i++)
- for (ii=i+1; ii<m; ii++)
- if (obsah[ii]<obsah[i])
- {
- str=obsah[ii];
- obsah[ii]=obsah[i];
- obsah[i]=str;
- }
- misto=0;posun=0;
- 2 ;vykreslení
- Okno(270,20,370,474,0);
- for (z=0; (z<45) && (z<m); z++)
- {
- GrNastavBarvuPozadí(kon[18]);
- Piτ(271,21+z*GrV∞τkaZnaku,posun!=z,obsah[misto+z]);
- }
- if (ext=="POS")
- {
- for (y=2; y<=9; y++)
- for (x=2; x<=9; x++) p[x][y]=0;
- txt=SouborOtev²i("*\\"+obsah[misto+posun],SouborP²ístup¼tení|SouborP²ístupTextov∞);
- for (i=0; i<=5; i++)
- {
- pgn[i]="";
- do zn=Soubor¼tiZnak(txt); while (zn!='"');
- do {
- zn=Soubor¼tiZnak(txt);
- if (zn!='"') pgn[i]=pgn[i]+zn;
- } while (zn!='"');
- }
- z=0;
- while (SouborKonec(txt)==0)
- {
- px=Soubor¼tiZnak(txt);
- if ((z%2!=0) && (px!=' ') && (px!=';') && (px!=':'))
- {
- o=1;
- switch (px)
- {
- case 'J': o=2;break;
- case 'S': o=3;break;
- case 'V': o=4;break;
- case 'D': o=5;break;
- case 'K': o=6;break;
- }
- if (o!=1) px=Soubor¼tiZnak(txt);
- o=o*z;
- py=Soubor¼tiZnak(txt);
- p[px-95][58-py]=o;
- }
- if (px==':')
- if (z==0) z=1; else z=-1;
- if (px==';') z=2;
- }
- SouborZav²i(txt);
- s=p;
- Okno(390,20,481,111,1);
- for (y=0; y<=7; y++)
- for (x=0; x<=7; x++)
- {
- if ((x+y)%2==0)
- GrKresliP²edm╪t(148,1,392+x*11,22+y*11); else
- GrKresliP²edm╪t(149,1,392+x*11,22+y*11);
- if (p[x+2][y+2]!=0)
- if (p[x+2][y+2]<0)
- GrKresliP²edm╪t(141+p[x+2][y+2]*-1,1,392+x*11,22+y*11); else
- GrKresliP²edm╪t(135+p[x+2][y+2],1,392+x*11,22+y*11);
- }
- }
- x P²epniNaText();
- for (i=0; i<=5; i++) TxtPiτⁿet╪zec(pgn[i]+"\n");
- ¼ekejNaKlávesu();
- -c1----------------------SEZNAM PODM╓NEK-----------TENTO ⁿ╡DEK NEM╖NIT!-------
- /a (x>271) && (y>21) && (x<369) && (y<468)
- =SP---------------------------------------------------------------------------
-
- ;-h---------------------------------------------------------------------------
- void Uloºit(string ext) // uloºí zadan∞ soubor
- -s--Uloºit ■ 4 -2 -28 3
- Uloºit
- 1!
- -o1----------------------SEZNAM OPERAC╓------------TENTO ⁿ╡DEK NEM╖NIT!-------
- 1 ;t╪lo
- Okno(213,232,427,248,0);
- GrNastavPozici(216,234);
- Gr¼tiSⁿet╪zec("[soubor."+ext+"]: ",str,12,0,14);
- if (str=="") Hláτka(1,"Nic nezadáno."); else
- {
- str="*\\"+str;
- if (SouborExistuje(str)!=0) SouborSmaº(str);
- txt=SouborOtev²i(str,SouborP²ístupZápis|SouborP²ístupTextov∞);
- SouborPiτⁿet╪zec(txt,"[ White \""+pgn[0]+"\" ]\n");
- SouborPiτⁿet╪zec(txt,"[ Black \""+pgn[1]+"\" ]\n");
- SouborPiτⁿet╪zec(txt,"[ Site \""+pgn[2]+"\" ]\n");
- SouborPiτⁿet╪zec(txt,"[ Date \""+pgn[3]+"\" ]\n");
- if (ext!="PGN")
- {
- SouborPiτⁿet╪zec(txt,"[ Check \""+pgn[4]+"\" ]\n");
- SouborPiτⁿet╪zec(txt,"[ Changes \""+pgn[5]+"\" ]\n");
- }
- if (ext=="PGN")
- {
- for (i=0; i<=delka; i++)
- {
- if (partiar[i].s<2)
- {
- str="";
- switch (partiar[i].k)
- {
- case 2: str=str+"J";break;
- case 3: str=str+"S";break;
- case 4: str=str+"V";break;
- case 5: str=str+"D";break;
- case 6: str=str+"K";break;
- }
- px=partiar[i].x1+95;
- py=58-partiar[i].y1;
- str=str+px+py;
- if (partiar[i].z==0) str=str+"-"; else str=str+"x";
- px=partiar[i].x2+95;
- py=58-partiar[i].y2;
- str=str+px+py;
- if (partiar[i].p!=0)
- switch (abs(partiar[i].p))
- {
- case 2: str=str+"=J";break;
- case 3: str=str+"=S";break;
- case 4: str=str+"=V";break;
- case 5: str=str+"=D";break;
- }
- if ((kon[6]>0) && (partiar[i].k==6) && (abs(partiar[i].x1-partiar[i].x2)==2))
- if (partiar[i].x1<partiar[i].x2) str="0-0"; else str="0-0-0";
- if (partiar[i].s==1) str=str+'+';
- } else
- {
- if (partiar[i].s==2)
- {
- if (i%2==0) str="0:1"; else str="1:0";
- } else str="1/2";
- }
- if (i%2==0)
- {
- if (partiar[i].s<2)
- {
- SouborPiτL¼íslo(txt,(i+1)/2+1,-1);
- SouborPiτZnak(txt,'.');
- }
- SouborPiτⁿet╪zec(txt,str+" ");
- } else SouborPiτⁿet╪zec(txt,str+" ");
- }
- } else
- {
- for (z=1; z<=4; z++)
- {
- switch (z)
- {
- case 1: SouborPiτⁿet╪zec(txt,"Bíl∞: ");break;
- case 3:
- SouborPiτZnak(txt,';');
- SouborPiτNov∞ⁿádek(txt);
- SouborPiτⁿet╪zec(txt,"¼ern∞: ");
- break;
- }
- for (y=2; y<=9; y++)
- for (x=2; x<=9; x++)
- {
- px=x+95;
- py=58-y;
- str=""+px+py+" ";
- if (((z==1) && (s[x][y]==1)) || ((z==3) && (s[x][y]==-1)))
- SouborPiτⁿet╪zec(txt,str);
- if (((z==2) && (s[x][y]>1)) || ((z==4) && (s[x][y]<-1)))
- {
- switch (abs(s[x][y]))
- {
- case 2: str="J"+str;break;
- case 3: str="S"+str;break;
- case 4: str="V"+str;break;
- case 5: str="D"+str;break;
- case 6: str="K"+str;break;
- }
- SouborPiτⁿet╪zec(txt,str);
- }
- }
- }
- }
- SouborZav²i(txt);
- }
- -c1----------------------SEZNAM PODM╓NEK-----------TENTO ⁿ╡DEK NEM╖NIT!-------
- =SP---------------------------------------------------------------------------
-
- ;-h---------------------------------------------------------------------------
- void ¼istiµachovnici( void ) // vyprázdní τachovnici a nastaví její okraje
- -s--¼istiµachovnici ■ 2 -2 -24 3
- ¼istiµachovnici
- 1!
- -o1----------------------SEZNAM OPERAC╓------------TENTO ⁿ╡DEK NEM╖NIT!-------
- 1 ;ƒiτtení τachovnice a definice okrajà
- for (y=0; y<=11; y++)
- for (x=0; x<=11; x++)
- if ((x==0)||(y==0)||(x==1)||(y==1)||(x==10)||(y==10)||(x==11)||(x==12))
- s[x][y]=9; else s[x][y]=0;
- -c1----------------------SEZNAM PODM╓NEK-----------TENTO ⁿ╡DEK NEM╖NIT!-------
- =SP---------------------------------------------------------------------------
-
- ;-h---------------------------------------------------------------------------
- void Inicializace( void ) // deklarace prom╪nn∞ch
- -s--Inicializace ■ 2 -2 -25 3
- Inicializace
- 1!
- -o1----------------------SEZNAM OPERAC╓------------TENTO ⁿ╡DEK NEM╖NIT!-------
- 1 ;t╪lo
-
- ¼istiµachovnici();
-
- // vkládání figurek
- for (y=8; y<=9; y++)
- for (x=2; x<=9; x++)
- {
- if (y==8) // p²ední linie (p╪τci)
- s[x][y]=1; else // zadní linie (v╪º╪,jezdci,st²elci,dáma,král)
- {
- switch (x)
- {
- case 2: s[x][y]=4;break;
- case 3: s[x][y]=2;break;
- case 4: s[x][y]=3;break;
- case 5: s[x][y]=5;break;
- case 6: s[x][y]=6;break;
- case 7: s[x][y]=3;break;
- case 8: s[x][y]=2;break;
- case 9: s[x][y]=4;
- }
- }
- s[x][11-y]=s[x][y]*-1;
- }
-
- // nadeklarování základních parametrà
- n=1; // zaƒíná bíl∞
- delka=-1; // partiá² je zatím prázdn∞
- pozice=-1;
- for (i=0; i<=3; i++) rosada[i]=0; // uvoln╪ní práva roτády
- for (ii=0; ii<=1; ii++)
- for (i=0; i<=15; i++) zajate[ii][i]=0;
- ox=-1;
- matpat=0;
- smaz=1;
- count=0;
- cas_b.Hodiny=0;cas_b.Minuty=0;cas_b.Sekundy=0;cas_b.Setiny=0;
- cas_c=cas_b;
- -c1----------------------SEZNAM PODM╓NEK-----------TENTO ⁿ╡DEK NEM╖NIT!-------
- =SP---------------------------------------------------------------------------
-
- ;-h---------------------------------------------------------------------------
- void NabídkaPartie( void ) // nabídka práce s partií, uonƒení programu
- -s--NabídkaPartie ■ 2 -2 -3 3
- NabídkaPartie
- a!
- ___________________________menu~partie___________________________
- \A \1 \2 \3
- opravdu? │ ukládání KONEC
- /:Hláτka(2,Txt(53))==1 │ _________zápis__________ :konec=1!
- :Inicializace() │ /:(mod==1)&&(delka>-1) /:mod==0
- g! │ :Uloºit("PGN") :Uloºit("POS")
- │
- z!
- ________ƒtení_________
- /:(mod==1) /
- partie pozice
- :str=Otev²ít("PGN"); :str=Otev²ít("POS");
- /x / /:str==""
- │ obnovení~starého obnovení
- p! o! o!
- -o1----------------------SEZNAM OPERAC╓------------TENTO ⁿ╡DEK NEM╖NIT!-------
- a TlaĒtko(2,2,vyber[0][0].nazev,1);
- p ;naƒtení partie
- Inicializace();
- b=1;c=1; // pro nov╪ naƒtenou partii budou oba hráƒi lidé
- txt=SouborOtev²i("*\\"+str,SouborP²ístup¼tení|SouborP²ístupTextov∞);
- for (i=0; i<=3; i++)
- {
- pgn[i]="";
- do zn=Soubor¼tiZnak(txt); while (zn!='"');
- do {
- zn=Soubor¼tiZnak(txt);
- if (zn!='"') pgn[i]=pgn[i]+zn;
- } while (zn!='"');
- }
- for (i=1; i<=3; i++) Soubor¼tiZnak(txt);
- zn=Soubor¼tiZnak(txt);
- while (SouborKonec(txt)==0)
- {
- if (zn==':')
- {
- delka++;
- partiar[delka].s=2;break;
- } else
- if (zn=='/')
- {
- delka++;
- partiar[delka].s=3;break;
- } else
- {
- if (n==1)
- {
- while (zn!='.') zn=Soubor¼tiZnak(txt);
- zn=Soubor¼tiZnak(txt);
- }
- if (zn=='0')
- {
- Soubor¼tiZnak(txt);Soubor¼tiZnak(txt);
- zn=Soubor¼tiZnak(txt);
- v[1].nejlepsi.x1=6;
- v[1].nejlepsi.y1=9;v[1].nejlepsi.y2=9;
- if (zn=='-')
- {
- v[1].nejlepsi.x2=4;
- Soubor¼tiZnak(txt);
- } else
- {
- v[1].nejlepsi.x2=8;
- SouborNastavPozici(txt,SouborPozice(txt)-1,0);
- }
- } else
- if (zn=='-')
- {
- Soubor¼tiZnak(txt);
- zn=Soubor¼tiZnak(txt);
- v[1].nejlepsi.x1=6;
- v[1].nejlepsi.y1=2;v[1].nejlepsi.y2=2;
- if (zn=='-')
- {
- v[1].nejlepsi.x2=4;
- Soubor¼tiZnak(txt);
- } else
- {
- v[1].nejlepsi.x2=8;
- SouborNastavPozici(txt,SouborPozice(txt)-1,0);
- }
- } else
- {
- if ((zn=='J') || (zn=='S') || (zn=='V') || (zn=='D') || (zn=='K'))
- zn=Soubor¼tiZnak(txt);
- v[1].nejlepsi.x1=zn-95;
- v[1].nejlepsi.y1=58-Soubor¼tiZnak(txt);
- Soubor¼tiZnak(txt);
- v[1].nejlepsi.x2=Soubor¼tiZnak(txt)-95;
- v[1].nejlepsi.y2=58-Soubor¼tiZnak(txt);
- }
- zn=Soubor¼tiZnak(txt);
- if (zn=='=')
- {
- zn=Soubor¼tiZnak(txt);
- switch (zn)
- {
- case 'J': v[1].nejlepsi.p=2*n;break;
- case 'S': v[1].nejlepsi.p=3*n;break;
- case 'V': v[1].nejlepsi.p=4*n;break;
- case 'D': v[1].nejlepsi.p=5*n;break;
- }
- } else
- {
- if (zn=='+') Soubor¼tiZnak(txt);
- v[1].nejlepsi.p=0;
- }
- x1=v[1].nejlepsi.x1;
- y1=v[1].nejlepsi.y1;
- x2=v[1].nejlepsi.x2;
- y2=v[1].nejlepsi.y2;
- Táhni();
- }
- zn=Soubor¼tiZnak(txt);
- if (zn=='+')
- { Soubor¼tiZnak(txt);zn=Soubor¼tiZnak(txt); }
- if ((zn=='0') || (zn=='1')) zn=Soubor¼tiZnak(txt);
- }
- SouborZav²i(txt);
- z ;zálohování PGN informací
- for (i=0; i<=5; i++) pgn[i+6]=pgn[i];
- o ;obnovení PGN informací
- for (i=6; i<=11; i++) pgn[i-6]=pgn[i];
- c ¼aruj(¼tverec);
- g ;p²emazání PGN informací
- for (i=0; i<=5; i++) pgn[i]="";
- -c1----------------------SEZNAM PODM╓NEK-----------TENTO ⁿ╡DEK NEM╖NIT!-------
- /x str!=""
- \A Nabídka(2,19,0,0) ?? case 0:
- \1 case 1:
- \2 case 2:
- \3 case 3:
- =SP---------------------------------------------------------------------------
-
- ;-h---------------------------------------------------------------------------
- void NabídkaVolby( void ) // nabídka sociálních funkcí, editace, tahy
- -s--NabídkaVolby ■ 5 -2 -9 3
- NabídkaVolby
- a!
- ________________menu~volby_______________
- \A \1 \2 \3 \4 \5
- zp╪t dop²edu prohodit vzdát remis na~tahu~ƒlov╪k?
- /t /t /t /k /k /c
- │ │ :pozice=-1 │ │ _hra/edit_
- z! v! :delka=-1 e! r! /:mod==1 /
- :n=n*-1 │ │
- :mod=0! :mod=1!
- -o1----------------------SEZNAM OPERAC╓------------TENTO ⁿ╡DEK NEM╖NIT!-------
- a TlaĒtko(55,2,vyber[0][1].nazev,1);
- z ;tah zp╪t
- if (pozice>-1)
- {
- if (partiar[pozice].s<2)
- {
- h=1;
- v[1].posledni=partiar[pozice];
- for (i=0; i<=3; i++) v[1].posledni.ros[i]=partiar[pozice].ros[i];
- n=n*-1;Vra£Tah();
- }
- pozice--;
- }
- v ;vp²ed
- if (pozice<delka)
- if (partiar[pozice+1].s<2)
- {
- v[1].nejlepsi=partiar[pozice+1];
- x1=partiar[pozice+1].x1;
- y1=partiar[pozice+1].y1;
- x2=partiar[pozice+1].x2;
- y2=partiar[pozice+1].y2;
- iv=delka;Táhni();delka=iv;
- } else pozice++;
- e ;hláτka o rezignaci a za²azení této informace do partiá²e
- if (delka>-1)
- {
- if (n==1) i=0; else i=1;
- Hláτka(1,Txt(7+i)+Txt(54));
- partiar[++delka].s=2;pozice++;
- }
- r ;nabídka remízy oponujícímu hráƒi (ƒlov╪ku/poƒítaƒi)
- if (delka>-1)
- if (((n==1) && (c==1)) || ((n==-1) && (b==1)))
- {
- if (Hláτka(2,Txt(55))==1)
- {
- partiar[++delka].s=3;pozice++;
- }
- } else
- {
- ja=n*-1;OceσPozici(0);
- if (v[h].posledni.h<=0)
- {
- partiar[++delka].s=3;pozice++;
- Hláτka(0,Txt(56));
- } else Hláτka(0,Txt(57));
- }
- -c1----------------------SEZNAM PODM╓NEK-----------TENTO ⁿ╡DEK NEM╖NIT!-------
- /c ((n==1) && (b==1)) || ((n==-1) && (c==1))
- /t kon[33]!=2
- /k (mod==1) && (partiar[delka].s<2)
- \A Nabídka(55,19,0,1) ?? case 0:
- \1 case 1:
- \2 case 2:
- \3 case 3:
- \4 case 4:
- \5 case 5:
- =SP---------------------------------------------------------------------------
-
- ;-h---------------------------------------------------------------------------
- void NabídkaNastavení( void ) // nabídka nastavení uºivatelského rozhraní
- -s--NabídkaNastavení ■ 2 -2 64 3
- NabídkaNastavení
- a!
- _______________________________________________menu~nastavení______________________________________________
- \A \1 \2 \3 \4 \5 \6 \7 \8
- ____animace~figur____ │ │ │ :MenuHledání() │ ƒti~cfg │ :MenuJiné()
- /:kon[28]==1 / │ │ │ │ :Konfig(1) │
- vyp zap │ │ _____poƒ~ƒern∞_____ │ │
- :kon[28]=0 :kon[28]=1 │ │ /:kon[32]==0 / uloº~cfg ƒti~def
- "v "z │ │ vyp zap :Konfig(0) :Konfig(2)
- :Hláτka(0,Txt(12)) :Hláτka(0,Txt(13)); │ │ :kon[32]=1 :kon[32]=0
- ____p²etah____ │ │ :Hláτka(0,Txt(8)+Txt(15));
- /:kon[29]==1 / │ │
- vyp zap │ :Hláτka(0,Txt(8)+Txt(14))
- :kon[29]=0 :kon[29]=1 │
- 'v 'z │
- ______poƒ~bíl∞_____
- /:kon[31]==0 /
- vyp zap
- :kon[31]=1 :kon[31]=0
- │ :Hláτka(0,Txt(7)+Txt(15));
- │
- :Hláτka(0,Txt(7)+Txt(14))
- -o1----------------------SEZNAM OPERAC╓------------TENTO ⁿ╡DEK NEM╖NIT!-------
- a TlaĒtko(100,2,vyber[0][2].nazev,1);
- v Viditeln∞();
- z ;ƒelem vzad
- VlevoVbok(); VlevoVbok();
- -c1----------------------SEZNAM PODM╓NEK-----------TENTO ⁿ╡DEK NEM╖NIT!-------
- \A Nabídka(100,19,0,2) ?? case 0:
- \1 case 1:
- \2 case 2:
- \3 case 3:
- \4 case 4:
- \5 case 5:
- \6 case 6:
- \7 case 7:
- \8 case 8:
- =SP---------------------------------------------------------------------------
-
- ;-h---------------------------------------------------------------------------
- void NaƒtiJazyk( void ) // naƒte jazykov∞ balíƒek (CZ+ENG) z LNG souboru
- -s--NaƒtiJazyk ■ 2 -2 -26 3
- NaƒtiJazyk
- 1!
- -o1----------------------SEZNAM OPERAC╓------------TENTO ⁿ╡DEK NEM╖NIT!-------
- 1 ;naƒtení jazykového balíƒku
- txt=SouborOtev²i("*\\partie.lng",SouborP²ístup¼tení|SouborP²ístupTextov∞);
- Soubor¼tiNov∞ⁿádek(txt);
- for (y=0; y<=1; y++)
- {
- Soubor¼tiI¼íslo(txt,z);Soubor¼tiNov∞ⁿádek(txt);
- for (i=0; i<=z; i++)
- {
- Soubor¼tiI¼íslo(txt,vyber[y][i].delka);Soubor¼tiNov∞ⁿádek(txt);
- for (ii=0; ii<=vyber[y][i].delka+1; ii++)
- for (iii=0; iii<=1; iii++)
- {
- Soubor¼tiSⁿet╪zec(txt,str);
- StrSmaº(str,StrVelikost(str)-1,1);
- if (ii==0)
- {
- if (iii==kon[40]) vyber[y][i].nazev=str;
- } else
- if (iii==kon[40]) vyber[y][i].nabidka[ii-1]=str;
- }
- }
- }
- SouborZav²i(txt);
- -c1----------------------SEZNAM PODM╓NEK-----------TENTO ⁿ╡DEK NEM╖NIT!-------
- =SP---------------------------------------------------------------------------
-
- ;-h---------------------------------------------------------------------------
- void NabídkaZobrazení( void ) // nabídka pro grafick∞ interface
- -s--NabídkaZobrazení ■ 2 -2 -11 3
- NabídkaZobrazení
- a!
- _________________menu~zobrazení________________
- \A \1 \2 \3 \4 \5 \6 \7
- 3D │ Partiá² │ figurky │ prost²edí.. │
- A! │ :i=2!p │ :i=4!p │ :MenuProst²edí() │
- │ │ │ │
- Fisherovky ocen╪né~uzly PGN~info _______jazyk________
- :i=1!p :i=3!p :i=5!p ____zm╪na_____ naƒtení
- /:kon[40]==0 / :NaƒtiJazyk()
- :kon[40]=1 :kon[40]=0
- -o1----------------------SEZNAM OPERAC╓------------TENTO ⁿ╡DEK NEM╖NIT!-------
- a TlaĒtko(177,2,vyber[0][3].nazev,1);
- p ;prohodní konfiguraƒní hodnoty (0,1)
- if (kon[i+20]==1)
- {
- kon[i+20]=0;
- str=Txt(23);
- } else
- {
- kon[i+20]=1;
- str=Txt(24);
- }
- Hláτka(0,str+vyber[0][3].nabidka[i]);
- d Gr¼tiZnak("?",Znak,1,0x07); /* edit ano, ƒerná/sv.τedá*/
- b GrNastavBarvuPop²edí /* Partie */
- A ;spustí externí program 3D τachovnice
- P²epniNaText();
- if (SouborExistuje("*\\partie.kom")!=0) SouborSmaº("*\\partie.kom");
- kom=SouborOtev²i("*\\partie.kom",SouborP²ístupZápis|SouborP²ístupBinární);
- SouborPiτⁿet╪zec(kom,"[ PARTIE communication file (for subprograms) ]");
- SouborPiτNov∞ⁿádek(kom);
- for (y=2; y<=9; y++)
- for (x=2; x<=9; x++) SouborPiτL¼íslo(kom,s[x][y],2);
- SouborZav²i(kom);
- ¼ekej(1000);str="*\\partie3d.exe";DOSProve╘(str);
- kom=SouborOtev²i("*\\partie.kom",SouborP²ístup¼tení|SouborP²ístupBinární);
- Soubor¼tiNov∞ⁿádek(kom);Soubor¼tiL¼íslo(kom,l);SouborZav²i(kom);
- cas.Hodiny=l/3600;l-=l/3600*3600;cas.Minuty=l/60;l-=l/60*60;cas.Sekundy=l;
- if (n==1)
- ¼asPosuσ(cas_b,cas.Hodiny,cas.Minuty,cas.Sekundy,cas.Setiny); else
- ¼asPosuσ(cas_c,cas.Hodiny,cas.Minuty,cas.Sekundy,cas.Setiny);
- GrNastavMód(2);GrNastavPàvodníPaletu();
- -c1----------------------SEZNAM PODM╓NEK-----------TENTO ⁿ╡DEK NEM╖NIT!-------
- \A Nabídka(177,19,0,3) ?? case 0:
- \1 case 1:
- \2 case 2:
- \3 case 3:
- \4 case 4:
- \5 case 5:
- \6 case 6:
- \7 case 7:
- =SP---------------------------------------------------------------------------
-
- ;-h---------------------------------------------------------------------------
- void NabídkaInformace( void ) // nabídka vyvolá informaƒní okna
- -s--NabídkaInformace ■ 14 -2 -23 3
- NabídkaInformace
- menu~informace
- a!
- menu~informace
- \A \1
- Vτe O~programu
- A! 3!
- -o1----------------------SEZNAM OPERAC╓------------TENTO ⁿ╡DEK NEM╖NIT!-------
- a TlaĒtko(254,2,vyber[0][4].nazev,1);
- 3 ;okno s informací
- Okno(15,8,626,464,0);
- GrNaƒtiBMP(17,10,"*\\partie_L.bmp",0,0,-1,-1,1);
- GrNaƒtiBMP(453,193,"*\\partie_K.bmp",0,0,-1,-1,1);
- Piτ(206,10,1,"PARTIE V1.01 (public domain)");
- Piτ(206,34,1,"Program, design: Libor Tinka (vlevo)");
- Piτ(206,46,1,"Grafika: Jakub Grós (vpravo)");
- Piτ(206,70,1,"Tuto verzi programu (1.00) je moºné voln╪ τí²it,");
- Piτ(206,82,1,"ne vτak za úƒelem zisku.");
- Piτ(206,94,1,"Firma SGP tedy màºe tento program publikovat.");
- Piτ(206,106,1,"Program slouºí k uºívání a demonstraƒním úƒelàm,");
- Piτ(206,118,1,"jakékoliv pozm╪σování zdrojového kódu nebo pouºívání");
- Piτ(206,130,1,"urƒit∞ch blokà programu samostatn╪ je moºné pouze");
- Piτ(206,142,1,"po dohod╪ s programátorem hry.");
- Piτ(206,154,1,"Pozm╪σování grafiky hry prost²ednictvím k tomu");
- Piτ(206,166,1,"urƒen∞mi nástroji, nebo pouºívání n╪kter∞ch");
- Piτ(206,178,1,"grafick∞ch ƒástí programu je moºné pouze");
- Piτ(206,190,1,"po dohod╪ s grafikem hry.");
- Piτ(206,214,1,"Kontakt s autory:");
- Piτ(206,238,1,"Libor Tinka");
- Piτ(206,250,1,"Kurτova 6");
- Piτ(206,262,1,"Brno");
- Piτ(206,274,1,"63500");
- Piτ(206,286,1,"ltinka@gvid.cz");
- Piτ(206,310,1,"Jakub Grós");
- Piτ(206,322,1,"Sokolovská 277");
- Piτ(206,334,1,"Uherské Hradiτt╪");
- Piτ(206,346,1,"68601");
- Piτ(206,358,1,"Jakub Grós");
- Piτ(206,370,1,"jagous2@seznam.cz");
- Piτ(57,410,1,"http://partie.webzdarma.cz");
- Klik(0,1);
- GrNastavPàvodníPaletu();
- A ;zobrazí nápov╪dní okno
- ii=0;
- do {
- txt=SouborOtev²i("*\\partie.hlp",SouborP²ístup¼tení|SouborP²ístupTextov∞);
- for (i=1; i<=ii; i++) Soubor¼tiNov∞ⁿádek(txt);
- Okno(0,68,639,413,0);
- for (i=0; i<=30; i++)
- {
- Soubor¼tiSⁿet╪zec(txt,str);StrSmaº(str,StrVelikost(str)-1,1);
- Piτ(2,70+i*11,1,str);
- }
- SouborZav²i(txt);
- Klik(0,1);
- if ((k==KlNahoru) && (ii>0)) ii--;
- if ((k==KlDolà) && (ii<105)) ii++;
- if ((k==KlPageUp) && (ii-15>0)) ii-=15;
- if ((k==KlPageDown) && (ii<90)) ii+=15;
- } while (k!=KlEsc);
- -c1----------------------SEZNAM PODM╓NEK-----------TENTO ⁿ╡DEK NEM╖NIT!-------
- \A Nabídka(254,19,0,4) ?? case 0:
- \1 case 1:
- =SP---------------------------------------------------------------------------
-
- ;-h---------------------------------------------------------------------------
- void RozvinovacíNabídky( void ) // veτkeré volby z horního panelu
- -s--RozvinovacíNabídky ■ 5 -2 7 3
- RozvinovacíNabídky
- :smaz=1
- ___________________________Ràzné~oblasti~kliknutí___________________________
- /a /b /c /d /e
- :NabídkaPartie() :NabídkaVolby() :NabídkaNastavení() :NabídkaZobrazení() :NabídkaInformace()
- -o1----------------------SEZNAM OPERAC╓------------TENTO ⁿ╡DEK NEM╖NIT!-------
- -c1----------------------SEZNAM PODM╓NEK-----------TENTO ⁿ╡DEK NEM╖NIT!-------
- /a (x>2) && (y>2) && (x<53) && (y<15)
- /b (x>55) && (y>2) && (x<97) && (y<15)
- /c (x>100) && (y>2) && (x<175) && (y<15)
- /d (x>177) && (y>2) && (x<252) && (y<15)
- /e (x>254) && (y>2) && (x<329) && (y<15)
- =SP---------------------------------------------------------------------------
-
- ;-h---------------------------------------------------------------------------
- void main( void ) // ░░▒▒▓▓██ PARTIE V1.01 (public domain) ██▓▓▒▒░░
- -s--Partie ■ 14 -2 27 3
- _______________Partie______________
- Inicializace │ Konec
- 1! │ :MyτKonecObsluhy()
- :GrNastavMód(2)! │
- :GrNastavV∞stup(2)! │
- :GrNastavText(1)! │
- Spuτt╪ní~intra │
- i! Uºivatelské~prost²edí
- :GrNastavPàvodníPaletu() Hlavní~cyklus
- :MyτZaƒátekObsluhy() *:konec==0
- :GrNastavBarvuPozadí(0)! Vykreslení
- :GrSmaºOkno()! :b=kon[31]
- :AnimNastavGrV∞stup(2)! :c=kon[32]
- 2!
- __________________________Mód?__________________________
- /:mod==1 /
- herní │
- :tah="~"! │
- ______________Je~na~tahu~ƒlov╪k?______________ │
- /x / │
- Ne~-~v∞poƒet~tahu Ano~-~práce~s~myτí │
- vyhledávání taºení :Klik(1,0) │
- :VyhledejTah(kon[34],1) /q ¼ekání~na~klik │
- animace │ │
- x! │ │
- :Táhni() __________Ràzné~oblasti~kliknutí_________ │
- x! /a /b / │
- /:kon[28]==1 τachovnice "horní~panel pozadí │
- 'animace :x1=(x-22)/39+2 v! /:tprave==1 │
- :y1=(y-128)/28+2 :RozvinovacíNabídky(); pozn. │
- __typ~pohybu?__ :Notes("pozadí"); │
- /:kon[29]==1 / │
- │ tah/oznaƒení │
- │ /:ox==-1 / │
- │ znaƒení tah │
- │ :ox=x1 :x2=x1 │
- │ :oy=y1 :y2=y1 │
- │ :x1=ox │
- │ :y1=oy │
- │ :ox=-1 │
- │ :oy=n │
- │ t! │
- ___tah/info___ Animovat? │
- /:tleve==1 /:tprave==1 /:(oy~Není~n)&&(kon[28]==1) │
- _klik~na~kámen?_ :Popis() "animace │
- /:s[x1][y1]==0 / :x=(x1-2)*39+22 │
- Ne Ano :y=(y1-2)*28+128 │
- 4! 'Smazání~políƒka │
- :x=(x1-2)*39+22 u! │
- :y=(y1-2)*28+128 │
- :MyτNastavPozici(x,y)! │
- _____________________..._____________________ │
- "Smazání~políƒka ____________Animace~kamene____________ │
- /:(x1+y1)%2==0 / P²esun~kamene Dotaºení │
- Bílé ¼erné :StopkyNuluj()! :FishStop() │
- w! b! :StopkyStart()! 5! │
- *:gMyτUdálost.Tlaƒítka :x2=(x-3)/39+2! │
- │ :y2=(y-114)/28+2! │
- a! t! │
- editaƒní
- ____________________:Klik(0,0)_____________________
- /a /b /c /d
- _____│______ 'horní~panel PGN~info dneτní~datum
- Editace Test~na~zm╪ny c! d!
- v! /:ok==0
- :ok=1! zm╪na
- :x1=(x-22)/39+2! z!
- :y1=(y-128)/28+2!
- _editace/info
- /:tleve==1 /:tprave==1
- v∞b╪r~pro~pole :Popis()
- s!
- ______________________volby______________________
- /:i==0 /:(i>1)&&(i<8) /:(i>8)&&(i<15) /:i==16
- │ │ │ │
- :s[x1][y1]=0! :s[x1][y1]=i-1! :s[x1][y1]=8-i! :¼istiµachovnici()
- "v 'v 'v 'v
- :delka=-1
- :ok=0
- r!
- -o1----------------------SEZNAM OPERAC╓------------TENTO ⁿ╡DEK NEM╖NIT!-------
- a ;animace kamene
- Myτ¼tiUdálost(gMyτUdálost);
- x=gMyτUdálost.X;
- y=gMyτUdálost.Y;
- AnimP²edm╪tAnimuj(kamen,x,y,0);
- z ;smazání partiá²e a seznamu zajat∞ch figur
- delka=-1;
- for (ii=0; ii<=1; ii++)
- for (i=0; i<=15; i++) zajate[ii][i]=0;
- t ;test tahu
- if (TestTahu(x1,y1,x2,y2)==1) n=n*-1;
- O GrNaƒtiBMP /* naƒte obrázek */
- X ¼arujNaPozici /* X:(p²edm╪t,x,y)! 1-150, 1-15, 1-10 */
- 1 ;základní inicializace
-
- mod=1;
- EscPlus();
- Inicializace();
- for (i=0; i<=5; i++) pgn[i]="";
- Konfig(1);
-
- // naƒtení jazykového balíƒku
- NaƒtiJazyk();
-
- // inicializace centralizaƒní tabulky
- ct=SouborOtev²i("*\\partie.ct",SouborP²ístup¼tení|SouborP²ístupBinární);
- for (y=0; y<=3; y++)
- for (x=0; x<=3; x++)
- {
- i=Soubor¼tiZnak(ct);
- ctab[x][y]=i*placek;
- ctab[7-x][y]=i*placek;
- ctab[x][7-y]=i*placek;
- ctab[7-x][7-y]=i*placek;
- }
- SouborZav²i(ct);
-
- 2 ;vykreslení prost²edí
-
- if (mod==1)
- {
- VyhledejTah(1,0);
- if (v[1].nejlepsi.x1==-1)
- {
- matpat=1;
- if (partiar[delka].s<2)
- {
- µach();
- delka++;
- if ((bs==1)||(cs==1)) partiar[delka].s=2; else partiar[delka].s=3;
- }
- } else matpat=0;
- }
-
- if (smaz==1)
- {
- smaz=0;
- GrNastavBarvuPozadí(kon[9]);
- GrKresliVypln╪n∞Obdélník(0,18,639,479);
- }
-
- // menu
- Okno(0,0,639,17,0);
- TlaĒtko(2,2,vyber[0][0].nazev,0);
- TlaĒtko(55,2,vyber[0][1].nazev,0);
- TlaĒtko(100,2,vyber[0][2].nazev,0);
- TlaĒtko(177,2,vyber[0][3].nazev,0);
- TlaĒtko(254,2,vyber[0][4].nazev,0);
- GrNastavBarvuPop²edí(4);
- GrNastavPozici(420,3);GrPiτⁿet╪zec("by Libor Tinka & Jakub Grós");
-
- // PGN informace
-
- if (kon[25]==1)
- {
- Okno(30,22,296,122,0);
- for (i=0; i<=5; i++)
- {
- Okno(33,25+(GrV∞τkaZnaku+6)*i,37+Grµí²kaZnaku*32,
- 25+(GrV∞τkaZnaku+6)*i+(GrV∞τkaZnaku+4),1);
- GrNastavBarvuPop²edí(8);
- switch (i)
- {
- case 0: str=Txt(7);break;
- case 1: str=Txt(8);break;
- case 2: str=Txt(9);break;
- case 3: str=Txt(10);break;
- case 4: str="-";break;
- case 5: str="-";break;
- }
- GrNastavPozici
- (163-StrVelikost(str)*Grµí²kaZnaku/2,27+(GrV∞τkaZnaku+6)*i);
- GrPiτⁿet╪zec(str);
- Piτ(34,26+(GrV∞τkaZnaku+6)*i,1,pgn[i]);
- }
- if (mod==0) TlaĒtko(299,73,Txt(11),0);
- }
-
- // τachovnice
- Okno(20,126,335,354,1);
- for (y=0; y<=7; y++)
- for (x=0; x<=7; x++)
- {
- // vykreslení pole τachovnice
- if ((x+y)%2==0)
- GrKresliP²edm╪t(kon[2]*15+14,0,22+x*39,128+y*28); else
- GrKresliP²edm╪t((kon[3]+1)*15,0,22+x*39,128+y*28);
- // p²ípadné vykreslení figurky
- if (s[x+2][y+2]>0)
- GrKresliP²edm╪t(kon[0]*15+s[x+2][y+2],1,22+x*39,128+y*28); else
- if (s[x+2][y+2]<0)
- GrKresliP²edm╪t(kon[1]*15+s[x+2][y+2]*-1+6,1,22+x*39,128+y*28);
- }
- // znaƒení pole
- if ((kon[29]==0) && (ox!=-1))
- GrKresliP²edm╪t(103,1,(ox-2)*39+22,(oy-2)*28+128);
-
- // sou²adnice
- for (i=0; i<=7; i++)
- {
- GrNastavPozici(7,140+28*i);GrNastavBarvuPop²edí(8);GrPiτZnak(56-i);
- GrNastavPozici(5,138+28*i);GrNastavBarvuPop²edí(7);GrPiτZnak(56-i);
- GrNastavPozici(38+39*i,361);GrNastavBarvuPop²edí(8);GrPiτZnak(97+i);
- GrNastavPozici(36+39*i,359);GrNastavBarvuPop²edí(7);GrPiτZnak(97+i);
- }
-
- // Fisherovy hodiny
- if (kon[21]==1)
- {
- Okno(59,381,296,471,1);
- GrKresliP²edm╪ty(1001+kon[4]*45,1,61,383,6,3);
- if (kon[5]==0)
- {
- GrKresliP²edm╪ty(1013,1,61,383,3,3);
- GrKresliP²edm╪ty(1013,1,178,383,3,3);
- }
- cas_f=cas_b;Fisher(119);
- cas_f=cas_c;Fisher(236);
- }
-
- // partiá²
- if (kon[22]==1)
- {
- Okno(452,35,475+Grµí²kaZnaku*19+4,41+GrV∞τkaZnaku*38,0);
- ii=0;
- for (i=pozice/76*76; (i<=pozice/76*76+76)&&(i<=delka); i++)
- {
- if (partiar[i].s<2)
- {
- str="";
- px=partiar[i].x1+95;
- if (kon[6]>0)
- switch (partiar[i].k)
- {
- case 1:
- if ((kon[6]==2) && (partiar[i].z!=0)) str=str+px;
- break;
- case 2: str=str+"J";break;
- case 3: str=str+"S";break;
- case 4: str=str+"V";break;
- case 5: str=str+"D";break;
- case 6: str=str+"K";break;
- }
- if ((kon[6]<2) || (partiar[i].dest==1))
- {
- py=58-partiar[i].y1;
- str=str+px+py;
- }
- if (kon[6]<2)
- {
- if (kon[7]==1)
- {
- if (partiar[i].z==0) str=str+"-"; else str=str+"x";
- } else str=str+" ";
- } else
- {
- if (partiar[i].z!=0) str=str+"x"; else
- if (partiar[i].dest==1) str=str+"-";
- }
- px=partiar[i].x2+95;
- py=58-partiar[i].y2;
- str=str+px+py;
- if (partiar[i].p!=0)
- switch (abs(partiar[i].p))
- {
- case 2: str=str+"=J";break;
- case 3: str=str+"=S";break;
- case 4: str=str+"=V";break;
- case 5: str=str+"=D";break;
- }
- if ((kon[6]>0) && (partiar[i].k==6) && (abs(partiar[i].x1-partiar[i].x2)==2))
- if (partiar[i].x1<partiar[i].x2) str="0-0"; else str="0-0-0";
- if (partiar[i].s!=0) str=str+'+';
- } else
- {
- if (partiar[i].s==2)
- {
- if (i%2==0) str="0:1"; else str="1:0";
- } else str="1/2";
- }
- if (i==pozice) GrNastavBarvuPozadí(kon[18]); else GrNastavBarvuPozadí(kon[12]);
- if (i%2==0)
- {
- GrNastavBarvuPop²edí(6);
- GrNastavPozici(454,37+(i+1)/2*GrV∞τkaZnaku-i/76*380);
- GrPiτL¼íslo((i+1)/2+1,-1);
- Piτ(484,37+(i+1)/2*GrV∞τkaZnaku-i/76*380,0,str);
- } else
- {
- Piτ(484+(ii+2)*Grµí²kaZnaku,37+((i+1)/2-1)*GrV∞τkaZnaku-i/76*380,0,str);
- }
- ii=StrVelikost(str);
- }
- }
-
- // koncové uzly
- if (kon[23]==1) LCD(318,435,count,8,kon[8]);
-
- // zajaté figury
- if (kon[24]==1)
- {
- Okno(351,126,432,354,0);
- for (ii=0; ii<=1; ii++)
- for (i=0; i<=15; i++)
- if (zajate[ii][i]!=0)
- {
- if (zajate[ii][i]>0)
- GrKresliP²edm╪t(kon[0]*15+zajate[ii][i],1,353+i%4*13,128+ii*112+i/4*28); else
- GrKresliP²edm╪t(kon[1]*15+zajate[ii][i]*-1+6,1,353+i%4*13,128+ii*112+i/4*28);
- }
- }
-
- S UloºScénu /* S:("soubor")! "c:\\pavel\\soubor.s00" */
- m ;vypiτ ⁿet╪zec do grafického okénka
- PàvBarvy=GrNastavBarvy(Modrá<<4|ªlutá); /*ºlutá na modré */
- GrPiτⁿet╪zec(ⁿet╪zec); /*vypíτe obsah prom╪nné ⁿet╪zec*/
- GrNastavBarvy(PàvBarvy); /*nastaví pàvodní barvy */
- b GrKresliP²edm╪t((kon[3]+1)*15,0,x,y);
- w GrKresliP²edm╪t((kon[2]+1)*15-1,0,x,y);
- p GrNastavPozici /* Partie */
- K GrKresliP²edm╪ty /* Partie */
- 4 ;inicializace animovaného objektu
- if (s[x1][y1]<0)
- kamen=AnimP²edm╪tVytvo²(kon[1]*15+s[x1][y1]*-1+6,1,0,1); else
- kamen=AnimP²edm╪tVytvo²(kon[0]*15+s[x1][y1],1,0,1);
- 5 ;zruτení animovaného p²edm╪tu (kamene)
- AnimP²edm╪tZruτ(kamen);
- u ;automatická animace kamene
- x=x2;
- y=y2;
- if (s[x][y]<0)
- kamen=AnimP²edm╪tVytvo²(kon[1]*15+s[x][y]*-1+6,1,0,1); else
- kamen=AnimP²edm╪tVytvo²(kon[0]*15+s[x][y],1,0,1);
- x1=(x1-2)*39+22;
- y1=(y1-2)*28+128;
- x2=(x2-2)*39+22;
- y2=(y2-2)*28+128;
- f=sqrt(sqr(x1-x2)+sqr(y1-y2))+1;
- fx=(x2-x1)/f;
- fy=(y2-y1)/f;
- for (i=0; i<=f; i++)
- {
- AnimP²edm╪tAnimuj(kamen,x1+fx*i,y1+fy*i,0);
- ¼ekej(kon[39]);
- }
- AnimP²edm╪tZruτ(kamen);
- if (s[x][y]<0)
- GrKresliP²edm╪t(kon[1]*15+s[x][y]*-1+6,1,x2,y2); else
- GrKresliP²edm╪t(kon[0]*15+s[x][y],1,x2,y2);
- s ;v∞b╪r z nabídky figur
- i=Nabídka(240,102,1,7);
- GrNastavBarvuPozadí(kon[9]);
- GrKresliVypln╪n∞Obdélník(240,102,409,378);
- c ;editace okénka s hlaviƒkou PGN
- i=(y-25)/(GrV∞τkaZnaku+6);
- if ((i>-1) && (i<4))
- {
- GrNastavPozici(35,i*(GrV∞τkaZnaku+6)+27);
- Grⁿádkov∞Editor(pgn[i],32,1,-1,StrVelikost(pgn[i])+1,224);
- }
- d ;nastaví aktuální datum do hlaviƒky PGN
- SystémovéDatum(datum);
- pgn[3]=StrL¼íslo(datum.Den,-1)+". ";
- switch (datum.M╪síc)
- {
- case 1: pgn[3]=pgn[3]+Txt(25);break;
- case 2: pgn[3]=pgn[3]+Txt(26);break;
- case 3: pgn[3]=pgn[3]+Txt(27);break;
- case 4: pgn[3]=pgn[3]+Txt(28);break;
- case 5: pgn[3]=pgn[3]+Txt(29);break;
- case 6: pgn[3]=pgn[3]+Txt(30);break;
- case 7: pgn[3]=pgn[3]+Txt(31);break;
- case 8: pgn[3]=pgn[3]+Txt(32);break;
- case 9: pgn[3]=pgn[3]+Txt(33);break;
- case 10: pgn[3]=pgn[3]+Txt(34);break;
- case 11: pgn[3]=pgn[3]+Txt(35);break;
- case 12: pgn[3]=pgn[3]+Txt(36);break;
- }
- pgn[3]=pgn[3]+" "+StrL¼íslo(datum.Rok,-1)+" (";
- switch (datum.DenT∞dne)
- {
- case 0: pgn[3]=pgn[3]+Txt(37);break;
- case 1: pgn[3]=pgn[3]+Txt(38);break;
- case 2: pgn[3]=pgn[3]+Txt(39);break;
- case 3: pgn[3]=pgn[3]+Txt(40);break;
- case 4: pgn[3]=pgn[3]+Txt(41);break;
- case 5: pgn[3]=pgn[3]+Txt(42);break;
- case 6: pgn[3]=pgn[3]+Txt(43);break;
- }
- pgn[3]=pgn[3]+")";
- x ;naƒtení sou²adnic tahu do pomocn∞ch prom╪nn∞ch
- x1=v[1].nejlepsi.x1;y1=v[1].nejlepsi.y1;
- x2=v[1].nejlepsi.x2;y2=v[1].nejlepsi.y2;
- i ;spustí intro (úvodní obrazovka)
- GrNaƒtiBMP(0,0,"*\\partie.bmp",0,0,-1,-1,1);
- TypSoubor soubor=SouborOtev²i("*\\partie.pal",
- SouborP²ístup¼tení|SouborP²ístupBinární);
- GrNaƒtiPaletu("*\\partie.pal");
- VyprázdniFrontuKláves();
- StopkyNuluj();StopkyStart();
- do Stopky(cas); while ((BylaStisknutaKlávesa()==0) && (cas.Sekundy<3));
- StopkyStop();
- VyprázdniFrontuKláves();
- SouborZav²i(soubor);
- r ;plné nabytí práva roτády
- for (i=0; i<=3; i++) rosada[i]=0;
- v ;poƒkání, neº uºivatel pustí (levé) tlaƒítko myτi
- do Myτ¼tiUdálost(gMyτUdálost); while (gMyτUdálost.Typ!=4);
- -c1----------------------SEZNAM PODM╓NEK-----------TENTO ⁿ╡DEK NEM╖NIT!-------
- #N ;opakuj n-krát vzestupn╪ pro prom╪nnou #N:(i,8) (8x) i=0,1..7
- Od0
- #M ;opakuj n-krát sestupn╪ pro prom╪nnou #M:(i,8) (8x) i=7,6..0
- DolàDo0
- /p PràchodnostP²edm╪tuP²edB() Je 1
- /x (matpat==0) && (((n==1) && (b==0)) || ((n==-1) && (c==0))) && (pozice==delka)
- /a (x>21) && (y>127) && (x<334) && (y<353)
- /b (x>2) && (y>2) && (x<334) && (y<15)
- /c (x>20) && (y>22) && (x<286) && (y<122)
- /d (x>299) && (y>73) && (x<348) && (y<86)
- /q v[1].nejlepsi.x1>-1
- \p P²edm╪tP²edB()??
- \b Barva¼tverceP²
- =SP---------------------------------------------------------------------------
-
- //
- // Konec souboru
- //////////////////
-