Portál AbcLinuxu, 30. dubna 2025 23:59
Na začátek ještě upozorním, že jsem se většinou neobtěžoval ani vytvářením configure nebo možností instalace do systému. V případě, že nefunguje přibalený zkompilovaný kód (někdy 64-bitový, někdy 32-bitový), je možné zkusit make clean; make. Pokud i to selže, můžete to vzdát nebo se pokusit rýpat v Makefile (on není příliš složitý).
Komentáře v zdrojových kódech těch hračiček téměř nejsou, pokud by ovšem někoho zajímala část jisté hračičky, není problém dovysvětlit.
První dvě moje hračičky, co tu ukážu, se opírají o dnes takřka nepoužívanou EZWGL (DOWNLOAD).
Už si nepamatuji, co mě přimělo k takto brutální hře, kde je cílem povraždit ty nejinteligentnější tvory Země. Myš (ten obrázek v okně) je chcípnuta, když na ní kliknete myší (to, co je obvykle u klávesnice). Poklikat ty myši je značně obtížné, protože jsou zaprvé strašně úzké a za druhé před vaší myší zdrhají.
Myslím, že nadpis docela pointu vystihuje, zmáčknutí šipky je povel pro všechny panáčky najednou. Hra umí nekonečné undo 'u' a ještě tam tuším bylo nějaké ukládání a následné pouštění řešení pomocí kláves 's' a 'l'. Tato hračička je tuším dokonce i nainstalovatelná do systému. Každý level až na závěrečné END má řešení.
Tady už není potřeba EZWGL, hra je založená jen na xlibu. Navíc jsem v té době neuměl načítat obrázky z externích souborů, takže XPM data jsou uvnitř binárky. Z toho ovšem plyne i jedna výhoda, hra nepotřebuje žádná externí data.
Já vím, s tímhle jsem neskutečně neoriginální. Když už existuje, Icy Tower, GNUjump a navíc nějaký klon Icy Toweru se údajně zjevil i na Facebooku. Ale chápejte, je to můj první pokus s xlibem a myslím, že oproti gnujump mám lepší fyziku.
Tato hračička nemá u sebe ani přiložený Makefile. Příkaz, který hru zkompiluje u mne, mám uložený v souboru kompilace.
Ovládání je, stejně jako v Icy Toweru, pomocí šipek a skok mezerou. Zrychlování a dosažená patra jsou vypisovány na standardní výstup. Tato hračička se nevypíná ani pomocí Esc, ani pomocí 'q', ale kliknutím.
Tato hračička se opírá o knihovnu OpenGL (glut), takže je zkompilovatelná dokonce i na některých neunixových systémech.
Nejnovější verze vyžaduje vedle glut ještě knihovnu glpng a na některých počítačích navíc zobrazuje nepěkné mřížky (nevím na čí straně je chyba), možná bude více vyhovovat starší verze (DOWNLOAD).
Obrázky panáčků jsou použity z xpexesa, tedy pravděpodobně je nakreslili Petr a Pavel Matulovi.
Cílem je projít krychlí od modrého okénka k zelenému nebo naopak, tedy překonat tělesovou úhlopříčku. V případě projití hra pogratuluje prostřednictvím příkazové řádky a vypíše určité statistiky.
Tento program vypíše nápovědu při parametru -h. (umožňuje nastavit rozměry krychle, fullscreen, ...)
Opět program založený na xlib. Ovládáta ruku vlevo: žádné stisknuté tlačítko myši = kámen, jedno stisknuté tlačítko = nůžky, dvě stisknutá tlačítka = papír. Hrajete proti počítači, který ovládá ruku vpravo a snaží se vás odhadnout (jeho chování není vůbec náhodné).
Hraje se do 30 bodů, tedy zhruba 4 minuty. Okamžitě po spuštění začíná hra, takže mějte myš připravenou. Je dobré mít příslušná tlačítka zmáčknutá s dostatečným předstihem, na poslední chvíli to nemusíte stihnout. Při dávání papíru je dobré zmáčknout tlačítka postupně, ukázalo se, že při zmáčknutí obou tlačítek naráz nemusí být toto zmáčknutí v některých případech zaregistrováno. Vypnout (vzdát) hru je možné tlačítkem Esc. Na standardní výstup je průběžně vypisováno skóre a nakonec je napsáno, kdo vyhrál.
Veřím, že můj algoritmus je nepatrně lepší než průměrný člověk, ale nemám to statisticky ověřeno, takže pokud někdo tuto hru vyzkouší, nechť vyplní příslušnou anketu:
Pokračování: Moje Hračičky II
Tiskni
Sdílej:
Pěkné, v kámen nůžky papír to jsou tvoje ruce?
A co takhle import vlastních rukou?
gcc knp.c
/tmp/ccuJe6W9.o: In function `souboj':
knp.c:(.text+0x160): undefined reference to `obnovskore'
/tmp/ccuJe6W9.o: In function `init':
knp.c:(.text+0x1b8): undefined reference to `initX'
/tmp/ccuJe6W9.o: In function `main':
knp.c:(.text+0x1c9): undefined reference to `posl_hraj'
knp.c:(.text+0x1d4): undefined reference to `posl_uloz'
knp.c:(.text+0x1df): undefined reference to `posl_init'
knp.c:(.text+0x1f3): undefined reference to `vytvorokno'
knp.c:(.text+0x1fd): undefined reference to `nacti_cislice'
knp.c:(.text+0x20c): undefined reference to `vytvorskore'
knp.c:(.text+0x216): undefined reference to `vytvorruce'
knp.c:(.text+0x225): undefined reference to `setdelay'
knp.c:(.text+0x22f): undefined reference to `loop'
collect2: ld returned 1 exit status
V cecku bezne nedelam a kompiluju maximalne tak pomoci configure/make/make install, ale tady se mi nepovedlo nic.
make: getcwd: No such file or directory
make: *** No targets specified and no makefile found. Stop.
gcc -I. -g -Wall -c -o knp.o knp.c gcc -I. -g -Wall -c -o sekv.o sekv.c gcc -I. -g -Wall -c -o posl.o posl.c gcc -I. -g -Wall -c -o X.o X.c gcc -I. -g -Wall -c -o loop.o loop.c gcc -I. -g -Wall -c -o pixmap.o pixmap.c gcc -I. -g -Wall -c -o warning.o warning.c gcc -I. -g -Wall -c -o window.o window.c gcc -I. -g -Wall -c -o ruce.o ruce.c gcc -I. -g -Wall -c -o cisla.o cisla.c gcc -I. knp.o sekv.o posl.o X.o loop.o pixmap.o warning.o window.o ruce.o cisla.o -L/usr/X11R6/lib/ -lX11 -lXpm -lXext -o knp
S touhle posloupnosti to slo zkompilovat bez problemu. Nevim, proc se make
nechytnul.
knp --help
a nic. Pak jsem si to nasel ve zdrojaku, ze se jedna o mys a teprve ted ctu tady v blogu instrukce :) Uz pozde.
Tady muj vysledek:
ty papir, ja kamen: VYHRAL JSI 30 : 21
Zjistil jsem, ze se da uspesne vyhravat z duvodu, ze pocitac dost casto opakuje 2x nebo 3x za sebou stejnou volbu. Ale i tak to byly nervy, obcas me pekne dohanel :) Algoritmus mi prijde dobry.
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.