Zápočtový program pro seminář z Javy

Front-end k programu GNU-chess

Verze: 0.4

Autor: Jan Liška, 3.r Inf

Mail:lisak@atrey.karlin.mff.cuni.cz

Program má sloužit jako grafická nadstavba volně šiřitelného programu GNU-chess, která je schopná běžet jako javovský applet na HTML stránce. Vlastní program se skládá ze dvou částí - skriptu v jazyce Perl, který slouží jako TCP/IP server a zprostředkovává komunikaci mezi druhou částí, kterou je vlastní javovský applet, a spuštěným procesem šachového programu Nejdřív bych stručně popsal funkci a uspořádání perlovského programu. Je to jednoduchý TCP/IP server, schopný obsluhovat jen jedno spojení. Po spuštění začne naslouchat na některém portu vysokého čísla (v souč. port 2345). Potom vytvoří kopii shellu a tu přepíše programem gnuchessr, což je ascii řádková verze šachového programu. Největší zádrhel této části, a celého programu vůbec, spočívá právě v komunikaci mezi šachovým programem a serverem. Linux totiž (podobně jako všechny *NIXové systémy) výstup bufferuje a provádí ho až v okamžiku, kdy je to nutné nebo když je o to explicitně požádán. Některé programy umožňují pracovat v tzv. nevyrovnaém módu, kdy se výstup provádí okamžitě (např. cat -u), gnuchess však mezi ně bohužel nepatří. V tomto případě je problém řešen pomocí pseudoterminálů (procesu se předstírá, že provádí výstup na terminál, ve skutečnosti však data posílá rourou svému otci). Základní funkce pro práci s pseudoterminály obstarává Perlovský balík Comm.pl, který jsem převzal ze CPANu.

Program chserv.pl tedy zahájí příjem TCP spojení, nastartuje šachový program a naváže s ním komunikaci. Spojení mezi serverem a appletem je realizováno pomocí čtyřbajtových kódů ve tvaru startovní_polecílové_pole a několika řídících sekvencí pro zahájení a ukončení hry (budou zmíněny dále). Po signálu ukončení hry server zavře TCP socket, ukončí šachový program a sám skončí.

Program má sloužit jako grafická nadstavba volně šiřitelného programu GNU-chess, která je schopná běžet jako javovský applet na HTML stránce. Vlastní program se skládá ze dvou částí - skriptu v jazyce Perl, který slouží jako TCP/IP server a zprostředkovává komunikaci mezi druhou částí, kterou je vlastní javovský applet, a spuštěným procesem šachového programu

Server slouží spíše jako ukázka, dokumentující funkčnost programu. Bylo by možné napsat plnohodnotný víceprocesní server, neúměrně by to však zvýšilo náročnost "nejavovské" části programu a odezvy celého systému: gnuchess je poměrně nenasytný program a současný běh tří šachvých partií by počítač výrazně zpomalila. Parametr '1' u spouštění gnuchessr má zaručit, že šachový program má vygenerovat tah během jedné vteřiny. Bohužel tomu tak není a praxe dosvědčila, že je nutno mít nastaveny časovače timeoutů pseudoterminálu na dvou minutách, v extrémních případech i déle


Třída MujDialog

Třída Pole

Třída Figura

Index


Zdrojáky...