Mayské Mexiko | | https://create-it.cz/Blog/Stranky/mayske_mexiko.aspx | Mayské Mexiko | <p>Když jsme plánovaly s kamarádkou cestu do Mexika, hodně lidí se nás ptalo, jestli se chystáme navštívit vinice v Mexické Kalifornii, rodný dům Friedy Kahlo anebo se jedeme podívat na architekturu státu Oaxaca. Tyto otázky se v evropském kontextu dají přirovnat cestě mezi Švédskem, Portugalskem a Slovenskem. Mexiko je obrovská země, a tak je dobré si před odletem uvědomit, co jsou vaše priority a podle toho výlety plánovat. Pokud byste opravdu chtěli za jeden výlet zakusit co nejvíce, je dobré mít objednané vnitrostátní přelety, které nemusí být nákladné, pokud je koupíte s předstihem. <br></p><p>My jsme se vydaly do jihovýchodní části Mexika, do státu Yucatán, která je známá mayskou kulturou a
<a href="https://cs.wikipedia.org/wiki/Cenote" target="_blank">cenotes</a>. Věděla jsem, že je to turisty nejvíce navštěvovaná oblast Mexika, a i kvůli tomu je zde bezpečněji než v ostatních místech. Hlavním městem je Mérida, která byla navíc oceněna jako město s vysokou úrovní veřejné bezpečnosti. Náš plán byl procestovat významná místa tohoto mayského státu. Zaměřily jsme se primárně na objevování místní přírody, mayských zřícenin a gastronomické zážitky. <br></p><h2>Jak vybrat letenky<br></h2><p>Největší výběr letenek najdete s odletem v Německu, a to byl i náš případ. Vybíraly jsme přes
<a href="https://www.pelikan.cz/cs" target="_blank">pelikan.cz</a> a průběžně kontrovaly slevové akce na
<a href="https://honzovyletenky.cz/" target="_blank">Honzovy letenky</a>. Letenky z Prahy vycházely o 30 % dráž, takže i s cestou do Německa a zpět jsme dost ušetřily. Co ale člověk ušetří na penězích, utratí na čase. Náš spoj byl Mnichov – Atlanta – Cancún a cesta trvala celkem 32 hodin, zpáteční let po stejné trase dokonce o 4 hodiny déle. I když na území USA jen přestupujete, je nutné zařídit si americké vízum
<a href="https://esta.cbp.dhs.gov/">ESTA</a>. Je dobré si dát pozor na stránky, které se za oficiální web jen vydávají, dost byste si připlatili (vízum by mělo stát okolo 20 dolarů). Ačkoliv Mexiko nikdy nezavedlo covidová opatření, pokud letíte přes Ameriku potřebujete platný Covid pas. V současné době (duben) platí, že plně očkovaný turista je ten, který má dvě či více dávek vakcíny. Samotný kontrolní úřad v Americe potvrzení vidět nechce, ale pro vstup do letadla ho potřebovat budete. <br></p><h2>První dny po příletu</h2><p>Pokud letíte z Evropy, nejčastějším místem příletu bude Cancún, jedno z největších měst regionu. Je to relativně nové město, a proto se zde turisté dvakrát nezdržují, není zde ani památková zóna. My jsme zde zakotvily na první dva dny, kdy jsme využily vybavenost města a připravily se na další cestování. <br></p><p>
<img src="/Blog/PublishingImages/Stranky/mayske-mexiko/mexiko_plaz3.jpg" data-themekey="#" alt="" />
<br>
</p><h2>Výběry a směnárny<br></h2><p>V Mexiku je měnou mexické peso (MXN), kurz je cca 10 pesos = 12 Kč. Je výhodné si vybrat větší obnos v hotovosti, my jsme nejčastěji využívaly bankomaty v Banca Azteca, kde byl nejnižší poplatek, a to 35 pesos za jeden výběr. A pokud ještě nemáte, určitě se vyplatí na výběry pořídit
<a href="https://www.revolut.com/cs-CZ/" target="_blank">Revolut</a> kartu. I na platby kartou, které však v Mexiku nejsou moc populární, dostanete vždy nejlepší kurz, a navíc můžete vybírat z většiny dostupných bankomatů. Přesto je lepší mít u sebe dostatek hotovosti, za platby kartou často dostanete 5% přirážku a na spoustě míst se kartou platit nedá. Například při vstupu na všechny mayské komplexy, které jsou velmi oblíbeným turistickým místem, karty nepřijímají a ani při návštěvě cenotes byste s kartou nepochodili. Když už kartou platit lze, nepočítejte s bezkontaktní platbou, někde dokonce pořád platí podepisování účtenky. </p><p>Naopak směnárny v Mexiku nedoporučuji využívat vůbec, kurz je extrémně nevýhodný a ve výsledku dostanete o 10-20 % hodnoty částky méně.<br></p><h2>Mobilní data </h2><p>Ve chvíli, kdy cestuji do mimoevropské země, je místní SIM karta s mobilními daty to první, co řeším. Nejlepší pokrytí má v Yucatánu mexický mobilní operátor Telcel, který nabízí 4 GB dat s neomezeným voláním v rámci Mexika za 350 pesos. Nákup doporučuji v obchodních centrech, v obchodech nebo kioscích Telcelu, jinde se může jednat o podvod. Nejprve jsem kupovala balíček se 4 GB dat, ale kvůli častému používání navigace v mapách a také nehlídání spotřeby jsem si nakonec musela 3 GB dokupovat. Pokud potřebujete zůstat k zastižení i na vašem českém čísle, vyplatí se dopředu zajistit eSIM, nebo pořídit telefon se dvěma SIM sloty. <br></p><p>
<img src="/Blog/PublishingImages/Stranky/mayske-mexiko/mexiko_tarify.jpg" data-themekey="#" class="articleImageVertical" alt="" />
<br>
</p><h2>Pláže<br></h2><p>Pokud byste v Mexiku čekali pláže karibského typu, tj. bílý písek a průzračné tyrkysové moře, v Yucatánu se jich nedočkáte. Zhruba od roku 2015 se na pobřeží vyplavují tuny řas. Příčina není zatím zcela známa, nicméně odborníci ji připisují zvýšené teplotě oceánu a změně proudů, které mají za následek právě ono vyplavování. Děje se tak primárně v teplejších měsících, což je mimo jiné i období evropského jara. Pokud byste přeci jen chtěli v oblasti Yucatánu zůstat na koupání a zažít tyrkysové moře, doporučuji ostrovy Holbox, Isla Mujeres či zátoku Bacalar. Na Isla Mujeres se nejlépe dostanete trajektem z Cancúnu a na ostrovech se pak vyplatí půjčit si kolo či golfový vozík. <br></p><p></p><h2>Holbox <br></h2><p>Na
<a href="https://en.wikipedia.org/wiki/Isla_Holbox" target="_blank">Holbox</a> jsme vyrazily hned po zařízení nezbytností v Cancúnu. Jedná se o ostrov s ojedinělou atmosférou. Spojení mezi přístavem ve městě Chiquila a Holboxem tvoří místní síť trajektů. Speciálně o víkendech nejezdí tak pravidelně, při plánování cesty je důležité si ohlídat časy odjezdů. </p><p>Na ostrově nejsou zpevněné silnice, proto zde nemáte skoro vůbec šanci potkat auto. Abychom toho viděly co nejvíce, zvolily jsme pro dopravu kolo, které se dá jednoduše půjčit v místních kavárnách. Doprava na kole vás sice bude stát dvakrát tolik času, než kolik ukazují Google Mapy, ale stojí to za to. My jsme navštívily místní přírodní rezervaci
<a href="https://en.wikipedia.org/wiki/Yum_Balam" target="_blank">Yum Balam</a>, kde jsou hlavní atrakcí plameňáci ve volné přírodě, které se nám vídět nepodařilo, za to jsme se pořádně spálily. </p><p>Na západ slunce se nám osvědčila Playa Punta Cocos, osobně doporučuji zůstat ještě trochu déle a pozorovat hvězdy, oblast Holboxu je téměr neosvětlená, a viditelnost je bez světelného smogu opravdu výborná. </p><p>Holbox je jedno z mála míst, kde si můžete dát výběrovou kávu z místní
<a href="https://www.instagram.com/clandestino_cafe/?hl=en">pražírny</a>. Pokud jste kávoholici jako já, návštěvu rozhodně doporučuji, protože pražíren v Yucatánu není mnoho. <br></p><p>
<img src="/Blog/PublishingImages/Stranky/mayske-mexiko/mexiko_plaz2.jpg" data-themekey="#" alt="" />
<br>
</p><h2>Valladolid
</h2><p>Po Holboxu směřovaly naše kroky do
<a href="https://es.wikipedia.org/wiki/Valladolid_%28M%c3%a9xico%29" target="_blank">Valladolidu</a>. Jedná se o nejstarší město ve státu Yucatán a zároveň je to perfektní výchozí bod pro objevování cenotes. Cenotes jsou jeskyně s propadlým stropem plné sladkovodní vody. Jedná se o další možnost, kde se můžete v horkých dnech trochu svlažit a v některých si můžete vyzkoušet šnorchlování, potápění, nebo skoky do vody. Mayové je využívali jako zdroj pitné vody, nebo pro rituální účely. Věřili, že právě na dně cenoty se nachází vstup do podsvětí. V oblasti Yucatánu jsou jich stovky, některé patří místním rodinám, jiné jsou čistě turistické a vždy musíte zaplatit vstupné. V prvním případě se cena se pohybuje okolo 80 pesos, ve druhém může být vstup až 4x vyšší. V každé cenote máte povinnost nosit plovací vestu, v těch turistických se sekáte i se zákazem skákání. V okolí Valladolidu doporučuji cenotu Uxmal či Ik Kil. Čím dříve vyrazíte, tím déle budete mít cenotu sami pro sebe - v našem případě to byla od 7.30 ráno více než hodina.<br></p><p>
<img src="/Blog/PublishingImages/Stranky/mayske-mexiko/mexiko_cenota.jpg" data-themekey="#" class="articleImageVertical" alt="" /> <br></p><h2>Tequila, sombrero, chicas!</h2><p>Ve Valladolidu kromě cenotes stojí za zmínku i
<a href="https://www.google.com/maps/place/Destiler%c3%ada+Artesanal+de+Agave+Mayap%c3%a1n/%4020.7234375%2c-88.2123517%2c16z/data=%214m6%213m5%211s0x8f51752012d5b1f3:0xe589512ff33e8a05%218m2%213d20.7253941%214d-88.2063229%2116s/g/1vnrrn_t?hl=cs" target="_blank">výrobna tequily</a>. Za symbolické vstupné je možnost ji navštívit, průvodkyně vám vysvětlí, jak se tento ikonický nápoj vyrábí, a navíc dostanete ochutnávku 5 vzorků. Mexiko má proslulou kuchyni, nečekejte ale všude burritos a quesadilas. Valladolid se například proslavil tzv. longanizas – mírně pálivými vepřovými klobásami, které se podávají s guacamole, plackami nebo rýží. <br></p><h2>Mérida</h2><p>Následně jsme zamířily do hlavního města, které je v dobré vzdálenosti od několika Mayských pyramid, a tak se vyplatí půjčit si auto a na nějakou se zajet podívat. S půjčením auta to ovšem může být docela boj. Jaké jsou tedy základní rady? Velmi často chtějí půjčovny kvůli záloze kreditní, nikoliv debetní kartu. Tu jsme neměly. Dalším požadavkem bývá mezinárodně uznávaný řidičský průkaz pro typ země, do které jedete (pro Evropany existují dva druhy). Ten jsme také neměly. No a jak se nám teda podařilo auto si půjčit? Stačilo se zeptat na recepci hotelu, který měl spřátelenou půjčovnu. Revolut, jakožto “kreditní” karta prošla a řidičák po nás nikdo vidět nechtěl. Z mayských ruin jsme si vybraly
<a href="https://en.wikipedia.org/wiki/Uxmal" target="_blank">Uxmal</a>, rozlehlý komplex města, který není tak turisticky známý jako Chichen-Itza, a tudíž tam nenajdete davy turistů. Cesta z Meridy trvá autem něco málo přes hodinu a po cestě zpět jsme ještě stihly navštívit jednu z místních cenot. Nebyla zde povinnost nosit vestu, pokud vám je 18+ můžete vyzkoušet dva skokanské můstky. I hlavní město má svou specialitu, jsou jí Marquesitas – palačinky z vaflovitého těsta s nutellou a sýrem. Seženete je i v jiných městech, ale právě z Méridy pochází, a tak jsme ji chtěly vyzkoušet právě tam. </p><p>Nejvíc nás ale učarovala
<a href="https://www.salongallos.mx/" target="_blank">Salón Gallos</a>, bývalá továrna na oves, kde vznikla před pár lety restaurace, vinárna, kino i výstavní prostor. Kromě výborného jídla a příjemné obsluhy je prostor velmi zachovalý a každá z částí bývalé továrny má dnes nové využití. <br></p><p>
<img src="/Blog/PublishingImages/Stranky/mayske-mexiko/mexiko_tunel.jpg" data-themekey="#" class="articleImageVertical" alt="" />
<br>
</p><h2>Tulum & Playa del Carmen</h2><p>Na závěr výletu jsme se přesunuly na jižní stranu poloostrova a navštívily pobřežní města
<a href="https://en.wikipedia.org/wiki/Tulum" target="_blank">Tulum</a> a
<a href="https://en.wikipedia.org/wiki/Playa_del_Carmen" target="_blank">Playa del Carmen</a>. Obě místa jsou výrazně více turistická, než byly naše předešlé destinace, ale i tak jsme si je dokázaly oblíbit. Pokud se od snídaně rádi projíte až do oběda, v Tulumu je spousta příjemných „bruncháren“, my jsme si vybraly
<a href="https://www.instagram.com/delcielotulum/" target="_blank">DelCielo</a>. Z historického hlediska je Tulum známý pro ruiny mayského města, které netypicky sídlí u moře namísto ve vnitrozemí. Mně se víc líbilo ve středozemním Uxmalu, ale pravdou je, že i výhled na pobřeží měl něco do sebe. V Tulumu doporučuji navštívit
<a href="http://lecoqueta.com/" target="_blank">Le coquete</a>, mají tu skvělé tradiční mexické večere s velmi příjemnou obsluhou. Nesmím zapomenout na Real vegan streetfood na
<a href="https://www.google.com/maps/place/Yum+Street+Food+Taco+Place+%e2%80%9cEl+Tio%e2%80%9d/%4020.2128108%2c-87.4570922%2c17z/data=%213m1%214b1%214m6%213m5%211s0x8f4fd1544276b4df:0xfba3c19a02bee097%218m2%213d20.2128108%214d-87.4570922%2116s/g/11d_c1br2t?hl=cs-CZ" target="_blank">rohu hlavní 307 a Gemini ulice</a>, najdete tam klasickou mexickou kuchyni, a kromě výborného jídla i velmi příznivé ceny. Ani na místních plážích se na jaře v moři koupat nedá, proto jsme opět vyrazily do blízkých cenotes. Můžu doporučit
<a href="https://en.wikipedia.org/wiki/Sistema_Dos_Ojos" target="_blank">Dos Ojos</a>, jedná se vlastně o dvě cenoty, které jsou propojeny podvodní chodbou, a pokud chcete, dá se zaplatit ponor s průvodcem, případně můžete volně šnorchlovat či se jen klasicky vykoupat. Můj favorit na koupání byl komplex
<a href="https://www.gettingstamped.com/blue-cenote-azul/" target="_blank">cenotes Azul</a>, kde je povoleno libovolně skákat a díky bujné vegetaci v jejím okolí potkat leguány i vodní želvy. <br></p><p>
<img src="/Blog/PublishingImages/Stranky/mayske-mexiko/mexiko_jidlo.jpg" data-themekey="#" class="articleImageVertical" alt="" />
<br>
</p><h2>No a jaké jsou moje tipy na závěr?<br><br></h2><p>
<strong>Do’s & Dont’s </strong></p><p>+ Ochutnávejte streetfood.</p><p>+ Vybírejte peníze z bankomatů.</p><p>+ Naučte se pár základních frází ve španělštině, líp vám půjde smlouvat a vyjednávat o cenách, s angličtinou si tady turista mnoho místních nezíská. <br></p><p>⁃ Půjčení kola mimo ostrovy zas tak dobrý nápad není, cesty jsou neudržované a kola zrezlé, místní doprava collectivo je mnohem levnější a paradoxně spolehlivější.</p><p>⁃ Rozmyslete si, jaké aplikace budete potřebovat a zjistěte si, jestli vám půjdou stáhnout. Nám se nejvíce osvědčila aplikace na autobusovou dopravu ADO (je přes ní nákup o 10 % levnější) a naopak nám nešla stáhnout verze mexického UBERu.</p><p>⁃ Neplaťte kartou, pokud to není absolutně nutné, na mnoha místech je 5% přirážka.</p><p>Vamos a la Mexico!<br></p><p>
<em>Kristýna Rauchová</em></p> | | hobby;# | | |
Mystický Nepál | | https://create-it.cz/Blog/Stranky/mysticky-nepal.aspx | Mystický Nepál | <p>Byl leden 2022 a na internetu jsem právě koupila zpáteční letenky do Nepálu. Můj plán byl, že půjdeme jenom dva a tři týdny budeme poznávat přírodu a kulturu, o které jsem tolik četla. Na Youtube jsem hned začala sledovat videa a v průběhu pár víkendů jsem měla s pomocí cestovatelských blogů napsaný seznam potřebných věcí. Nejdůležitější místo v batohu měl péřový spacák, péřová bunda a litr domácí slivovice, jako prevence před žaludečními těžkostmi. Nakonec nezbylo nic jiného, než odpočítávat dny a těšit se na rozlučkové pivo na letišti. </p><p>V našem evropském prostředí máme už mysl nastavenou na určité vnímání světa a vnímáme principy fungování základních stavebních kamenů společnosti. V Nepálu je všechno jinak. Dokážeme pojmenovat každou věc, ale jako celek je nepálské mraveniště „jiná planeta“. Po příjezdu do Káthmándú, hlavního města Nepálu, se zapojí všechny smyslové vjemy. Začíná to hlukem troubících aut a motorek, pak se nám do nosu dostane prach a zápach města, oči bez přestání udiveně těkají z jedné strany na druhou, taxikářům platíte ošoupanými bankovkami a končí to kořenitou chutí čaje Masala na jazyku. Po několika dnech dochází k drobné aklimatizaci na město, ale vzápětí přichází další bomba. Bum! Nejvyšší hory světa-Himálaj!<br></p><p><img src="/Blog/PublishingImages/Stranky/mysticky-nepal/mysticky_nepal_1.jpg" data-themekey="#" alt="" style="margin:5px;width:668px;height:376px;" /><br></p><h2>Chodím, tedy jsem<br></h2><p>Nepál je jednou z nejchudších zemí světa a žije v ní 30 milionů lidí. Sousedí s Indií a Tibetem, který nepálské mapy nazývají Čínou. Východně od Káthmándú se táhne 50 km dlouhý Annapurna masív, který jsme celkem 13 dní obcházeli po známém treku - Annapurna Circuit. Vyrazili jsme v polovině dubna, kdy je suché počasí, kvetoucí krajina, teplo a málo turistů. Annapurna Circuit má dvě velké výhody. První, že pravidelně projíždí vesnicemi s dostupným ubytováním spolu s výborným jídlem a tím pádem jsme mohli cestovat na lehko. Další výhodou je, že na internetu jsou k dispozici podrobné itineráře cesty a není tak nutné mít osobního průvodce po této oblasti.<br></p><p><img src="/Blog/PublishingImages/Stranky/mysticky-nepal/mysticky_nepal_3_1.jpg" data-themekey="#" alt="" style="margin:5px 75px;width:526px;" /><br></p><h2>Annapurna není jenom jedna<br></h2><p>Slunce svítilo a hřálo téměř po celé trase vedoucí dlouhým údolím k nádherným horským výhledům, kamenným vesnicím a buddhistickým poutním místům až k průsmyku Thorong La ve výšce 5416 m n. m. Charakter krajiny se měnil ze dne na den. První dny jsme přecházeli zelenými rododendronovými lesy a křižovali řeku dlouhými lanovými mosty. Za zatáčkami se postupně objevily vrcholy Annapurny II (7937 m), Annapurny III (7555 m), Annapurny I (8091 m) a Annapurny South (7219 m). Využili jsme možnost odbočit z hlavní trasy na vedlejší aklimatizační výlet k Tilicho Lake (5000 m n. m.). Náročnost cesty se rázem změnila. Kráčeli jsme dlouhým traverzem přes velké a nestabilní suťové pole do Base Campu, odkud jsme brzy ráno mezi prvními vystoupali k zamrznutému jezeru. Všade okolo byl sníh a cítili jsme se horám překvapivě blízko. Finální přechod přes průsmyk Thorong La byl nakonec zasněžený ještě více, ale i přes nulovou viditelnost vládla vítězná atmosféra, že jsme velkou nadmořskou výšku všichni zvládli. Naše putování skončilo v údolí řeky Kali Gandaki ve městě Jomsom po 190 km a 9500 výškových metrech.<br></p><p><img src="/Blog/PublishingImages/Stranky/mysticky-nepal/mysticky_nepal_4.jpg" data-themekey="#" alt="" style="margin:5px 75px;width:524px;height:658px;vertical-align:middle;" /><br></p><h2>Síla česneku<br></h2><p>Měla jsem velký respekt před výškovou nemocí, která se nejčastěji projevuje od 3500 m n. m. a jejímiž příznaky jsou bolesti hlavy, nespavost a žaludeční nevolnost. Příznaky se objevují nezávisle na fyzické kondici, takže se na ně nelze předem připravit a při velmi špatném zdravotním stavu je jediným účinným řešením opětovný návrat dolů. Aklimatizovali jsme se podle doporučení a postupně nabírali výškové metry, aby se tělo mohlo dostatečně přizpůsobit změně v podobě řidšího vzduchu, tedy menšího množství okolního kyslíku. Legenda říká, že celému procesu pomáhá česneková polévka. Každý Nepálec, který nám polévku servíroval, tuto legendu vždy s úsměvem potvrdil a můžu říct, že i když se recept místo od místa lišil, vždy chutnala výborně.<br></p><p><img src="/Blog/PublishingImages/Stranky/mysticky-nepal/mysticky_nepal_5.jpg" data-themekey="#" alt="" style="margin:5px;width:668px;height:376px;" /><br></p><h2>Pokrok nezastavíš<br></h2><p>V průvodci Lonely Planet z roku 2016 se píše, že se v ubytovnách platí za elektřinu nebo připojení k wifi. Realita roku 2022 již byla technologicky vyspělejší. Elektrické vedení se táhlo i v odlehlých končinách. Za pár rupií jsme si koupili nepálskou SIM kartu s 3 GB dat a mobilní signál včetně internetu fungoval příjemnou rychlostí. Dokonce ještě ve vesnici Khangsar ve výšce 3745 m, jsme sledovali ženu majitele guest house, jak škrábe brambory a připravuje námi objednaný Dal Bhát, a v pohodě sleduje bollywoodský film na mobilu. Na druhou stranu Mapy.cz jsme používali výhradně v offline režimu, protože signál nebyl stálý. Celá trasa je v mapách detailně zaznamenaná, včetně míst na jablečný koláč a dá se na všechny informace plně spolehnout. Skupiny turistů z Izraele, které jsme potkávali nejčastěji, nám mapy několikrát pochválili. Naproti tomu nabíjení elektroniky bylo trochu více náročné. Na pokoji byla obvykle jenom jedna zásuvka umístněná ve výšce očí a zástrčka se do ní nedala dobře upevnit. Tady situaci zachraňovala elektrikářská izolační páska, která drží na všech površích a samozřejmě i přibalená powerbanka.<br></p><p><img src="/Blog/PublishingImages/Stranky/mysticky-nepal/mysticky_nepal_2.jpg" data-themekey="#" alt="" style="margin:5px;width:668px;height:376px;" /><br></p><h2>Namasté<br></h2><p>Zpátky jsme se z Jomsomu do Káthmándú vrátili pohodlně letecky. První část cesty malým 25místným vrtulovým letadlem trvala cca 30 minut, poté nás s hodinovým zpožděním vzalo druhé letadlo společnosti Yeti Airlines z Pokhary do Káthmándú. Po oznámení odložení letu jsem si v klidu dala druhý šálek čaje a vyslechla radu paní sedící vedle mě v čekárně, že v této zemi se lze spolehnout pouze na Buddha Air, který má podle jejích informací ve vzdušném prostoru přednost před ostatními. Jisté je, že jsem se už v duchu loučila s krásným dobrodružstvím, které vyzkoušelo mé fyzické hranice a dopřálo mi množství výborného jídla a plný batoh nového oblečení. Pozdrav Namasté získal každodenním používáním hloubku a nekonečný proud vzpomínek na nepálské přátelské obličeje.<br></p><h2>Mé doporučení na konec:<br></h2><div><ul><li><p>Do základní turistické výbavy patřili nízké trekingové boty, které jsou na dlouhé chození pohodlné a zvládnou i menší vrstvu sněhu. Není potřeba mít těžké pohorky a zvyšovat si tak náročnost chůze.<br></p></li><li><p>Základní informace o krajině a trase jsem čerpala z ověřeného zdroje - <a href="https://www.lonelyplanet.com/nepal#planning" target="_blank">Lonely Planet</a>.<br></p></li><li><p>Přehled o <a href="https://www.lostwithpurpose.com/tims-card-kathmandu-nepal/" target="_blank">potřebných turistických vízech</a>.<br></p></li><li><p>V Káthmándú je možné najít místního průvodce ve staré části města na Durbar Square, který umí vyprávět příběhy o nepálských bozích a silná atmosféra je i v <a href="https://www.bhaktapur.com/discover/bhaktapur-durbar-square-an-open-museum/" target="_blank">Budha stupe</a>.<br></p></li><li><p>Dvoudenní výlet k <a href="https://en.wikipedia.org/wiki/Tilicho_Lake" target="_blank">Tilicho Lake</a> patří právem mezi nejkrásnější možné výlety v Nepálu a potvrzuje všechno, co kdy bylo o tomto místě napsané. Přes zamrzlou hladinu jezera procházel i Maurice Herzog a jeho tým <a href="https://www.summitpost.org/tilicho-peak/154646" target="_blank">při prvním výstupu</a> na osmitisícovku na světe.</p></li></ul><p><em>Eva Kováčiková</em><br></p></div> | | hobby;# | | |
Jak vytvořit Pacmana v Pythonu - 2. část | | https://create-it.cz/Blog/Stranky/Pacman2.aspx | Jak vytvořit Pacmana v Pythonu - 2. část | <p>Vítejte ve druhé části seriálu o tom, jak vytvořit hru Pac-Man v Pythonu. V
<a href="/Blog/Stranky/Pacman1.aspx" target="_blank">minulém díle </a>jsme si představili základní principy hry Pac-Man a navrhli si její datovou strukturu. V tomto díle se budeme zabývat implementací několika důležitých prvků hry, jako je například kolize s duchy, počítání score, umělá inteligence duchů, power-upy, koncové stavy hry, animace a textury.<br></p><p>Nejprve si ale připomeneme, jakým způsobem bude hra fungovat. Hráč ovládá Pacmana a snaží se získat co nejvíce bodů za snězení všech cookies na mapě. Pacman je ale pronásledován duchy, kteří se po mapě pohybují podle určitých pravidel. Hra končí, pokud Pacmana chytí jeden z duchů, nebo pokud Pacman sní všechna cookies.<br></p><p>V tomto finálním díle se zaměříme na implementaci kolizí s duchy, které jsou pro hru důležité, jelikož jejich kontakt s Pacmanem může vést k jeho zničení. Dále se podíváme na to, jak můžeme počítat skóre hráče a jak implementovat umělou inteligenci duchů, aby se po mapě pohybovali realističtěji.<br></p><p>Power-upy jsou speciální prvky, které mohou hráči pomoci zvýšit jeho šance na vítězství. V našem případě to mohou být například různé druhy cookies, které mohou Pacmanovi dodat speciální schopnosti nebo ho ochránit před duchy.<br></p><p>Koncové stavy hry jsou důležité, abychom mohli oznámit hráči, zda vyhrál nebo prohrál. V našem případě budeme mít dva možné koncové stavy: vítězství, pokud Pacman sní všechna cookies, a prohru, pokud ho chytí jeden z duchů.<br></p><p>Animace a textury postav duchů a Pacmana zase zajistí, aby hra vypadala živěji a realističtěji. V našem případě budeme animovat pohyb Pacmana a duchů po mapě.<br></p><p>Pokud budete následovat tento článek až do konce, tak výsledná hra bude vypadat takhle:<br></p><p>
<img src="/Blog/PublishingImages/Stranky/Pacman2/pacman4.gif" data-themekey="#" alt="" style="width:100%;" />
</p><h2>Kolize s duchy a počítání životů<br></h2><p>Počítání životů je spojeno se systémem kolizí hráče s duchy. V minulém díle jsme však pořádně neodlišili duchy od ostatních herních objektů, proto pro ducha založíme samostatnou funkcionalitu pro jeho ukládání, získávání a kontrolu kolize s hráčem. Logika je totožná s kolizí s cookie z prvního dílu. Také připravíme proměnné pro powerupy (schopnost podle originálního jména “kokoro”), životy, skóre a časovače událostí. Pro počítání životů jsem přidal jednoduchou funkci
<em>kill_pacman</em> - pokud se ho dotkne duch, odeberu mu jeden život a umístím ho znovu na startovní pozici. Pokud mu dojdou životy, tak zničím jeho objekt.<span style="font-size:15px;"></span></p><pre> <code class="language-python hljs">#class GameRenderer:
def __init__(self, in_width: int, in_height: int):
self._won = False
self._powerups = []
self._ghosts = []
self._hero: Hero = None
self._lives = 3
self._score = 0
self._score_cookie_pickup = 10
self._score_ghost_eaten = 400
self._score_powerup_pickup = 50
self._kokoro_active = False
self._current_mode = GhostBehaviour.SCATTER
self._mode_switch_event = pygame.USEREVENT + 1 # custom event
self._kokoro_end_event = pygame.USEREVENT + 2
self._pakupaku_event = pygame.USEREVENT + 3
self._modes = [
(7, 20),
(7, 20),
(5, 20),
(5, 999999) # infinite chase
]
self._current_phase = 0
def add_ghost(self, obj: GameObject):
self._game_objects.append(obj)
self._ghosts.append(obj)
def get_ghosts(self):
return self._ghosts
def end_game(self):
if self._hero in self._game_objects:
self._game_objects.remove(self._hero)
self._hero = None
def kill_pacman(self):
self._lives -= 1
self._hero.set_position(32, 32)
self._hero.set_direction(Direction.NONE)
if self._lives == 0: self.end_game()
#class Hero
def tick():
self.handle_cookie_pickup()
self.handle_ghosts()
def handle_ghosts(self):
collision_rect = pygame.Rect(self.x, self.y, self._size, self._size)
ghosts = self._renderer.get_ghosts()
game_objects = self._renderer.get_game_objects()
for ghost in ghosts:
collides = collision_rect.colliderect(ghost.get_shape())
if collides and ghost in game_objects:
if self._renderer.is_kokoro_active():
game_objects.remove(ghost)
self._renderer.add_score(ScoreType.GHOST)
else:
if not self._renderer.get_won():
self._renderer.kill_pacman()
</code></pre>
<span style="color:#333333;font-family:farnham-web-medium, open-sans, sans-serif;font-size:1.46em;">Power-upy a počítání skóre</span>
<p>Skóre je v Pacmanovi udělování za snězení cookie, power-upu nebo ducha. Hodnoty se pro každý ze zmíněných objektů liší. Specifikujeme si je proto do enumu
<em>ScoreType</em>.<span style="font-size:15px;"></span></p><pre> <code class="language-python hljs">class ScoreType(Enum):
COOKIE = 10
POWERUP = 50
GHOST = 400
</code></pre>
<span style="text-align:justify;">V Pacmanovi existují speciální cookies, které mu udělí schopnost požírání duchů. V prvním díle jsme schopnost popsali původním japonským slovem “kokoro”, proto ji tak referencuji i v kódu. Vytvoříme novou třídu </span><em style="text-align:justify;">Powerup</em><span style="text-align:justify;"> - v podstatě totožné s </span><em style="text-align:justify;">Cookie</em><span style="text-align:justify;">, jen o něco větší. Do ASCII bludiště použijeme pro power-up písmeno “O” a ve funkci </span><em style="text-align:justify;">main </em><span style="text-align:justify;">lehce modifikujeme kód pro zpracování volných míst v bludišti. Také upravíme funkci pro kolizi s cookies </span><em style="text-align:justify;">handle_cookie_pickup</em><span style="text-align:justify;">, a zahrneme i novou třídu </span><em style="text-align:justify;">Powerup</em><span style="text-align:justify;">. Když Pacman sebere power-up, aktivujeme tuto schopnost na 15 sekund. Po sebrání cookie i powerupu ještě zavoláme funkci </span><em style="text-align:justify;">add_score</em><span style="text-align:justify;"> s odpovídajícím typem skóre. Přidáme taky </span><em style="text-align:justify;">set_won</em><span style="text-align:justify;"> pro konec hry, kdy hráč (Pacman) sebral všechny cookies.</span><span style="font-size:15px;"></span>
<pre> <code class="language-python hljs">class Powerup(GameObject):
def __init__(self, in_surface, x, y):
super().__init__(in_surface, x, y, 8, (255, 255, 255), True)
# class GameRenderer
def add_powerup(self, obj: GameObject):
self._game_objects.append(obj)
self._powerups.append(obj)
def start_kokoro_timeout(self):
pygame.time.set_timer(self._kokoro_end_event, 15000) # 15s
def activate_kokoro(self):
self._kokoro_active = True
self.set_current_mode(GhostBehaviour.SCATTER)
self.start_kokoro_timeout()
def _handle_events(self):
for event in pygame.event.get():
if event.type == self._kokoro_end_event:
self._kokoro_active = False
# class Hero
def handle_cookie_pickup(self):
collision_rect = pygame.Rect(self.x, self.y, self._size, self._size)
cookies = self._renderer.get_cookies()
powerups = self._renderer.get_powerups()
game_objects = self._renderer.get_game_objects()
cookie_to_remove = None
for cookie in cookies:
collides = collision_rect.colliderect(cookie.get_shape())
if collides and cookie in game_objects:
game_objects.remove(cookie)
self._renderer.add_score(ScoreType.COOKIE)
cookie_to_remove = cookie
if cookie_to_remove is not None:
cookies.remove(cookie_to_remove)
if len(self._renderer.get_cookies()) == 0:
self._renderer.set_won()
for powerup in powerups:
collides = collision_rect.colliderect(powerup.get_shape())
if collides and powerup in game_objects:
if not self._renderer.is_kokoro_active():
game_objects.remove(powerup)
self._renderer.add_score(ScoreType.POWERUP)
self._renderer.activate_kokoro()
# main
for powerup_space in pacman_game.powerup_spaces:
translated = translate_maze_to_screen(powerup_space)
powerup = Powerup(game_renderer, translated[0] + unified_size / 2, translated[1] + unified_size / 2)
game_renderer.add_powerup(powerup)
</code></pre><h2>Umělá inteligence duchů</h2><p>V originální hře se duchové chovají podle následujícího vzorce:</p><ol><li>vlna - SCATTER 7 sekund, pak CHASE 20 sekund<br></li><li>vlna - SCATTER 7 sekund, pak CHASE 20 sekund<br></li><li>vlna - SCATTER 5 sekund, pak CHASE 20 sekund<br></li><li>vlna - SCATTER 5 sekund, pak permanentně CHASE<br></li></ol><p>SCATTER je režim, ve kterém se duchové chovají náhodně a vybírají si náhodná místa v bludišti (ve skutečnosti mají ještě další specifičtější vzorce pro pohyb okolo překážek, ale do tyto složitější vzorce zde řešit nebudeme). CHASE je režim, ve kterém si duchové dají za cíl pozici hráče - využijeme pro to kód z prvního dílu a jen upravíme cílovou lokaci z náhodné na danou pozici hráče
<em>get_hero_position</em>.<br></p><p>Tyto časovače máme v kódu od začátku článku, teď jen musíme přidat přepínání mezi režimy CHASE a SCATTER a kód pro zjištění trasy na pozici hráče.<span style="font-size:15px;"></span></p><pre> <code class="language-python hljs"># class GameRenderer
def tick(self, in_fps: int):
self.handle_mode_switch()
def handle_mode_switch(self):
current_phase_timings = self._modes[self._current_phase]
print(f"Current phase: {str(self._current_phase)}, current_phase_timings: {str(current_phase_timings)}")
scatter_timing = current_phase_timings[0]
chase_timing = current_phase_timings[1]
if self._current_mode == GhostBehaviour.CHASE:
self._current_phase += 1
self.set_current_mode(GhostBehaviour.SCATTER)
else:
self.set_current_mode(GhostBehaviour.CHASE)
used_timing = scatter_timing if self._current_mode == GhostBehaviour.SCATTER else chase_timing
pygame.time.set_timer(self._mode_switch_event, used_timing * 1000)
def get_hero_position(self):
return self._hero.get_position() if self._hero != None else (0, 0)
def set_current_mode(self, in_mode: GhostBehaviour):
self._current_mode = in_mode
def get_current_mode(self):
return self._current_mode
def _handle_events(self):
for event in pygame.event.get():
if event.type == self._mode_switch_event:
self.handle_mode_switch()
# class Ghost
def request_path_to_player(self, in_ghost):
player_position = translate_screen_to_maze(in_ghost._renderer.get_hero_position())
current_maze_coord = translate_screen_to_maze(in_ghost.get_position())
path = self.game_controller.p.get_path(current_maze_coord[1], current_maze_coord[0], player_position[1],player_position[0])
new_path = [translate_maze_to_screen(item) for item in path]
in_ghost.set_new_path(new_path)
def calculate_direction_to_next_target(self) -> Direction:
if self.next_target is None:
if self._renderer.get_current_mode() == GhostBehaviour.CHASE and not self._renderer.is_kokoro_active():
self.request_path_to_player(self)
else:
self.game_controller.request_new_random_path(self)
return Direction.NONE
diff_x = self.next_target[0] - self.x
diff_y = self.next_target[1] - self.y
if diff_x == 0:
return Direction.DOWN if diff_y > 0 else Direction.UP
if diff_y == 0:
return Direction.LEFT if diff_x < 0 else Direction.RIGHT
if self._renderer.get_current_mode() == GhostBehaviour.CHASE and not self._renderer.is_kokoro_active():
self.request_path_to_player(self)
else:
self.game_controller.request_new_random_path(self)
return Direction.NONE</code></pre><h2>Animace a textury<br></h2><p>Duchy a Pacmana upravíme tak, aby se místo dosavadních základních geometrických tvarů zobrazovali jako textury, respektive “sprites”. Do
<em>MovableObject</em> třídy přidáme proměnnou image a upravíme funkci draw následovně:<span style="font-size:15px;"></span></p><pre> <code class="language-python hljs"># class MovableObject
def __init__(self, in_surface, x, y, in_size: int, in_color=(255, 0, 0), is_circle: bool = False):
self.image = pygame.image.load('images/ghost.png')
def draw(self):
self.image = pygame.transform.scale(self.image, (32, 32))
self._surface.blit(self.image, self.get_shape())
</code></pre><p>Referencované obrázky jsou dostupné na mém
<a href="https://github.com/janjilecek/pacman_python_pygame" target="_blank">githubu</a>.<br></p><p>Každý duch bude mít jiný obrázek (specifikujeme ve funkci main) a když hráč aktivuje powerup, přepnou se duchové na texturu
<em>fright</em>.<span style="font-size:15px;"></span></p><pre> <code class="language-python hljs"># class Ghost
def __init__(self, in_surface, x, y, in_size: int, in_game_controller, sprite_path="images/ghost_fright.png"):
super().__init__(in_surface, x, y, in_size)
self.game_controller = in_game_controller
self.sprite_normal = pygame.image.load(sprite_path)
self.sprite_fright = pygame.image.load("images/ghost_fright.png")
def draw(self):
self.image = self.sprite_fright if self._renderer.is_kokoro_active() else self.sprite_normal
super(Ghost, self).draw()
</code></pre>
<img src="/Blog/PublishingImages/Stranky/Pacman2/pacman1.gif" data-themekey="#" alt="" style="width:100%;" />
<p>Animace otevírání a zavírání pusy Pacmana uděláme přes časovanou událost <em>_pakupaku_event</em>, která se volá každých 200ms (implementujeme v kapitole níže). Ta zneguje binární hodnotu mouth_open a podle toho se vykreslí jeden nebo druhý sprite Pacmana.</p><pre> <code class="language-python hljs"># class Hero
def __init__(self, in_surface, x, y, in_size: int):
super().__init__(in_surface, x, y, in_size, (255, 255, 0), False)
self.last_non_colliding_position = (0, 0)
self.open = pygame.image.load("images/paku.png")
self.closed = pygame.image.load("images/man.png")
self.image = self.open
self.mouth_open = True
def draw(self):
half_size = self._size / 2
self.image = self.open if self.mouth_open else self.closed
self.image = pygame.transform.rotate(self.image, self.current_direction.value)
super(Hero, self).draw()
# class GameRenderer
def _handle_events(self):
if event.type == self._pakupaku_event:
if self._hero is None: break
self._hero.mouth_open = not self._hero.mouth_open
</code>
</pre><h2>Koncové stavy hry a textové UI<br></h2><p>Zobrazení stavu hry je na konec jednoduché. Funkcí
<em>display_text</em> vykreslíme text o dané velikosti na danou pozici. V hlavní tick funkci zobrazíme na základě výsledku
<em>get_won </em>text pro výhru “YOU WON”. Pokud neexistuje objekt hráče - což mohlo nastat jen při “smrti”, když objekt zničíme - tak zobrazíme text “YOU DIED”.</p><pre> <code class="language-python hljs"># class GameRenderer
def display_text(self, text, in_position=(32, 0), in_size=30):
font = pygame.font.SysFont('Arial', in_size)
text_surface = font.render(text, False, (255, 255, 255))
self._screen.blit(text_surface, in_position)
def set_won(self):
self._won = True
def get_won(self):
return self._won
def tick(self, in_fps: int):
black = (0, 0, 0)
self.handle_mode_switch()
pygame.time.set_timer(self._pakupaku_event, 200) # open close mouth
while not self._done:
for game_object in self._game_objects:
game_object.tick()
game_object.draw()
self.display_text(
f"[Score: {self._score}] [Lives: {self._lives}]")
if self._hero is None: self.display_text("YOU DIED", (self._width / 2 - 256, self._height / 2 - 256), 100)
if self.get_won(): self.display_text("YOU WON", (self._width / 2 - 256, self._height / 2 - 256), 100)
pygame.display.flip()
self._clock.tick(in_fps)
self._screen.fill(black)
self._handle_events()
</code></pre>
<img src="/Blog/PublishingImages/Stranky/Pacman2/pacman2.gif" data-themekey="#" alt="" style="width:100%;" />
<h2>Závěrem</h2><p>Ve finální části seriálu o vývoji hry Pac-Man v Pythonu jsme se zaměřili na implementaci několika důležitých prvků hry.<br></p><p>Nejprve jsme si ukázali, jak můžeme implementovat kolize s duchy a počítat skóre hráče. Poté jsme se zaměřili na umělou inteligenci duchů, která je důležitá pro realistický pohyb těchto objektů po mapě. Dále jsme se věnovali implementaci power-upů, které mohou hráčům pomoci zvýšit šance na vítězství.<br></p><p>V závěru jsme se podívali na koncové stavy hry a implementovali jsme animace a textury objektů hry. Díky těmto prvkům se nám podařilo vytvořit kompletní prototyp legendární hry Pac-Man. V případě nejasností je můj kód k dispozici na
<a href="https://github.com/janjilecek/pacman_python_pygame/blob/main/pacman_final.py" target="_blank">githubu</a>.<br></p><p>Doufám, že vám tento seriál pomohl pochopit, jak vytvořit hru Pac-Man v Pythonu, a že jste se při implementaci dozvěděli něco nového. Pokud máte zájem o další informace o vývoji her v Pythonu, neváhejte se podívat na další
<a href="/Blog/Stranky/hra-v-pythonu.aspx" target="_blank">články</a> na našem webu.<br></p><p>
<em>Jan Jileček</em><br></p><br> | | odborné;#hobby;# | | |
Jak vytvořit Pacmana v Pythonu - 1. část | | https://create-it.cz/Blog/Stranky/Pacman1.aspx | Jak vytvořit Pacmana v Pythonu - 1. část | <p>Pacman je kultovní plošinovka, kterou zná pravděpodobně každý. Jméno “Pac-man" pochází z japonského slova “paku", které označuje otevírání a zavírání úst. Tvůrce Toru Iwatani se inspiroval u japonské pohádky o bytosti, která ochraňuje děti před monstry tím, že monstra požírá. Při tvorbě hry použil jako odrazový můstek klíčová slova z příběhu, a sloveso “jíst" se stalo základem všeho.<br></p><p>Monstra jsou znázorněna jako čtyři duchové, kteří na hráče útočí v postupných vlnách, podobně jako ve Space Invaders. Každý z duchů má také unikátní osobnost. V pohádce je ještě jeden důležitý element, totiž koncept životní síly “kokoro", která bytosti umožňovala požírat monstra. Ve hře je tato energie znázorněna jako power-up cookiesky, které Pacmanovi uděluji krátkodobou schopnost požírat monstra.</p><p>V návodu vás nejprve provedu základním nastavením, pak vytvoříme herní objekty pro zeď bludiště, Pacmana a duchy, zajistíme hledání cesty bludištěm, duchům přidáme náhodný pohyb, u hráče implementujeme ovládání šipkami a nakonec do bludiště rozmístíme jídlo ve formě cookies. Vše budu doprovázet obrázky a gify pro lepší znázornění.</p><h2>Základní nastavení</h2><p>Výsledná hra má přibližně 300 řádků kódu, proto zde uvádím pouze nejdůležitější části. Kód v úplné podobě je dostupný na
<a href="https://github.com/janjilecek/pacman_python_pygame/blob/main/pacman.py">mém github repozitáři</a>. Prvním krokem je instalace potřebných balíčků. Budeme potřebovat
<em>pygame, numpy </em>a<em> tcod</em>. Nainstalujte si všechny přes nástroj pip (jak na to najdete
<a href="/Blog/Stranky/Python-aplikace.aspx">v článku o Python aplikacích</a>). Pokud používáte vývojové prostředí jako např. PyCharm (doporučuji), instalace proběhne po kliknutí na hlášku o chybějícím balíčku.</p><p>Nejprve si vytvoříme herní okno, podobným způsobem jako v
<a href="/Blog/Stranky/hra-v-pythonu.aspx">předchozím návodu na hru Space Invaders</a> (ta měla pouhých 100 řádků). Zde připravím parametry pro specifikaci velikosti okna, název hry, obnovovací frekvenci a několik datových polí, které budou držet reference na herní objekty a hráče. Funkce
<em>tick </em>všechny herní objekty opakovaně prochází a volá jejich vnitřní logiku a vykreslování. Pak zbývá už jen překreslit celou herní plochu a zajistit zpracování vstupních událostí, jako jsou kliknutí myši a vstup z klávesnice. K tomu bude sloužit funkce
<em>_handle_events</em>.</p><pre>
<code class="language-python hljs">
import pygame # importy balíků
import numpy as np
import tcod
class GameRenderer:
def __init__(self, in_width: int, in_height: int):
pygame.init()
self._width = in_width
self._height = in_height
self._screen = pygame.display.set_mode((in_width, in_height))
pygame.display.set_caption('Pacman')
self._clock = pygame.time.Clock()
self._done = False
self._game_objects = []
self._walls = []
self._cookies = []
self._hero: Hero = None
def tick(self, in_fps: int):
black = (0, 0, 0)
while not self._done:
for game_object in self._game_objects:
game_object.tick()
game_object.draw()
pygame.display.flip()
self._clock.tick(in_fps)
self._screen.fill(black)
self._handle_events()
print("Game over")
def add_game_object(self, obj: GameObject):
self._game_objects.append(obj)
def add_wall(self, obj: Wall):
self.add_game_object(obj)
self._walls.append(obj)
def _handle_events(self):
pass # dodelame
</code>
</pre><p></p><p>Vytvoření třídy pro zeď pak bude vypadat jednoduše. Barvu pro zdi volím modrou podle originálního Pacmana (parametr color - Blue 255, zbytek 0). <br></p><pre>
<code class="language-python hljs">
class Wall(GameObject):
def __init__(self, in_surface, x, y, in_size: int, in_color=(0, 0, 255)):
super().__init__(in_surface, x * in_size, y * in_size, in_size, in_color)
</code>
</pre><p>Kód pro vykreslování a objekt pro zdi máme připraven. Při psaní se ujistěte, že třídy
<em>Wall </em>a
<em>GameObject </em>jsou nad třídou
<em>GameRenderer</em>, aby je třída “viděla". Dalším krokem je vykreslení bludiště na obrazovku. Ale ještě předtím musíme vytvořit jednu pomocnou třídu.<br></p><h2>Třída game controller</h2><p>Bludiště ve formě ASCII znaků uložím do proměnné v nové třídě
<em>PacmanGameController</em>. Použiju velikost bludiště jako v originále - 28x31 dlaždic. Později budu muset zajistit, aby duchové mohli správně hledat cestu v bludišti a případně i najít hráče. Bludiště nejprve načtu jako znaky a převedu ho na pole jedniček a nul, kde zeď bude nula a průchodný prostor bude jedna. Tyto hodnoty slouží algoritmu hledání cesty jako tzv. cost funkce. Nula značí nekonečnou cenu průchodu, proto nebudou takto označené položky pole považovány za průchodné. Všimněte si pole
<em>reachable_spaces</em>, které drží průchozí části bludiště. K tomu ale až později, jako první musím připravit struktury třídy. Bludiště v ASCII podobě můžete zkopírovat z mého
<a href="https://github.com/janjilecek/pacman_python_pygame/blob/main/pacman.py">githubu</a>. Ve znakovém zápisu jsem použil “X" pro zeď, “P" pro Pacmana a “G" pro ducha. </p><pre>
<code class="language-python hljs">
class PacmanGameController:
def __init__(self):
self.ascii_maze = [
"XXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"XP XX X",
"X XXXX XXXXX XX XXXXX XXXX X",
"X XXXX XXXXX XX XXXXX XXXX X",
"X XXXX XXXXX XX XXXXX XXXX X",
"X X",
"X XXXX XX XXXXXXXX XX XXXX X",
"X XXXX XX XXXXXXXX XX XXXX X",
"X XX XX XX X",
"XXXXXX XXXXX XX XXXXX XXXXXX",
"XXXXXX XXXXX XX XXXXX XXXXXX",
"XXXXXX XX XX XXXXXX",
"XXXXXX XX XXXXXXXX XX XXXXXX",
"XXXXXX XX X G X XX XXXXXX",
" X G X ",
"XXXXXX XX X G X XX XXXXXX",
# zkraceno pro clanek
"XXXXXXXXXXXXXXXXXXXXXXXXXXXX",
]
self.numpy_maze = []
self.cookie_spaces = []
self.reachable_spaces = []
self.ghost_spawns = []
self.size = (0, 0)
self.convert_maze_to_numpy()
#self.p = Pathfinder(self.numpy_maze) # pouzijeme pozdeji
def convert_maze_to_numpy(self):
for x, row in enumerate(self.ascii_maze):
self.size = (len(row), x + 1)
binary_row = []
for y, column in enumerate(row):
if column == "G":
self.ghost_spawns.append((y, x))
if column == "X":
binary_row.append(0)
else:
binary_row.append(1)
self.cookie_spaces.append((y, x))
self.reachable_spaces.append((y, x))
self.numpy_maze.append(binary_row)
</code>
</pre><h2>Vykreslení bludiště</h2><p>Vše nutné pro vykreslení bludiště je připraveno, takže už jen stačí vytvořit instance našich tříd
<em>PacmanGameController,</em> projít 2D pole s pozicemi zdí a na těchto místech vytvořit objekt
<em>Wall </em>(používám neuvedenou funkci
<em>add_wall</em>, opět nahlédněte do úplného kódu na mém
<a href="https://github.com/janjilecek/pacman_python_pygame/blob/main/pacman.py">githubu</a>). Obnovovací frekvenci nastavuji na 120 snímků za vteřinu. </p><pre>
<code class="language-python hljs">
if __name__ == "__main__":
unified_size = 32
pacman_game = PacmanGameController()
size = pacman_game.size
game_renderer = GameRenderer(size[0] * unified_size, size[1] * unified_size)
for y, row in enumerate(pacman_game.numpy_maze):
for x, column in enumerate(row):
if column == 0:
game_renderer.add_wall(Wall(game_renderer, x, y, unified_size))
game_renderer.tick(120)
</code>
</pre><p style="text-align:center;"> <img src="/Blog/PublishingImages/Stranky/Pacman1/unnamed-3.png" alt="pacman" data-themekey="#" style="max-width:400px;" /><br></p><h2>Přidání duchů</h2><p>V originálním Pacmanovi byli čtyři duchové jmény Blinky, Pinky, Inky a Clyde, každý s individuálním charakterem a schopnostmi. Koncept hry je založen na japonské pohádce (více
<a href="https://www.gamedeveloper.com/design/the-pac-man-dossier">zde</a> a
<a href="https://gameinternals.com/understanding-pac-man-ghost-behavior">zde</a>) a originální jména v japonštině i naznačují jejich schopnosti (např. Pinky má japonské jméno Lupič, Blinky je zase Stín). Pro naši hru ale nebudeme zacházet do takových detailů a každý z duchů bude používat jen základní behaviorální smyčku jako v originále - tzn. módy
<em>Chase</em>,
<em>Scatter </em>a
<em>Frightened. </em>Tyto AI módy si popíšeme a zpracujeme ve druhém díle.</p><p>Třída pro ducha bude jednoduchá, většinu chování zdědí od rodičovské třídy
<em>MovableObject </em>(nahlédněte na
<a href="https://github.com/janjilecek/pacman_python_pygame/blob/main/pacman.py">github</a>, ta třída je o něco složitější a obsahuje logiku pro pohyb ve čtyřech směrech, následování trasy a ověřování kolize se zdí). </p><pre>
<code class="language-python hljs">
class Ghost(MovableObject):
def __init__(self, in_surface, x, y, in_size: int, in_game_controller, in_color=(255, 0, 0)):
super().__init__(in_surface, x, y, in_size, in_color, False)
self.game_controller = in_game_controller
</code>
</pre><p> </p><p>Do třídy
<em>PacmanGameController</em> přidám hodnoty RGB barev jednotlivých duchů a ve funkci
<em>main</em> vygeneruji čtyři barevné duchy. Připravím si také statickou funkci pro převod souřadnic, která jednoduše převede souřadnice bludiště (např. x=16 y=16 je přibližně střed bludiště, a pronásobením s velikostí buňky, neboli tile, dostanu souřadnici na herní ploše v pixelech). </p><pre>
<code class="language-python hljs">
# v PacmanGameController
self.ghost_colors = [
(255, 184, 255),
(255, 0, 20),
(0, 255, 255),
(255, 184, 82)
]
# ve funkci main
for i, ghost_spawn in enumerate(pacman_game.ghost_spawns):
translated = translate_maze_to_screen(ghost_spawn)
ghost = Ghost(game_renderer, translated[0], translated[1], unified_size, pacman_game,
pacman_game.ghost_colors[i % 4])
game_renderer.add_game_object(ghost)
# obecné funkce pro převod souřadnic, umístěte na začátek kódu
def translate_screen_to_maze(in_coords, in_size=32):
return int(in_coords[0] / in_size), int(in_coords[1] / in_size)
def translate_maze_to_screen(in_coords, in_size=32):
return in_coords[0] * in_size, in_coords[1] * in_size
</code>
</pre><p>V této fázi se již budou po spuštění hry vykreslovat čtyři duchové v bludišti. Dále je chceme rozpohybovat. </p><h1>Hledání cesty bludištěm</h1><p>Nyní přichází možná nejsložitější část. Hledání cesty ve 2D prostoru, nebo grafu, je obtížný problém. Implementovat algoritmus pro vyřešení takového problému by dalo na další článek, proto použijeme hotové řešení. Nejefektivnějším algoritmem pro hledání cesty je
<a href="https://cs.wikipedia.org/wiki/A%2a">A* algoritmus</a>. Ten nám poskytne balíček
<em>tcod</em>, který jsme instalovali na začátku.</p><p>Vytvořím teď třídu Pathfinder. V konstruktoru inicializuji
<em>numpy</em> pole s cenou průchodu (pole jedniček a nul, popsané výše) a vytvořím třídní proměnnou
<em>pf, </em>která bude držet instanci A* pathfinderu. Funkce
<em>get_path</em> nám pak po zavolání se souřadnicemi v bludišti (odkud, kam) vypočítá a vrátí trasu ve formě jednotlivých kroků polem. </p><pre>
<code class="language-python hljs">
class Pathfinder:
def __init__(self, in_arr):
cost = np.array(in_arr, dtype=np.bool_).tolist()
self.pf = tcod.path.AStar(cost=cost, diagonal=0)
def get_path(self, from_x, from_y, to_x, to_y) -> object:
res = self.pf.get_path(from_x, from_y, to_x, to_y)
return [(sub[1], sub[0]) for sub in res]
</code>
</pre><p>Do funkce
<em>main</em> přidám úsek pro demonstraci vyhledání trasy. Volím souřadnice začátku trasy [1,1] a cíle trasy [24,24].<br></p><pre>
<code class="language-python hljs">
# Vykreslení cesty
red = (255, 0, 0)
green = (0, 255, 0)
_from = (1, 1)
_to = (24, 24)
path_array = pacman_game.p.get_path(_from[1], _from[0], _to[1], _to[0])
#
print(path_array)
# [(1, 2), (1, 3), (1, 4), (1, 5), (2, 5), (3, 5), (4, 5), (5, 5), (6, 5), (6, 6), (6, 7) ...
#
white = (255, 255, 255)
for path in path_array:
game_renderer.add_game_object(Wall(game_renderer, path[0], path[1], unified_size, white))
#
from_translated = translate_maze_to_screen(_from)
game_renderer.add_game_object(
GameObject(game_renderer, from_translated[0], from_translated[1], unified_size, red))
#
to_translated = translate_maze_to_screen(_to)
game_renderer.add_game_object(
GameObject(game_renderer, to_translated[0], to_translated[1], unified_size, green))
</code>
</pre><p>Ve hře vypadá vykreslení nejkratší trasy takto:</p><div style="text-align:center;">
<img src="/Blog/PublishingImages/Stranky/Pacman1/unnamed.gif" alt="pacman" data-themekey="#" style="max-width:400px;" /> </div><h2>Náhodný pohyb duchů</h2><p>Ve třídě
<em>PacmanGameController </em>vytvářím novou funkci pro zvolení náhodného bodu z pole dosažitelných míst
<em>reachable_spaces</em>. Každý duch tuto funkci použije po tom, co dorazí do cíle. Jednoduše si tak duchové donekonečna volí cestu ze své aktuální pozice v bludišti do náhodného cíle. Složitější chování, jako útěk a honění hráče, implementujeme v dalším díle. </p><pre>
<code class="language-python hljs">
def request_new_random_path(self, in_ghost: Ghost):
random_space = random.choice(self.reachable_spaces)
current_maze_coord = translate_screen_to_maze(in_ghost.get_position())
path = self.p.get_path(current_maze_coord[1], current_maze_coord[0], random_space[1],
random_space[0])
test_path = [translate_maze_to_screen(item) for item in path]
in_ghost.set_new_path(test_path)
</code>
</pre><p>Duchovi přidáme ve třídě
<em>Ghost </em>novou logiku pro následování trasy. Funkce
<em>reached_target</em> je volaná každý snímek a kontroluje, zda duch již dorazil do cíle. Pokud ano, zjistí jakým směrem je další krok cesty bludištěm a podle toho začne měnit svoji pozici buď nahoru, dolů, doleva nebo doprava (logika pro pohyb je volaná v rodičovské třídě
<em>MovableObject</em>). </p><pre>
<code class="language-python hljs">
def reached_target(self):
if (self.x, self.y) == self.next_target:
self.next_target = self.get_next_location()
self.current_direction = self.calculate_direction_to_next_target()
def set_new_path(self, in_path):
for item in in_path:
self.location_queue.append(item)
self.next_target = self.get_next_location()
def calculate_direction_to_next_target(self) -> Direction:
if self.next_target is None:
self.game_controller.request_new_random_path(self)
return Direction.NONE
diff_x = self.next_target[0] - self.x
diff_y = self.next_target[1] - self.y
if diff_x == 0:
return Direction.DOWN if diff_y > 0 else Direction.UP
if diff_y == 0:
return Direction.LEFT if diff_x < 0 else Direction.RIGHT
self.game_controller.request_new_random_path(self)
return Direction.NONE
def automatic_move(self, in_direction: Direction):
if in_direction == Direction.UP:
self.set_position(self.x, self.y - 1)
elif in_direction == Direction.DOWN:
self.set_position(self.x, self.y + 1)
elif in_direction == Direction.LEFT:
self.set_position(self.x - 1, self.y)
elif in_direction == Direction.RIGHT:
self.set_position(self.x + 1, self.y)
</code>
<br><br></pre><p>Duchové se teď vytvoří na pozicích určených písmenem “G" v původním ASCII bludišti a začnou si hledat náhodnou cestu. Já jsem zavřel tři duchy do klece - jako v původním Pacmanovi budou vypouštěni postupně - a jeden bloudí bludištěm:</p><p style="text-align:center;">
<img src="/Blog/PublishingImages/Stranky/Pacman1/unnamed-2.gif" alt="pacman" data-themekey="#" style="max-width:400px;" />
<br>
</p><h2>Přidání hráče a jeho ovládání</h2><p>Pro hráče dělám třídu Hero. Většina logiky pro ovládání hráče i duchů je řešena ve funkci
<em>MovableObject</em>, proto stačí pouze pár funkcí pro upřesnění chování. V originále se Pacman hýbe ve čtyřech směrech, šipkami ovládáme jeho chůzi bludištěm. Pokud nezmáčkneme žádnou směrovou klávesu, bude pokračovat posledním validním směrem. Pokud zmáčkneme klávesu ve směru, kterým ještě nelze jít, směr se uloží a použije se při příští dostupné zatáčce. Stejné chování replikuji do naší hry a přidal jsem i Pacmanovu schopnost teleportovat se z jednoho konce bludiště na druhý - prostě zkontroluji, jestli je mimo herní plochu zleva nebo zprava, a podle toho nastavím jeho pozici na opačnou stranu bludiště. Pacman má taky upravenou funkci pro vykreslování, musíme ho vykreslit s poloviční velikostí, kterou by normálně zabíral jako čtverec (<em>pygame.rect</em>).<br></p><pre>
<code class="language-python hljs">
class Hero(MovableObject):
def __init__(self, in_surface, x, y, in_size: int):
super().__init__(in_surface, x, y, in_size, (255, 255, 0), False)
self.last_non_colliding_position = (0, 0)
def tick(self):
# TELEPORT
if self.x < 0:
self.x = self._renderer._width
if self.x > self._renderer._width:
self.x = 0
self.last_non_colliding_position = self.get_position()
if self.check_collision_in_direction(self.direction_buffer)[0]:
self.automatic_move(self.current_direction)
else:
self.automatic_move(self.direction_buffer)
self.current_direction = self.direction_buffer
if self.collides_with_wall((self.x, self.y)):
self.set_position(self.last_non_colliding_position[0], self.last_non_colliding_position[1])
self.handle_cookie_pickup()
def automatic_move(self, in_direction: Direction):
collision_result = self.check_collision_in_direction(in_direction)
desired_position_collides = collision_result[0]
if not desired_position_collides:
self.last_working_direction = self.current_direction
desired_position = collision_result[1]
self.set_position(desired_position[0], desired_position[1])
else:
self.current_direction = self.last_working_direction
def handle_cookie_pickup(self):
collision_rect = pygame.Rect(self.x, self.y, self._size, self._size)
cookies = self._renderer.get_cookies()
game_objects = self._renderer.get_game_objects()
for cookie in cookies:
collides = collision_rect.colliderect(cookie.get_shape())
if collides and cookie in game_objects:
game_objects.remove(cookie)
def draw(self):
half_size = self._size / 2
pygame.draw.circle(self._surface, self._color, (self.x + half_size, self.y + half_size), half_size)
</code>
</pre><p>Třídu
<em>Hero</em> instancuji na konci funkce main. Pozice nastavuji na souřadnici [1,1] -
<em>unified_size </em>je velikost jedné dlaždice. Do
<em>GameRenderer</em> třídy ještě musíme přidat zpracování vstupních události, abychom mohli herní postavu ovládat.<br></p><pre>
<code class="language-python hljs">
# ve třídě GameRenderer
def add_hero(self, in_hero):
self.add_game_object(in_hero)
self._hero = in_hero
def _handle_events(self):
for event in pygame.event.get():
if event.type == pygame.QUIT:
self._done = True
pressed = pygame.key.get_pressed()
if pressed[pygame.K_UP]:
self._hero.set_direction(Direction.UP)
elif pressed[pygame.K_LEFT]:
self._hero.set_direction(Direction.LEFT)
elif pressed[pygame.K_DOWN]:
self._hero.set_direction(Direction.DOWN)
elif pressed[pygame.K_RIGHT]:
self._hero.set_direction(Direction.RIGHT)
# na konci funkce main
pacman = Hero(game_renderer, unified_size, unified_size, unified_size)
game_renderer.add_hero(pacman)
game_renderer.tick(120)
</code>
</pre><p>Po spuštění můžeme Pacmana vodit bludištěm!</p><p style="text-align:center;"> <img src="/Blog/PublishingImages/Stranky/Pacman1/unnamed-3.gif" alt="pacman" data-themekey="#" style="max-width:400px;" /><br></p><h2>Přidání cookies</h2><p>Nebyl by to Pacman bez cookies v bludišti. Z herního hlediska určují míru prozkoumanosti světa a některé cookies i obrací schopnosti duchů a Pacmana. Jsou tedy ultimátní odměnou pro hráče a hlavním ukazatelem jeho postupu úrovní. V dnešních hrách se běžně odměňuje chování, které chce herní designér podporovat ve hráči. Krásným příkladem je např. letošní
<em>Elden Ring</em>, kde dostane odměnu každý, kdo prozkoumává všechny kouty světa. Čím nebezpečnější a odlehlejší, tím větší odměna. Naopak hry jako novodobý
<em>Assassin's Creed</em> podporují plnění úkolů, takže máte při hraní pocit, že jste v práci, a ne ve hře.</p><p>Přidání cookies bude nejsnadnější věcí celého návodu, a proto jsem ji nechal na konec, jako třešničku na dortu. Vytvořím třídu
<em>Cookie</em>. Její instance bude mít vždy velikost čtyři pixely, žlutou barvu a kruhový tvar. Ve funkci main vytvořím cookies na všech dlaždicích, které jsme na začátku uložili do pole
<em>cookie_spaces</em> (totožné s
<em>reachable_spaces</em>). Hráčovi přidám funkci
<em>handle_cookie_pickup</em>, ve které si neustále ověřuji, jestli nedochází ke kolizi hráče s nějakou cookie. Pokud tomu tak je, cookie odstraním z pole a ta se přestane vykreslovat.<br></p><pre>
<code class="language-python hljs">
class Cookie(GameObject):
def __init__(self, in_surface, x, y):
super().__init__(in_surface, x, y, 4, (255, 255, 0), True)
# ve třídě GameRenderer přidat:
def add_cookie(self, obj: GameObject):
self._game_objects.append(obj)
self._cookies.append(obj)
# ve třídě Hero přidat:
def handle_cookie_pickup(self):
collision_rect = pygame.Rect(self.x, self.y, self._size, self._size)
cookies = self._renderer.get_cookies()
game_objects = self._renderer.get_game_objects()
for cookie in cookies:
collides = collision_rect.colliderect(cookie.get_shape())
if collides and cookie in game_objects:
game_objects.remove(cookie)
# ve funkci main:
for cookie_space in pacman_game.cookie_spaces:
translated = translate_maze_to_screen(cookie_space)
cookie = Cookie(game_renderer, translated[0] + unified_size / 2, translated[1] + unified_size / 2)
game_renderer.add_cookie(cookie)
</code>
</pre><p>Výsledek našeho snažení:<br></p><p style="text-align:center;">
<img src="/Blog/PublishingImages/Stranky/Pacman1/unnamed-4.gif" alt="pacman" data-themekey="#" style="max-width:400px;" />
</p><p>
</p><p>Malá zajímavost za závěr - v originální hře se Pacman zastaví na dobu jednoho snímku po každém požití cookie, takže ho duchové snáze dohoní v počátku hry, když je ještě pole zaplněné. V příštím díle zpracujeme podobnou herní mechaniku a můžete se těšit i na umělou inteligenci duchů, počítání score, zvuky, animace, textury, power-upy, screen-shake efekty, životy a koncové stavy hry.<br></p><p><br></p><p><i>Jan Jileček</i></p><p>
<br>
</p><br> | | odborné;#hobby;# | | |
Grafika pro děti očima Viky | | https://create-it.cz/Blog/Stranky/grafika-pro-deti.aspx | Grafika pro děti očima Viky | <p>Dvanáctiletá Viky napsala skvělou autentickou reportáž z kurzu grafiky pro děti pořádaného Cleverlance. Publikováno bez úprav.<br></p><h2>1. lekce<br></h2><p>Úplně na začátku 1. lekce jsme se představili ostatním jako na jiných kurzech, ale k tomu jsme ještě řekli co bychom se chtěli naučit. Jakmile jsme se představili lekce mohla začít. Nejdřív nám řekli barvu roku (která se jmenuje Very Peri) a jak je pro designéra důležitá. Vlastně designér používá barvu roku skoro všude. Taky jsme se bavili o kole barev, kde je krásně vidět kontrast barev. Potom jsme měli historii barev. Je hodně zajímavé že už v pravěku používali bílou barvu, protože bílá se získává blbě a ještě pomocí nějakých chemických látek. A třeba Římané měli rádi různé odstíny hnědé takže takový romantický styl. Další téma byl pigment. Podle toho jaké dáme pojidlo do pigmentu vzniknou různé barvy. Dřív se jako pojidlo používal med, olej nebo vajíčko. Třeba když se dá do pigmentu jako pojidlo med tak vzniknou akvarelové barvy nebo taky to stejné akorát s vajíčkem tak vzniknou tempery. Poslední téma bylo z jakých různých kamenů se dělají různé barvy. Třeba žlutá se dělá ze sopečného kamene nebo je zajímavé že bílá se dělá z černého kamene sice je tam nějaká chemická úprava, ale to je věc vedlejší. Na konci hodiny jsme dostali “domácí úkol" vymyslet vlastní barevnou paletu do příštího týdne. Mě to hrozně moc bavilo a těším se na další lekce grafiky.</p><p> <img src="/Blog/PublishingImages/Stranky/grafika-pro-deti/obrazek-1.jpg" alt="paleta" data-themekey="#" style="max-width:690px;" /><br><br></p><h2>2. lekce<br></h2><p>V 2. lekci jsme se bavili o typografii. Nejdřív jsme probírali historii psaní. Úplně první písmo byly hieroglyfy, které vymysleli v Egyptě.Tenhle druh písma byl časově náročný. Si představte kdybyste museli kreslit třeba kachnu kvůli jednomu slovu. Další písmo vymysleli Féničané a bylo to první hláskové písmo a z něho potom vznikla Latinka, kterou píšeme i v dnešní době. Jedno z předposledních témat bylo to že jsme si vysvětlovali co je patkové a nepatkové písmo momentálně píšu nepatkovým. Dále co jsou versálky a mínusky. A předposlední co jsme dělali bylo že nám vysvětlovali plakátové a takové to které se dává do novin a tak dále. Plakátové má zaujmout a udělat dojem, ale někdy je skoro nečitelné. Zase naopak to novinářské se musí dobře číst. Poslední co jsme dělali bylo to že nám poslali odkaz na webovou stránku do chatu. Tam jsme si mohli cvičit rozmístění písmen v nadpisech a tak dále. Jako minule nám dali “domácí úkol" ale tentokrát jsme měli nakreslit nebo namalovat svoje jméno (viz obrázek v záhlaví článku). Zase jako minule mě to fakt hodně bavilo a těším se na příště.</p><h2>3. lekce<br></h2><p>Ve 3. lekci jsme se zajímali o komiksech. Úplně první téma co jsme probírali byly takové ty okénka a říkali jsme si že ty okénka můžou být různě uspořádané tak aby čtenáře zaujali. Potom takové stínování v černobílém komiksu, že třeba 1. okénko je do šeda, 2. a 3. okénko je do bíla a tak dále. Nějak uprostřed hodiny jsme si zkoušeli si namalovat svůj komiks, ale jenom strip. To je komiks s dvěma nebo třemi okénky. Jakmile jsme dodělali svůj “komiks" tak hodina skončila. I teďka mě to moc bavilo a těším se na příště.</p><p><br><img src="/Blog/PublishingImages/Stranky/grafika-pro-deti/komix.jpg" alt="komix" data-themekey="#" style="max-width:690px;" /><br><br></p><h2>4. lekce<br><br></h2><p>Na 4. lekci jsme malovali a vymýšleli svůj pytlík bonbónů. Nejdřív jsme museli vymyslet název, já jsem vymyslela Japonky. Potom styl písma a když jsme měli hotový náčrt tužkou tak jsme si vymysleli paletu barev. Jakmile jsme vybarvili název, tak jsme udělali design jako třeba obrázek příchuti: meloun, marshmelouny atd. Kolem toho lístky nebo něco jiného. Taky jsme tam museli napsat kolik to váží jaká je to příchuť (pro jistotu). Během toho nám říkali Michal s Ivanou o kontrastu a zlatém řezu. Naše pytlíky bonbónů jsme jim na konci hodiny ukázali. Pochválili nás a řekli ať tomu doděláme nějaké zajímavé pozadí a vyfotíme jim to. Jako každá lekce grafiky mě bavila a navíc na tomhle jsme si procvičili typografii a výběr barev, které se k sobě hodí.<br><br></p><h2>5. lekce <br></h2><p>Na 5. lekci jsme pracovali s Figmou. Předělávali jsme pytlík bonbónů do počítače, který jsme dělali minule. Nejdřív jsme si nastavili formát papíru a nastavili mu barvu. Potom jsme udělali nadpis a upravili ho. Taky jsme tam dali různé tvary a na jedné webové stránce jsme našli různé vektorové obrázky. Do dalšího týdne jsme to měli dodělat a poslat. K tomu ten co to měl nejhezčí tak dostane pytlík bonbónů. Všechny lekce grafiky byly super a asi nejvíc mě bavila 3. lekce. Pokud by byly další tak bych se určitě zapojila.<br><br></p><p> <i>Viky</i><br></p><p><br>Sledujte nás a v brzké době vám přineseme výtvory i ostatních účastníků kurzu - protože kdo by nechtěl vidět nejhezčí pytlík bonbónů!<i></i></p><p><i><br></i></p><p>
<br>
</p> | | hobby;#vzdělávání;# | | |
Nová divize Cleverlance zachraňuje celý svět před kritickým nedostatkem čipů | | https://create-it.cz/Blog/Stranky/Cleverlance-Microchips.aspx | Nová divize Cleverlance zachraňuje celý svět před kritickým nedostatkem čipů | <p><strong>Praha, 1. dubna - Technologická společnost Cleverlance se rozhodla zareagovat na dlouhotrvající celosvětový nedostatek čipů a učinila strategické investiční rozhodnutí: vybudovat vysoce specializovanou výrobní jednotku na produkci nedostatkových mikročipů s názvem Cleverlance Microchips. Nová divize se nachází přímo v nové pobočce Cleverlance v japonské Ósace. Již koncem tohoto roku firma počítá s dodáním vyšších stovek tisíc čipů pro sektory automotive, spotřební elektroniky a zdravotnictví, čímž chce zásadně změnit poměry na světovém trhu.</strong></p><p>Tzv. "čipový hladomor" trápí světové trhy vinou koronavirové pandemie už přes rok. Česká technologická společnost Cleverlance se tuto situaci rozhodla radikálně řešit a spustila k prvnímu dubnu 2022 výrobu vlastních mikročipů. O tu se bude starat zcela nová technologická divize společnosti s názvem Cleverlance Microchips. Očekává se, že Cleverlance Microchips objemově již v polovině roku 2025 překročí současnou světovou produkci. Mezi prvními zákazníky jsou významné evropské a asijské automobilky, i výrobci elektroniky z celého světa. Vznik nové divize také jednoznačně stojí za raketovým nárůstem odhadované hodnoty Cleverlance, která má na konci roku 2022 podle ekonomických predikcí atakovat hranici 10 miliard EUR.<br></p><p>
<img src="/Blog/PublishingImages/Stranky/Cleverlance-Microchips/microchips-6733-glow-chip.jpg" alt="Cleverlance Microchips" data-themekey="#" style="max-width:690px;" />
<br>
</p><p>
<em>„Jednalo se o logický krok v rámci naší celosvětové expanze,“ </em>vysvětluje
<strong>Petr Štros, CEO a hlavní vizionář Cleverlance</strong>,
<em>„díky výrobě mikročipů se nám otevírají nové trhy a vzhledem k naší schopnosti rychlé dodávky očekáváme nárůst obratu společnosti o 1 000 000 %. Naším cílem je do roku 2027 dodávat 75 % evropské spotřeby mikročipů a volné kapacity by měly pokrýt zhruba 48,5 % poptávky po mikročipech ve zbytku světa.“</em></p><p>Cleverlance Microchips startuje svou výrobu třemi základními řadami chipsetů určenými pro tři klíčová odvětví. Pro automobilový trh vyvinula řadu procesorů s označením Fast&Furious, pro trh spotřební elektroniky chipy s vlastenecky zaměřeným označením RUR a procesory pro zdravotnické přístroje s názvem Asklepios22.<br></p><p>
<img src="/Blog/PublishingImages/Stranky/Cleverlance-Microchips/microchips-6713-glow-chip.jpg" alt="Cleverlance MICROCHIPS" data-themekey="#" style="max-width:690px;" />
<br>
</p><p><em><em style="text-align:justify;">„</em>Po dlouhodobém globálním hladu po mikročipech se management společnosti Cleverlance rozhodl reagovat a z řad našich vysoce kvalifikovaných odborníků jsme sestavili tým, který se touto problematikou začal intenzivně zabývat. Po týdnech usilovné práce můžeme konečně s radostí konstatovat, že jsou po prvních testech Cleverlance Microchips připraveny k hromadné výrobě a následné distribuci výrobcům automobilů, spotřební elektroniky a zdravotnických přístrojů. O naše mikročipy projevili enormní zájem také výrobci očkovacích vakcín."</em> dodává
<strong>ředitel dodávky produktů v Cleverlance Jiří Voldán.</strong></p><p>Díky zapojení nové technologie registruje Cleverlance pochopitelně i enormní zájem uchazečů o zaměstnání.
<strong>HR ředitel Cleverlance Martin Paták</strong> komentuje situaci:
<em>„Jenom díky digitalizaci HR systémů jsme schopni tento nápor ustát. Pokud by ty tisíce CV denně přicházely v papírově podobě, nestačili bychom rozšiřovat kanceláře. Někteří zájemci o zaměstnání jdou dokonce tak daleko, že se pokoušejí zvát naše recruiterky na schůzky po pracovní době a dosáhnout tím přednostního zacházení. Jsem ovšem rád, že mám profesionální tým, který podobným tlakům odolává.“</em></p><p style="text-align:center;">
<em><img src="/Blog/PublishingImages/Stranky/Cleverlance-Microchips/IMG_0456-japonska_pobocka.png" alt="Cleverlance Japan" data-themekey="#" style="max-width:690px;" /></em><em> Pobočka Cleverlance v Ósace</em><br></p><p>
<span lang="cs" style="text-decoration:underline;"><strong>O společnosti Cleverlance:</strong></span></p><p>Společnost Cleverlance je přední český dodavatel IT služeb, informačních systémů, webových a mobilních aplikací včetně virtuální reality a matrixových realizací zejména v oblastech financí, telekomunikací, automotive a provozování galaktické satelitní sítě. Cleverlance vznikla v roce 2000 a dnes tvoří její tým přes 800 počítačových artistů, kteří jsou připraveni splnit v podstatě jakékoli požadavky… v oblasti zadání, analýzy, návrhu, vývoje a implementace softwarových aplikací, včetně projektového řízení, bezpečnosti, podpory či teleportačních přístrojů na zakázku.<br><br></p><p>
<br>
</p> | | hobby;#projekty;# | | |
Novinky v Unreal Engine 5 | | https://create-it.cz/Blog/Stranky/Unreal-engine-5.aspx | Novinky v Unreal Engine 5 | <p>Firma Epic Games se na herním trhu objevila v roce 1998 s legendární hrou
<a href="https://en.wikipedia.org/wiki/Unreal_%281998_video_game%29" target="_blank">Unreal</a>. Od té doby se jejich
<a href="https://en.wikipedia.org/wiki/Unreal_Engine" target="_blank">Unreal Engine</a> stal hlavním konkurentem
<a href="https://en.wikipedia.org/wiki/Quake_engine" target="_blank">Quake</a> technologie ve světě FPS her. Pak přišel Unreal Engine 2, který se stal základem pro hru
<a href="https://en.wikipedia.org/wiki/Unreal_Tournament_2004" target="_blank">Unreal Tournament 2004</a>. Dalším krokem pak byl v roce 2014 Unreal Engine 4 („UE4“), který tu s námi byl 7 produktivních let a během té doby se na scéně chlubil těmi nejlepšími nástroji pro herní vývojáře vůbec. UE4 se proslavil zejména svou rozsáhlou škálou nástrojů, které jsou zároveň jednoduché na používání. Jeho blueprint systém, který umožňuje grafické programování a tím ulehčuje práci umělcům a komunikaci programátorů se zbytkem týmu, je také ideálním nástrojem pro rychlé prototypování nápadů. UE4 se používá i ve filmovém průmyslu, jak lze vidět např. u seriálu Mandalorian. Byly zde použity CGI scenérie vytvořené UE4 a promítané na obří LED obrazovky, které byly synchronizované s kamerou a nahradily tak “klasické" zelené plátno.</p><p>Posledním evolučním krokem je Unreal Engine 5 („UE5“), který se naposledy ohlásil v prosinci svojí dechberoucí prezentací nového dema Matrix Awakens. O něm a o dalších pokročilých funkcích nového UE5 vám řeknu níže.<br></p><h2>Jak revoluční je Unreal Engine 5?</h2><p>V původním
<a href="https://youtu.be/qC5KtatMcUw" target="_blank">demu</a> vydaném v květnu roku 2021 ukázal světu Unreal Engine svoje nové technologie, jmenovitě Lumen a Nanite. Lumen je nový plně dynamický systém globálního osvětlení a odrazů a Nanite je geometrický systém, který umožňuje vykreslovat extrémně detailní modely v reálném čase. Jednou z metod, kterou Nanite používá, je víceméně klasické LOD, Level of Detail - načítání těch detailnějších modelů blíže kameře a těch horších daleko od kamery. Hlavním tahákem je zpracování milionů trojúhelníků na 3D meshi.</p><p style="text-align:center;">
<a href="https://youtu.be/xfpXN6mgfew?t=533" target="_blank">
<img src="/Blog/PublishingImages/Stranky/Unreal-engine-5/ue3.png" data-themekey="#" alt="unreal engine" style="max-width:400px;" /></a> </p><p>Jak již bylo řečeno,
<strong>Lumen</strong> je nový osvětlovací systém v UE5. Byl navržen pro next-gen konzole a dokáže vykreslovat diffusní (rozptýlené) odrazy s nekonečným počtem odražení a nepřímé spekulární (zrcadlové) odrazy v rozsáhlých prostředích, a to v měřítku milimetrů i kilometrů. Běžně se musí tzv. “zapékat" lightmap textury po každé změně statických světel ve scéně. S Lumenem tato nutnost odpadá, vše je řešeno automaticky a v reálném čase.<br></p><p>Lumen spoléhá na LOD v Nanite systému, protože vypočítává světla hlavně poblíž kamery a viditelného světa, pro optimální výkon. Lumen přímo nepotřebuje Nanite systém k činnosti, ale pokud je ve scéně komplexní geometrie s mnoho-polygonovými mesh objekty bez zapnutého Nanite, tak bude výpočet osvětlení značně zpomalený. To je obzvlášť znatelné u scén plných objektů bez nastaveného LOD. Jak celý osvětlovací systém vypadá v reálné scéně a v reálném čase se můžete kouknout na videu výše. Ložnice se po otevření okna přirozeně zaplaví světlem.<br></p><p style="text-align:center;">
<a href="https://www.youtube.com/watch?v=qC5KtatMcUw" target="_blank">
<img src="/Blog/PublishingImages/Stranky/Unreal-engine-5/ue2.png" data-themekey="#" alt="" style="max-width:400px;" /></a> </p>
<p>Už od vzniku komerčního 3D herního vývoje byli vývojáři utlačováni a omezování počtem polygonů, které mohou vykreslit bez dopadu na výkon hry. Metody optimalizace počtu polygonů ve scéně zůstaly po řadu let v podstatě nezměněny - 3D modely se vymodelují v několika úrovních detailů, neboli LOD a detaily se simulují kombinací textur a shaderů (opět, blíž = detailnější).<br></p><p>
<strong>Nanite </strong>v Unreal Engine 5 je schopný vykreslovat scény s miliardami trojúhelníků zdrojové geometrie. V podstatě to znamená, že engine má přístup ke geometrii v plném rozlišení a v reálném čase optimalizuje vykreslování na obrazovku.<br></p><p>Při použití klasických vykreslovacích technik by se hodil 3D model do scény a vykreslil by se každý jeho polygon, bez ohledu na to, zda je viditelný kamerou (každá herní scéna má hlavní kameru) a nebo jestli sdílí stejné pixely s jinými polygony. S Nanitem jsou všechny tyto věci zpracovány automaticky.<br></p><p style="text-align:center;">
<a href="https://youtu.be/WU0gvPcc3jQ" target="_blank">
<img src="/Blog/PublishingImages/Stranky/Unreal-engine-5/ue1.png" alt="ue1.png" data-themekey="#" style="max-width:400px;" /></a> </p><p>Na závěr bych ještě rád zmínil Matrix Awakens, poslední vydané demo prezentující novinky v Unreal Engine 5. Popravdě řečeno bylo dechberoucí, alespoň pro mě. Na začátku videa skoro nelze poznat, který Keanu Reeves je ten reálný, a kterého vytvořil počítač. Možná jen podle vrásek okolo očí. Vše je zásluhou Nanite a Lumen systémů, které dokáží zpracovat extrémní detaily a vypočítat realistické osvětlení. Potenciál, který má UE5 pro filmový a herní průmysl, je masivní. Už teď jsou ve vývoji hry využívající UE5, jako např. Stalker 2, takže se určitě máme na co těšit!<br></p><p> <i>Jan Jileček</i><br></p><p>
<br>
</p> | | hobby;# | | |
Jak pečujeme o své zdraví při sedavém povolání | | https://create-it.cz/Blog/Stranky/office-fitness.aspx | Jak pečujeme o své zdraví při sedavém povolání | <p>Už druhým rokem si v Cleverlance každý pracovní den dopřáváme cvičení s <a href="https://officefitness.cz/">Office Fitness</a>. Lekce jsou nám skvělým pomocníkem při práci u počítače. Cvičení obvykle nezabere více než 5 minut, takže je možné se protáhnout třeba v pauze mezi meetingy. Velkou časovou úsporou je, že nemusíme nikam chodit. Stačí kliknout a pětiminutovka je připravena.<br></p><p>Na výběr přitom máme ze široké nabídky cvičení od správného nastavení pracovního místa, protažení zad, uvolnění očí, obličejové jógy, dechových cvičení na uvolnění stresu až po lekce pro řidiče. Velmi oblíbená je také jóga s Iris. Takové ranní jógové protažení udělá s celým dnem opravdové divy.<br></p><p>
<img src="/Blog/PublishingImages/Stranky/office-fitness/OF-146.jpg" alt="office jóga" data-themekey="#" style="max-width:690px;" />
<br>
</p><p>Vyzkoušeli jsme si, že když cvičíme pravidelně, stane se z toho příjemný návyk. Možná jste slyšeli, že návyky se vytvoří za minimálně 21 dní, ale v Office Fitness odhadují, že to
<a href="https://officefitness.cz/magazin-obsah-2/" target="_blank">trvá déle</a>. Ovšem potom to stojí za to!</p><p>V minulém roce se kolegové kromě cvičení mohli zapojit i do několika soutěží. Jednou z výher byl například praktický podstavec pod monitor vlastnoručně vyrobený trenérem Jiřím Zadinou z Office Fitness. Jiní se podívali na prodloužené víkendy do hor nebo lázní anebo si užili online lekce obličejové jógy s lektorkou naživo. Letos chystáme další soutěž – tentokrát o mikiny Cleverlance, kolegové se brzy dozví pravidla a do hlasování o výherci chceme zapojit naše fanoušky na sociálních sítích.<br></p><p>
<strong>Jaké výhody přináší cvičení
<a href="https://www.linkedin.com/in/martinpatak/" target="_blank">Martinovi Patákovi</a>, který s Office Fitness cvičí od konce roku 2020, se dozvíte v krátkém rozhovoru.</strong></p><p>
<strong><img src="/Blog/PublishingImages/Stranky/office-fitness/MaP-9313.jpg" alt="Martin Paták" data-themekey="#" style="max-width:690px;" /><br></strong></p><p>
<strong>Jak často cvičíš s Office Fitness?</strong></p><p>V poslední době moc ne, ale v minulém roce skoro pravidelně. Nejvíce v období lockdownů, kdy jsem se již od ranního připomenutí těšil na pár minut mezi online meetingy na cvičení.</p><p>
<strong>Máš nějaký další rituál, který bys vyzdvihl?</strong></p><p>Ranní káva nebo čaj.<br></p><p>
<strong>Vnímáš nějaké změny na svém těle po dobu, co cvičíš?</strong></p><p>Bolesti zad ze špatného sezení jsou pryč úplně, občasné bolení za krkem stále trvá …asi něco dělám špatně.<br></p><p>
<strong>Která lekce ti nejvíce utkvěla v paměti?</strong></p><p>Jak si nastavit sedačku v autě. Sice se cvičením moc nesouvisí, ale pamatuji si ji, asi protože je úplně z jiného prostředí.<br></p><p>
<strong>Jaké cvičení sis v programu nejvíce oblíbil?</strong></p><p>Všechna cvičení na uvolnění krku …“hlavu nakloníme k ramenu … a podíváme se dolů…“<br></p><p>
<strong>Co ti pravidelné cvičení v práci nebo na Home Office přináší?</strong></p><p>Doma přestávku a protažení. Známe to všichni na Home Office člověk v podstatě celý den sedí na jednom místě. …V kanceláři alespoň pobíhá po patrech a odejde na oběd…</p><p>
<strong>Co bys vzkázal svým kolegům, kteří ještě necvičí nebo cvičí nárazově?</strong></p><p>Pokud pracujete z domova je to skoro nutnost. V kancelářích je složitější najít si chvilku a hlavně místo …na tom už ale také pracujeme. <br></p><p>Zatímco v minulém roce mohli cvičit kolegové, kteří se do programu sami přihlásili, začátkem tohoto roku jsme cvičení zpřístupnili pro všechny v Cleverlance. Každý si tak může program s Office Fitness vyzkoušet a zjistit, jestli je cvičení pro něj to pravé. <br></p><p>Zaujalo vás cvičení? Pojďte si ho také vyzkoušet. Vaše pětiminutovka je připravena, užijte si ji. <br></p><p>
<a href="https://youtu.be/BEA6XZSAdWE" target="_blank">
<img src="/Blog/PublishingImages/Stranky/office-fitness/OfficeFitness.jpg" alt="OfficeFitness" data-themekey="#" style="max-width:690px;" /></a><br></p><p> </p><p>
<br>
</p> | | hobby;#vzdělávání;# | | |
Blokové programování pro děti | | https://create-it.cz/Blog/Stranky/blokove-programovani.aspx | Blokové programování pro děti | <p>Ruku na srdce, když dětem poprvé ukážete, jak vypadá váš kód, většinou je ta změť znaků moc nezaujme. Pokud jim vysvětlíte, že aby kód fungoval, je důležité dodržet syntax, možná je dokonce spíš odradíte. Programování je přitom váš svět a rádi byste ho nějak zprostředkovali svým ratolestem. Nevíte jak? Tento problém velice elegantně řeší blokové – nebo chcete-li vizuální - programování.<br></p><p>Připravené bloky, které reprezentují cykly, proměnné či další programovací prvky, se jednoduše skládají pomocí přetažení myší do výsledného programu, sestavují si ho v podstatě vizuálně, jako by dávaly dohromady kostky lega. Ty mají různé barvy, podle oblastí a struktury a aplikace dokonce i naznačí, pokud je nějaká kombinace kódu nevhodná, nebo někde něco chybí. Díky tomu děti pochopí logiku, s jakou je třeba program vystavět, co na čem závisí, sestavují příkazy za sebe - základní principy zvládnou i samy.<br></p><p>
<img src="/Blog/PublishingImages/Stranky/blokove-programovani/blokove-programovani.png" alt="Blokové programování" data-themekey="#" style="max-width:690px;" />
<br></p><p>Jak fungují logické operátory, proměnné a cykly už je náročnější na pochopení, učící křivku v tomto případě urychlí například výklad vyučujícího nebo rodiče, který umí programovat. Tahle hra s barevnými bloky kódu postupně děti vtahuje do kontextu a umožňuje jim pochopit ducha programování. Poté, co zvládnou strukturu, je už snazší začít se samotnou syntaxí.</p><h2>Scratch, Lego, Microbit</h2><p>Asi nejznámější aplikací, která stojí na blokovém programování, je Scratch, ale možná jste viděli i programovací Lego roboty nebo slyšeli o projektu Microbit, se kterým přišla britská BBC.<br></p><p>
<a href="https://scratch.mit.edu/">Scratch</a> je na světě již od roku 2003 a pochází z dílny
<a href="https://cs.wikipedia.org/wiki/Massachusettsk%c3%bd_technologick%c3%bd_institut">MIT</a>. Děti se v něm učí používat programování řízené událostmi s různými aktivními objekty označovanými v angličtině jako „sprites“. Jedná se o jednoduché dvojrozměrné obrázky, ty lze importovat či přímo nakreslit v jednoduchém editoru, který je součástí Scratche. K těmto „sprites“ malý programátor posléze vybírá a přiřazuje příkazové bloky (je jich deset barevně odlišených druhů – podle funkce), které do sebe zapadají jako stavebnice. Výsledkem je animace nebo třeba hra, která funguje na základě logiky kódu malého programátora.</p><p>Velkou výhodou je, že pro Scratch existuje spousta tutoriálů a návodů. Po zvládnutí programování ve Scratchi uživatelé často přecházejí k programování v Pythonu. Kdy je vhodné začít se Scratchem? V zásadě od okamžiku, kdy jsou děti schopné číst s pochopením, tedy tak od 3. třídy ZŠ. Existuje dokonce
<a href="http://ispython.com/wp/wp-content/uploads/2014/11/Asigsce16_titled.pdf">studie</a>, která Scratch potvrzuje jako vhodný jazyk pro úvodní kurz do programování na základních a středních školách. A v Cleverlance jsme si programování pro děti ve Scratchi v minulosti také s úspěchem vyzkoušeli.<br></p><p>
<img src="/Blog/PublishingImages/Stranky/blokove-programovani/scratch.jpg" alt="scratch.jpg" data-themekey="#" style="max-width:690px;" />
<br>
</p><p>
<a href="https://www.lego.com/cs-cz/categories/coding-for-kids">Lego</a> si pro technicky zaměřené děti připravilo hned několik projektů,
<a href="https://www.idnes.cz/technet/technika/lego-boost-stavebnice-kreativita-programovani-test-recenze.A191212_060224_tec_technika_pka">Lego Boost</a>, Lego Mindstorm a Lego Education, v závislosti na věkové kategorii a situaci. Výhodou je, že si děti ze stavebnice postaví trojrozměrný předmět, třeba robota, autíčko nebo nějaký stroj, který pak prostřednictvím blokového programování rozpohybují dle svých představ.<br></p><p><img src="/Blog/PublishingImages/Stranky/blokove-programovani/lego.png" alt="lego.png" data-themekey="#" style="max-width:690px;" /><br></p><p>
<a href="https://microbit.org/get-started/bbc-microbit-in-school/">Microbit</a> v našich končinách není tak rozšířený, ale ve Velké Británii ho znají skoro všechny děti. Jedná se o projekt BBC, která přišla s myšlenkou jednoduchého mikropočítače, v podstatě takové programovatelné destičky s několika diodami a s USB rozhraním. Od roku 2015 jich ve školách ve Spojeném království bylo rozdáno přes milion kusů a
<a href="https://www.youtube.com/watch?v=CejDBLkXZkc&t=542s">děti na něm píší své první jednoduché programy</a> v nativním prostředí
<a href="https://makecode.microbit.org/">makecode</a>, lze ale použít i Scratch, Javascript či Micropython.</p><p> <img src="/Blog/PublishingImages/Stranky/blokove-programovani/Microbit.png" alt="Microbit.png" data-themekey="#" style="max-width:690px;" /><br><br></p><h2>HTML pro děti v Cleverlance</h2><p>Ačkoli dnes existují WISIWYG editory, takže člověk nemusí znát všechny značky, nebo chcete-li tagy HTML, hodí se jeho základům alespoň trochu rozumět. Připravili jsme tedy v Cleverlance kurz HTML pro děti. Díky zde získaným základům jsou schopny stránku lépe vystavět a samy si udělat drobné úpravy, které jim out of the box aplikace neumožňují. Snáze také při inspekci kódu zjistí, kde je chyba a proč něco nefunguje.<br></p><p>V Cleverlance učí děti HTML Vítek Červinka, který pro tento účel upravil jednoduchou webovou aplikaci od
<a href="https://codeddraig.github.io/ffau/">Ffau</a> postavenou na základě
<a href="https://opensource.google/projects/blockly">knihovny od Googlu Blockly</a>. Najdete ji na adrese
<a href="https://html.cleverlance.com/">https://html.cleverlance.com/</a> a můžete si sami vyzkoušet, jak takové blokové programování funguje. </p><p><a href="https://www.cleverlance.com/cz/kariera/Stranky/Skoleni/HTML-pro-deti.aspx?utm_source=cit&utm_medium=blog&utm_campaign=html_deti" target="_blank"><img src="/Blog/PublishingImages/Stranky/blokove-programovani/html_deti.png" alt="html_deti.png" data-themekey="#" style="max-width:690px;" /></a><br><br></p><p>Vítka jsme se také zeptali na jeho postřehy z minulých kurzů (vedle HTML pro děti v Cleverlance také lektorsky vede kurz programování Microbitů a výuku programování na gymnáziu).<br></p><p>
<strong>Která věc děti na kurzu programování nejvíc baví?</strong></p><p>Když se dostanou do fáze, kdy mohou samy ovlivnit, co kód udělá, například změnit vzhled. Obecně je baví něco tvořit a když dostanou samostatný úkol, užijí si vymýšlení cesty, jak dosáhnout kýženého výsledku, například podle vizuálního zadání.<br></p><p>
<strong>Jaká věc byla pro děti nejtěžší?</strong></p><p>Postupně se logika kódu zesložiťuje a někdy se stane, že se v tom děti ztratí. A překvapivě je pro ně nejtěžší říct, že se ztratily – a to je například při on-line formě kurzu trošku náročnější na odhalení i pro mě jako lektora.</p><p>
<strong>Co na kurzu nejvíc bavilo tebe?</strong></p><p>Nejvíc se mi líbí, když mají takový ten „aha“ efekt, když najednou pochopí logiku, když jim to zafunguje. Určitě je to nějaká chemická reakce v mozku, když překonáš problém, vyřešíš zadání. Já to ostatně sám mám dodnes. A u těch dětí to jde poznat a pak je to vnitřním motorem toho programování, je to taková odměna za vynaložené úsilí a pokud je adekvátní, tak se tomu pak věnují dál.</p><p>
<strong>Má blokové programování i nějaké nevýhody?</strong></p><p>Možná je dobré zmínit, že složitější programy by se v tom dělaly už obtížně, protože by to bylo nepřehledné. Taky jsou jistým limitem nadefinované bloky, je tam jen omezený set příkazů. Ale to je vlastně také dobře, protože ve chvíli, kdy už to dětem nestačí, je čas začít programovat normálně.</p><p>
<strong>Co chceš, aby si děti z tvých kurzů odnesly?</strong></p><p>Aby se naučily přemýšlet, jak se od nápadu či zadání postupnými kroky dostanou k jeho realizaci. Samozřejmě budu rád, když je programování zaujme a budou v něm pokračovat. Hlavní ideou kurzu ovšem je, aby pochopily principy. Nemusí hned být programátoři, ale je dobré tomu rozumět, ono se jim to jednou bude hodit, i když v budoucnu budou potřebovat připravit zadání pro někoho, kdo pro ně program vytvoří.</p><p>Díky blokovému programování může začít programovat opravdu každý a vyzkoušet si, jaké to je. Pokud se mu to zalíbí, může snadno navázat, možností je dnes hodně a rozhodně je to jedna z nejlepších investic do budoucnosti (dětí i vlastní).<br></p><p>
<br>
</p> | | hobby;#vzdělávání;# | | |
TOP 3 technologické trendy pro rok 2022 | | https://create-it.cz/Blog/Stranky/Trendy-2022.aspx | TOP 3 technologické trendy pro rok 2022 | <p>Rok 2021 byl rokem digitalizace, AI, autonomních vozidel, NFT a rozvoje kryptoměn. Jen pro krátkou rekapitulaci: Elon Musk překonal Jeffa Bezose a stal se nejbohatším mužem planety. Dogecoin vzrostl o skoro 8 tisíc procent, a pak opět spadl. Clubhouse měl být revoluční VIP sociální sítí, jenže jak rychle vyrostl, tak rychle umřel. LinkedIn potvrdil, že ve velkém hacku byla kompromitována data 500 milionů uživatelů. Ransomware útoky ve světě se znásobily. Deepfake videa se stala mainstreamovými. Umělec Beeple prodal jeden svůj jpg obrázek jako NFT za 69 milionů dolarů.
<a href="https://www.consumerreports.org/car-recalls-defects/tesla-recall-full-self-driving-software-phantom-braking-a5626328806" target="_blank" style="text-decoration:underline;">Bug</a> v autonomním řízení Tesly způsoboval náhodné brždění. A to hlavní - nedostatek čipů se ještě prohloubil, protože Taiwanské firmě TSMC
<a href="https://fortune.com/2021/06/12/chip-shortage-taiwan-drought-tsmc-water-usage/" target="_blank" style="text-decoration:underline;">došla voda</a>, a tak se zhoršila dostupnost konzolí Playstation 5 a grafických karet GTX série 3000, a v podstatě všech dalších technologií závislých na 5nm čipech. Co pro nás má připraveno rok 2022?<br></p><h2>Web 3.0 - decentralizovaná budoucnost internetu</h2><p>
<a href="https://coinmarketcap.com/alexandria/article/what-is-web-3-0" target="_blank" style="text-decoration:underline;">Web 3.0</a>, nebo také decentralizovaný web, bude místem, ve kterém veškerá moderní technologie zkonverguje do jediného bodu. Má v něm být obsaženo vše od cloud computingu, chytrých kontraktů, NFT, AI, VR, blockchainu až po no-code (vizuální programování). Ovšem, že neznalí budou vidět Web 3.0 jen jako další hype co pomine nebo jako místo pro NFT scamy, ale je to v podstatě vize nové éry internetu, ve kterém bude všechno decentralizované a pevně v rukou uživatelů a ne korporací. Vše bude regulované přes chytré kontrakty a kryptoměny. Takže je to vlastně únik z dnešní dystopie ovládané Googlem, Facebookem, Applem a Amazonem. Díky obtížné manipulaci mají být např. mediální portály založené na Web 3.0 dobrou obranou proti vzestupu totality, jako je tomu např. v Číně. Bude nemožné cenzurovat a omezovat svobodu slova, nebude možné sledovat uživatele a monetizovat jejich soukromá data.<br></p><p>V decentralizovaných aplikacích, neboli DApps, uživatel vlastní všechna svoje data. Místo přihlašovacího jména a hesla se uživatelé identifikují přes svoje blockchainové peněženky (resp. svoje veřejné adresy, ke kterým vlastní privátní seed). Dnes se už běžně tato identifikace provádí přes prohlížečové addony, jako to dělá např. peněženka <a href="https://metamask.io/" target="_blank" style="text-decoration:underline;">Metamask</a>. Kód aplikace samotné pak žije na blockchainu ve formě chytrého kontraktu. Není zde tedy klasická dynamika klient-server.</p><p>Otázkou zůstává, zda moderní generace lidí ocení svobodné a decentralizované platformy. Baví je konzumovat obsah na cenzurovaných a ostře sledovaných a mysl otupujících sociálních médiích jako TikTok, který se nijak netají tím, že předává data přímo Čínské vládě.<br></p><p>Hlavní součástí Webu 3.0 budou zejména technologie, o kterých si teď povíme více.<br></p><h2>Metaverse a VR</h2><p>Během roku 2020 a 2021 nastala rozsáhlá virtualizace pracovišť a kanceláří, protože kvůli koronavirové krizi bylo najednou potřeba pracovat plně vzdáleně. Metaverse chce tuto virtualizaci ještě urychlit a rozvinout. A co metaverse vlastně je? Podle
<a href="https://www.matthewball.vc/all/forwardtothemetaverseprimer" target="_blank" style="text-decoration:underline;">definice</a> je to "Masivně škálovaná a interoperabilní síť 3D virtuálních světů vykreslených v reálném čase, kterou může synchronně a trvale prožívat efektivně neomezený počet uživatelů s individuálním pocitem přítomnosti a s kontinuitou dat, jako je identita, historie, oprávnění, předměty, komunikace a platby".</p><p>Posledních několik let je virtuální realita (VR) trendem nejen v herním průmyslu. A metaverse bude VR využívat a rozvíjet naplno. Během následujících 5 let budou vytvořeny celé virtuální světy, které budou mít vlastní ekonomiku, a budou existovat paralelně k reálnému světu. Uvnitř těchto metaversů budou účastníci provádět ty stejné úkony jako v realitě, jako je práce, socializování, tvoření nebo hraní.<br></p><p>Mark Zuckerberg nedávno přišel s jednou verzí těchto metaversů. Jeho první nápad tkví v tom udělat pracovní online meetingy více "lidské". Vadí mu, že při meetingu musíme koukat na něco jako Zoom nebo Google Meet, protože se mu často stává, že si plete lidi, když je ve velkém meetingu vidí jen ve 2D. Podle něj by lidé neměli prožívat tyto sociální interakce skrz "svítící obdélníky", jak tomu je teď. “Při klasickém online meetingu se člověk dívá na 2D mřížku tváří na obrazovce a vidí jen jejich torzo. Ale tak přece neprožíváme realitu. Jsme zvyklí na to být s někým v místnosti, mít nějaký smysl pro prostor okolo nás a vědět, kdo sedí vpravo a kdo vlevo od nás. A když někdo promluví, vím, že na mě mluví z mojí pravé strany například", řekl Mark.<br></p><p>Podle
<a href="https://www.theverge.com/22588022/mark-zuckerberg-facebook-ceo-metaverse-interview" target="_blank" style="text-decoration:underline;">Zuckerberga</a> se bude jeho verze metaversu blížit reálné teleportaci. V jeden moment můžete pracovat na virtuálních monitorech, které si mimochodem můžete díky virtuálním brýlím vzít kamkoliv, třeba do kavárny nebo do vlaku, a v moment další můžete být s kamarády na domácím promítání a pouštět si nový Matrix.</p><p><img src="/Blog/PublishingImages/Stranky/Trendy-2022/metaverse.jpg" alt="metaverse.jpg" data-themekey="#" style="max-width:690px;" /></p><p>Jak jsem již zmínil, důležitou součástí metaversu je VR, které je nutným nástrojem pro připojení se do metaversu. John Carmack, legendární tvůrce prvního 3D herního enginu, her jako Doom, Quake a prvního VR headsetu Oculus Rift, začal pracovat přímo pro Zuckerberga na VR technologii (Oculus byl koupen Facebookem v roce 2014). V roce 2019 se vzdal pozice CTO Oculusu a stal se konzultantem. Podle
<a href="https://arstechnica.com/gaming/2021/10/john-carmack-sounds-a-skeptical-note-over-metas-metaverse-plans/" target="_blank" style="text-decoration:underline;">něj</a> není Zuckerbergův přístup ke stavbě metaversu správný, bude nutné začít odspodu, od technologie.</p><p>John Carmack má proto s VR další plány. Chce v budoucnu rozvinout virtuální realitu tak, aby nebylo nutné nosit VR headset, ale chce se čipem napojit přímo lidem do mozku a vysílat signály, které budou na neuronové úrovni vyvolávat vizuální odezvu. Uživatel tak doslova nebude schopen rozeznat skutečnost od virtuální reality. Jestli vám to zní jako noční můra ze seriálu Black Mirror, nebo naprosto proti přírodě, tak máme stejný názor.<br></p><p>Carmack má podle mě pokroucené chápání lidské mysli, sám o sobě v rozhovoru o VR <a href="https://open.spotify.com/embed-podcast/episode/6kOa4mSuZcIOEPaGmDZf9r" target="_blank" style="text-decoration:underline;">řekl</a>, že je filozofický materialista, tedy někdo, kdo vidí mozek jako stroj, který produkuje vědomí, a tím pádem lze přidat součástky a modulovat ho. Samozřejmě, že celá vize metaversu a VR může vést k snadnější manipulaci lidstva. Facebook (Meta) bude o svých uživatelích vědět už naprosto všechno. Už dnes Facebook nabízí reklamy až děsivě na míru, zdánlivě dřív, než člověka vůbec napadne něco koupit. Bude to dokonalá verze Orwellova dystopického světa 1984? <br></p><p>Tento postup je ale už nezadržitelný. Rok 2022 bude začátkem pro rozvoj metaverse světa. Zuckerberg si představuje, že během 5 let by měla jeho vize být realitou.<br></p><h2>Ethereum 2.0, NFT a NFT gaming</h2><p>K masivnímu rozvoji dojde samozřejmě i u kryptoměn, zejména u Etherea. Nastane u něj totiž konečně přechod na Proof-of-Stake algoritmus a Ethereum se tak stane netěžitelným. Na tomto přechodu se pracuje již roky. Na přelomu prvního a druhého kvartálu 2022 má k "The Merge" (Velkému Sloučení) konečně dojít. Nynější Mainnet se sloučí s beacon chainem - implementační detaily o tomto Sloučení naleznete na
<a href="https://ethereum.org/en/eth2/merge/" target="_blank" style="text-decoration:underline;">oficiálním webu zde</a>. A jen tak na okraj - těžařské farmy používají k těžbě mimo ASIC chipů také nové grafické karty GTX řady 3000. Nejvýdělečnější měnou pro těžbu
<a href="https://2cryptocalc.com/what-to-mine-with-3090" target="_blank" style="text-decoration:underline;">zůstává Ethereum</a>, proto očekávám, že po přechodu na netěžitelnou verzi se začnou tyto karty aspoň částečně vracet do oběhu, až je začnou těžaři prodávat, a jejich nafouknutá cena se konečně vrátí do normálu. Pokud tedy plánujete upgrade svého PC, může být pro dobro vaší peněženky pár měsíců počkat.</p><p>Kryptoměny, které stále běží na Proof-of-Work algoritmu, tzn. že jsou těženy a musí pro to být spáleno značné množství elektrické energie, jsou neustále předmětem kritiky environmentálních aktivistů. Ethereum 2.0 má po tomto "Sloučení" využívat o 99% méně
<a href="https://forbes.cz/krypto-green-ethereum-2-0-chce-palit-o-9995-procent-mene-energie-nez-doposud/" target="_blank" style="text-decoration:underline;">elektrické energie</a>, takže snad konečně nebudou jeho cenu negativně ovlivňovat mediální zprávy o globálním oteplování. Realisticky ale potrvá měsíce nebo roky, než si po této změně lidé přestanou asociovat Ethereum (a kryptoměny všeobecně) s environmentální katastrofou a globálním oteplováním. Po "Sloučení" se má též několikanásobně zvýšit rychlost sítě. Momentálně podporuje Ethereum 30 transakcí za sekundu, po přechodu na verzi 2.0 to má být až 100 tisíc za sekundu. Jako příprava na přechod z Proof-of-Work na Proof-of-Stake se od 5. srpna 2021 na Ethereovém blockchainu aktivně "pálí" část Ethereových poplatků. Ty už se zkrátka nepřipisují na účet těžařům, ale spálí se zasláním na tzv. eater adresu, v podstatě černou díru, kterou nikdo nevlastní. Sníží se tak počet nových ETH, které se dostanou do oběhu, a tím začne docházet k deflaci. </p><p>Dalším významným efektem bude podle mého názoru smrt tzv. "Ethereum-killers". Přezdívají si tak měny jako Solana, Cardano, nebo Polkadot. Jejich hlavní výhodou mají být nízké poplatky a rychlejší transakce, než u Etherea. Kvůli extrémní popularitě ETH a zahlcenosti sítě NFT hypem je momentálně průměrný "Layer 1" poplatek za transakci cca 15 dolarů, i když jde o poslání třeba 5 dolarů. Pro řádově nižší poplatky lze použít "<a href="https://l2fees.info/" target="_blank" style="text-decoration:underline;">Layer 2</a>". Zvýšení propustnosti sítě u Ethereum 2.0 by teoreticky mělo tyto poplatky snížit. Hlavním argumentem zmíněných měn je používání Proof-of-Stake, který je šetrný vůči životnímu prostředí. Všechny tyto měny ztratí svoji výhodu po příchodu Ethereum 2.0. Nebudou mít již žádné pádné argumenty, proč by měly být lepší než Ethereum. Osobně je vidím jako arogantního Kaina, který se snaží zabít vznešeného Abela.</p><p>O NFT, DeFi a NFT gamingu jsem psal v
<a href="/Blog/Stranky/NFT.aspx" target="_blank" style="text-decoration:underline;">říjnovém článku</a> a vypadá to, že moje předpověď pádu NFT gamingu se začíná naplňovat. Prvním příkladem je marketingové fiasko 13 let očekávané hry Stalker 2. Její vydavatel GSC na svém twitteru oznámil integraci hry s NFT, kdy bude možné koupit si slot s NPC metahuman postavou, a tím zvěčnit svoji podobu ve hře (jinými slovy naskenovat člověka do hry jako herní postavu za kryptoměnový poplatek). GSC ovšem nečekalo, že toto oznámení způsobí pohromu ve fanouškovské komunitě. Pro statisíce hráčů byl další díl Stalkera jako poslední ostrov naděje na normální klasickou hru bez monetizací v hyperkorektní době a oznámení integrace s NFT tuto naději zničila. Desítky tisíc rozhořčených hráčů přestalo ihned sledovat sociální sítě GSC a zrušilo předobjednávky. Vydavatel si ihned uvědomil svou chybu a druhý den <a href="https://twitter.com/stalker_thegame/status/1471620399997886472" target="_blank" style="text-decoration:underline;">vydal oznámení</a> o zrušení jakékoliv integrace s NFT. Veřejné mínění komunity je zhruba takové, že NFT a kryptoměny jsou zkázou pro životní prostředí. Samozřejmě, že se lidé bojí toho, čemu nerozumí. Jak jsem popisoval výše, změny v kryptoměnovém světě zajistí nízkou spotřebu energie. A NFT je revoluční koncept, který je ale bohužel využíván pro podvody, a proto má negativní reputaci.</p><p>Dalším příkladem je
<a href="https://www.pcgamesn.com/ghost-recon-breakpoint/ubisoft-quartz-nft-games-platform" target="_blank" style="text-decoration:underline;">Ubisoft Quartz</a>, NFT platforma Ubisoftu. Ihned po oznámení obdržel jejich trailer na youtube 38 000 "disliků" - to bylo ovšem předtím, než Google začal cenzurovat počet "disliků" na YouTube, aby
<span style="text-decoration:underline;">"</span><a href="https://blog.youtube/news-and-events/update-to-youtube/" target="_blank" style="text-decoration:underline;">vytvořil inkluzivní a bezpečné prostředí, které ochrání menší tvůrce před nenávistí</a>". Každopádně, veřejný konsenzus je takový, že NFT v gamingu jen zhorší situaci okolo mikrotransakcí a Pay-To-Win her.</p><h2>2022</h2><p>Rok 2022 bude tedy rokem decentralizace a boje za svobodu slova. I když metaverse zní jako noční můra, měl by být implementován na decentralizovaném systému, nebo minimálně používat kryptoměny ve svém ekosystému. NFT scamy doufejme ustanou a mainstream média začnou psát o NFT v pozitivním světle. Ethereum 2.0 přinese naprostou změnu ve světě kryptoměn. Web 3.0 bude hlavním tahounem tohoto rozvoje. Kdo se rychle adaptuje a začne se učit psát pro něj aplikace a využívat jeho decentralizovanost, bude u zrodu nové éry internetu, kde bude teoreticky nemožné kohokoliv cenzurovat, technologické korporace nebudou mocnější než celé státy, politická korektnost bude udušena, odpovědnost jednotlivce bude rozvíjena, a kolektivní vědomí lidstva se posune daleko od nebezpečí totality.<br></p><p>
<i>Jan Jileček</i></p><p>
<br>
</p> | | odborné;#hobby;#vzdělávání;# | | |