Petr (software)

programovací jazyk

Petr je programovací nástroj pro Windows z rožnovské firmy Gemtree Software. Jeho základní charakteristikou je grafické zobrazení programu pomocí ikon uspořádaných do stromové struktury. Program je vytvářen umisťováním programových prvků (ve formě ikon) do editačního pole. Smysluplnost sestavení prvků je ověřována již během editace a proto není potřeba žádná dodatečná syntaktická kontrola programu. Většina prvků má implicitní chování zaměřené na nejčastější použití a obcházející možné chybové stavy tak, aby bylo možné program sestavit s minimem prvků. Proto je Petr vhodný především pro začátečníky, nevyžaduje žádné předběžné znalosti a zkušenosti. Velkou předností Petra je, že je zcela freeware.

Historie

editovat
 
Programovací nástroj Petr pro Windows s načteným vzorovým programem "Bludiště".

Programovací nástroj Petr byl poprvé uveden v roce 1999 ke Dni Dětí, pod verzí 1.00. Autor Ing. Miroslav Němeček jím navázal na DOS verzi Petra, kterou vytvořil v roce 1995 pro svého syna, a na programovací nástroj Baltík, jehož Windows verzi vytvořil v Delphi v roce

1996 pro SGP Systems.[1] První předverze Petra byly programovány ve VC++ 6.00 s využitím knihoven MFC, u verze 1.00 byly již knihovny MFC odstraněny a bylo využíváno pouze základní Windows API rozhraní. Stejně tak byly odstraněny i základní C runtime knihovny.

V roce 2000 byla v Petrovi spolu s verzí 1.10 zavedena multijazyčná podpora, umožňující přepínání jak editačního prostředí, tak hotových programů mezi různými jazyky. Počáteční verze podporovaly češtinu, slovenštinu, němčinu a angličtinu. Současně byl Petr uveden i na zahraniční trh.

Další významnou změnou bylo v roce 2001 doplnění podpory 3D grafiky, verze 2.00. Po prvních pokusech s Retained knihovnami byl nakonec pro verzi 2.00 zvolen Immediate mód, tedy přímý mód nevyužívající doplňkové 3D knihovny.

Během dalších let svého vývoje Petr nezaznamenal významnější zájem trhu, proto byl jeho další vývoj postupně zastaven. V roce 2011 byla většina funkcí uvolněna k volnému použití ve verzi 2.41 Lite. Program se tak přesunul významněji do oblasti freeware. Ve spolupráci se serverem Islandsoft byl založen komunitní server, umožňující mladým programátorům v Petrovi Lite spolu komunikovat a předávat si zkušenosti. K tomu účelu byla vytvořena i řada tutoriálů, které jsou k dispozici jak na komunitním serveru, tak na autorských stránkách.

Od září 2012 byl Petr zcela uvolněn do oblasti freeware a to jak pro soukromé, tak i komerční použití.

Vybavení

editovat

Petr používá pro 2D grafiku 8bitovou paletu 224 barev: 36 barev po 6 odstínech, černobílou barvu s 12 odstíny, průhlednou barvu a stínovou barvu. Pokud importuje obrázek ve vyšší barevnosti, převede ho s použitím ditheringu. 3D grafika může pracovat v plných True-Color barvách.

Souhrn vybavení
  • políčkové animace využívající animované postavičky Petra a Lucky,
  • řízení toku programu pomocí podmínky, cyklu s opakováním, cyklu s podmínkou a vícestupňového větvení,
  • veškeré číselné operace se provádí s desetinnými čísly, Petr nepoužívá celočíselné datové typy,
  • jednorozměrné seznamy s libovolnými datovými prvky v seznamu,
  • vícejazyčná editace, po změně jazyka se přepnou i veškeré texty ve vytvářeném programu,
  • podpora externích knihoven DLL,
  • podpora paměťových bloků a ukazatelů,
  • konfigurační soubory a přístup ke klíčům systému,
  • bohaté matematické funkce,
  • vstup z klávesnice, dynamické testování kláves, vstup z myši a joysticku,
  • dialogové okenní prvky,
  • textové funkce,
  • 2D grafika (kreslení bodu, čáry, kružnice, obdélníku atd.),
  • funkce pro práci s obrázky (převrácení, otáčení, výřezy, změny barev, maskování),
  • plná podpora 3D grafiky (textury, multitexturing, morfování objektů atd.),
  • sprajty a políčkové mapy,
  • zvuk, hudba, CD, mixer,
  • funkce pro obsluhu data a času,
  • konzolové funkce,
  • souborové a adresářové funkce,
  • komunikace přes COM, DirectPlay a UDP.

