Inspirován Pixym, rozhodl jsem se vytvořit vlastní jednoduchou hru – po zmáčknutí klávesy na klávesnici se zobrazí obrázek zvířete, které tam „bydlí“ (např. v T bydlí tygr), a počítač řekne jeho jméno.
Nejprve jsem zvažoval, že hru naprogramuji v JavaScriptu, ale když jsem si vzpomněl, jaké problémy jsem měl s programově řízeným přehráváním zvuků v prohlížeči, tak jsem tuto myšlenku zase opustil. Zvažoval jsem Flash, ten ale neovládám a navíc mám za to, že jeho vývojové prostředí je placené. Vzpomněl jsem si na přednášku Tomáše Petříčka o tom, jak se dá pomocí Phalangeru vytvářet Silverlight aplikace v PHP a rozhodl jsem se to vyzkoušet.
Stáhnul jsem si tedy zdarma dostupné Visual Studio Shell, do něj integraci PHP a Phalanger a mohl jsem začít tvořit. Ukázalo se, že to je překvapivě jednoduché, celá aplikace má pár řádek kódu (pominu-li zhruba stránku kódu vygenerovanou návrhářem).
<?php // šestitečka slouží v Phalangeru před příchodem PHP 5.3 jako oddělovač jmenných prostorů private function Form1_KeyUp(System:::Object $sender, System:::Windows:::Forms:::KeyEventArgs $e) { static $last = ""; $ch = chr($e->KeyCode); $pics = glob("pic/$ch*"); if (!$pics) { return false; } $pos = array_search($last, $pics); $last = $pics[$pos !== false ? ($pos + 1) % count($pics) : 0]; $this->pictureBox1->ImageLocation = $last; $sound = preg_replace('~^pic/(.+)\\..*~', 'sound/\\1.wav', $last); if (file_exists($sound)) { $soundPlayer = new System:::Media:::SoundPlayer($sound); $soundPlayer->Play(); } } ?>
Z Visual Studia mi zatím vypadla klasická desktopová aplikace, ale předpokládám, že změna na Silverlight aplikaci bude spíše otázkou konfigurace než nějaké dramatické změny kódu. Ke spuštění programu budou jistě potřeba nějaké knihovny, ale velikost výsledného souboru 20 kB je rozhodně sympatická.
Vývojové prostředí Visual Studia je poměrně příjemné, některé věci mi ale nefungovaly. Kupříkladu se dá ladit, ale kukátka je potřeba psát v jiné syntaxi (místo $this->image
je potřeba psát this.image
) a nedají se v nich volat funkce. Vizuální návrhář formulářů hlásí cosi o tom, že u komponenty s obrázkem nejsou k dispozici metody BeginInit
a EndInit
, při přidání panelu nástrojů se z něj ztrácí komponenty a při složitější úpravě kódu přestane návrhář fungovat úplně.
Teprve když jsem měl hru hotovou, tak mě napadlo, že by se asi dala naprogramovat i v PHP-GTK, které konečně doputovalo do verze 2 (po roce a půl od zveřejnění „zeta“ verze naznačující, že finální verze už je na spadnutí). Možná to ještě zkusím, abych porovnal, jak to bude ve srovnání s Phalangerem pracné nebo snadné, zatím jsem ale nenašel komponentu na přehrání zvuku.
Diskuse je zrušena z důvodu spamu.