Omezení Petra:

  • 8bitová 2D grafika využívající paletu 224 barev, není podporována True-Color grafika,
  • nepodporuje interně texty v Unicode, zpracování textů se provádí 8bitově,
  • nepodporuje objektové programování, program má pouze strukturovanou konstrukci.

Souřadný systém

editovat

Petr používá jednotný souřadný systém jak pro políčkovou grafiku, tak i pro ostatní grafiku. Souřadnice označuje desetinnými čísly, přičemž jednotková vzdálenost odpovídá velikosti jednoho políčka, což je 32 grafických bodů. To umožňuje jednotnou adresaci jak 2D grafiky, tak předmětů na ploše nebo souřadnic sprajtů.

Souřadný systém používá 2 osy, X a Y. Souřadnice X se čísluje zleva doprava, souřadnice Y zdola nahoru (odpovídá akademickému souřadnému systému). Počátek souřadného systému je v levém dolním rohu plochy hlavního okna.

Políčková grafika

editovat

Především začátečníkům je určena políčková grafika. Je založena na skládání předmětů na plochu okna, což jsou obrázky (ikony) o velikosti 32x32 bodů. Předměty se skládají do rastru s roztečí 32 bodů. Souhrn rozložených předmětů se v Petrovi nazývá plocha.

Předměty se na plochu umisťují s využitím animovaných postaviček Petra a Lucky. Pomocí ovládacích prvků programu se zajistí, že postavička přijde na požadované místo a tam položí požadovaný předmět. Zobrazení postavičky lze vypnout, v tom případě se postavička přemisťuje na novou pozici okamžitě a program může jet plnou rychlostí. Tak lze vytvářet rychlé animace i s využitím políčkové grafiky.

Vzhled i chování postaviček lze předefinovat (jedná se o sprajty) a tím změnit vzhled, způsob a rychlost pohybu či počet možných směrů pohybu.

Kromě předmětů může plocha obsahovat ještě číselné hodnoty a sadu přepínačů. Ty jsou též měněny a nastavovány postavičkami.

2D grafika

editovat

Zvláštností Petra je to, že grafiku zobrazuje jako vrstvy překrývající se přes sebe. Základní vrstvou jsou předměty políčkové grafiky. Pod vrstvou předmětů se nachází kreslicí vrstva 2D grafiky. Aby byla vrstva 2D grafiky vidět, musí se políčka nad ní zprůhlednit vybarvením průhlednou barvou. Vzhledem k tomu, že na základní ploše programu jsou standardně opakovaně rozmístěny implicitní předměty "prázdné políčko", stačí jen vymazat obsah tohoto jednoho políčka.

Do vrstvy 2D grafiky lze vykreslovat grafické prvky:

  • bod (s volitelnou velikosti),
  • čára (s volitelnou tloušťkou),
  • obdélník (s volitelnou tloušťkou čáry),
  • vyplněný obdélník,
  • výplň barevné plochy,
  • kružnice (s volitelnou tloušťkou čáry),
  • kruh,
  • 3D koule,
  • trojúhelník,
  • text (volitelná velikost, jméno fontu, efekty),
  • obrázky.

Sprajty

editovat

Sprajt je pohyblivý animovaný 2D prvek. Při vytváření sprajtu je možné nadefinovat libovolný počet směrů pohybu, libovolný počet fází animace a to buď v klidu nebo v pohybu. Petr volí příslušnou skupinu obrázků sprajtu podle toho, kterým směrem se pohybuje a v jaké fázi animace se zrovna nachází. Sprajtu lze měnit rychlost pohybu. Sprajty jsou vybaveny indikátorem života, což je malý ukazatel, který je možné řídit za běhu programu.

Sprajtům lze určovat hladinu k zobrazení. Je to kladné nebo záporné číslo určující, v jaké výšce nad plochou políček se sprajt zobrazí, přesněji prvky s jakou výškovou hladinou překryje. Je-li výšková hladina sprajtu záporná, nachází se pod vrstvou předmětů a je vidět jen jsou-li předměty průhledné.

3D grafika

editovat

Nejbohatším vybavením Petra je 3D grafika. Je podporováno rozhraní OpenGL 1.0/1.1, DirectX 3/5/6/7/8. Petr vybere nejvhodnější rozhraní, nebo je možné rozhraní určovat programově. Zajímavou specialitou je Ramp mód. Využívá softwarové renderování se zjednodušeným osvětlením. Namísto textur jsou objekty jen obarveny nejbližší barvou. Tak lze provozovat 3D grafiku i na starých pomalých počítačích bez hardwarové podpory 3D grafiky.

3D grafika má k dispozici mnoho typů 3D objektů, které lze snadno vytvořit jedním příkazem: stěna, kruh, trojúhelník, krychle, koule, polokoule, válec, kužel, komolý kužel, torus, obecný rotační objekt (zadaný profilem), 2D objekt (billboard, plocha natáčející se neustále k pozorovateli), statický 2D objekt (2 překřížené plochy), terén z výškové mapy nebo z plochy. Je možné též načíst objekt z DirectX souboru nebo textu.

U objektů je možné zapnout vrhání automatického stínu. Stín je realizován pomocí stencil bufferu konstrukcí pláště kolem objektu. Objekty je možné spojovat do stromových struktur. Tak lze snadno zajišťovat transformace a hierarchii objektů. Je též podporována snížená úroveň detailů, morfování objektu, vícestupňové texturové operace, automatické mapování textur, chromový povrch, čočkový odlesk.

Díky výborné optimalizaci algoritmů a celkově rychlému provádění programů je možné ve 3D grafice vytvářet programy na úrovni profesionálních programů a her. To je dobře patrné na programech vytvářených uživateli Petra. V mnoha případech se dostávají na přední místa soutěží.

Dialogy

editovat

Kromě grafiky umí Petr pracovat i s dialogovými okny Windows. V okně umí vytvořit a obsluhovat prvky: tlačítko, ikonové tlačítko, zaškrtávací box, přepínač, rámeček, jezdec, posuvník, editační pole, RichEdit, statický text, ikona, obrázek, indikátor, seznam, seznam s editací, rozbalovací seznam, tabulka, okno. U prvků umožňuje měnit pozici, barvu, písmo, vybranou pozici.

Implementace

editovat

Petr je vytvořen v programovacím nástroji VC++ 6.0. Kvůli minimalizaci velikosti výsledných programů nepoužívá žádné knihovny, ani základní C runtime knihovnu. Používá vlastní alokátor paměti (efektivní přidělování paměti po blocích o velikosti mocniny 2) a vlastní funkce nahrazující runtime knihovnu.

Jedná se o interpretovaný jazyk. Vlastní program je uložen v binárním tvaru v jednom EXE souboru spolu se zavaděčem, který při spuštění program interpretuje. Tím je zajištěno, že jakýkoliv program vytvořený v Petrovi je možné otevřít v editoru a editovat, nebo jej spouštět na jakémkoliv počítači bez nutnosti instalace další podpory. Výjimkou je profesionální verze Petra, ve které je možné program uložit needitovatelně, kdy se odstraní možnost uložený program dodatečně otevřít a upravovat.

Zavaděč programu má 2 základní verze – minimální verzi a plnou. Minimální verze podporuje nejčastěji používané funkce, plná verze i méně časté speciální funkce. Verzi zavaděče zvolí Petr při ukládání programu podle toho, jaké funkce jsou v programu používány. To zajistí v mnoha častých případech zmenšení velikosti programu. Ještě je používána třetí verze zavaděče – nespustitelný program. Slouží pouze k přenosu programů přes internet, aby byla velikost programu minimální. Nespustitelný zavaděč je pouze hlavička EXE programu o velikosti asi 4 KB. Nespustitelný program je nutné nejdříve znovu uložit aby šel spustit.

Po spuštění uloženého programu si zavaděč přeloží program z binárního kódu do pomocných struktur. Každý prvek obsahuje adresu volané funkce a doplňkové parametry. Program se pak interpretuje voláním příslušné funkce pro každý prvek. Tím je zajištěna vysoká rychlost programu, blížící se kompilovaným programům.

Reference

editovat
  1. Archivovaná kopie. sweb.cz [online]. [cit. 2011-09-15]. Dostupné v archivu pořízeném dne 2008-10-14. 

Související články

editovat

Externí odkazy

editovat

Hry vytvořené v Petrovi

editovat