18. července 2012 12:46

Jak jsem programoval Viczle

A je tu druhý prázdninový článek. Vím, že jsem sliboval psát opět dva články týdně, ale bohužel na to nebyl čas. První týden prázdnin jsem byl mimo dosah internetu a začátkem druhého jsme si objednali s přáteli server na MineCraft ... no tak prostě hrajeme a na nic jiného není čas. Ovšem já se snažím každý den trochu času nalézt, protože jak víte z minulého článku, momentálně programuji za peníze.

Takže k dnešnímu tématu. Dnes napíši o tom, jak jsem programoval moji poslední hru/program Viczle (čti Vičle). Ačkoliv je mám na webu zařazené mezi hry, tak si nejsem jistý, jestli je řadit spíš mezi programy nebo hry - má to prvky programu i hry.

Nápad

Nápad na vytvoření programu na puzzle jsem nedostal já, ale můj kamarád Lukáš Hörmann, kterého můžete znát jako grafika Lojzika a Elfánie.

Bylo to v době, když jsem ještě programoval Lojzika. Po doprogramování Lojzika jsem chtěl udělat novou verzi svého webu, tento program na puzzle, novou verzi programu Známky a pak začít programovat Elfánii v2.0. Tento plán mi bohužel vyšel pouze s novou verzí webu, protože pak jsem začal programovat komerčně.

Program na puzzle jsem tedy odložil na neurčito.

Hned na začátku prázdnin jsem dostal šanci. V den vysvědčení při cestě domů jsem se dozvěděl, že pojedu na týdenní rekreaci. A odjezd? Hned druhý den dopoledne.

V chatce jsem nechytil žádnou wifinu, na kterou by se dalo připojit. Internet jsem chytil jedině, když jsem šel na 50 metrů vzdálenou lavičku. Někdy se mi dokonce i povedlo po 10 minutách načíst stránku ... Takže jsem se na to vykašlal a ve volném čase jsem se rozhodl programovat něco svého a offline. No a tak na řadu přišly puzzle.

Viczle

Název jsem vymyslel doma, když jsem měl ještě přístup k internetu. Nechtěl jsem opět použít obecný název, jako jsem to dělal doposud ... A tak jsem při vymýšlení spolupracoval se strejdou Googlem. Ovšem všechna jména, která jsem vymyslel, byla už použitá. Nakonec jsem spojil slova Víčko a puzzle a vznikl název Viczle. Opět jsem použil krátké i jako v případě Lojzika, asi se mi líbí ...

Programování

Ano, v čem jiném jsem je mohl programovat, než v C# + WPF. V HTML by to ani nešlo, tedy alespoň ne ve verzi 4. Pátou verzi zatím neumím a učit se jí zatím nehodlám, protože se stále setkávám s lidmi, kteří dokáží používat staré prohlížeče, hlavně staré verze IE, který je hrozný i ve verzi 9. Bohužel ...

A proč by to tedy nešlo? Puzzle jsou založeny na křivkách, což ve WPF není problém, jelikož je od základu vektorové. Díky dřívějším zkušenostem zvládám zapisovat data křivek přímo v kódu, takže nebyl problém s využitím náhody generovat náhodně posunuté a zakřivené okraje puzzlí.

Už od začátku jsem plánoval udělat puzzle univerzální - tedy že si můžete vytvořit svá puzzle ze svých obrázků. U některých počítačových puzzlí to totiž bývá tak, že v nich je zabudováno několik základních obrázků a to je vše.

Svoje programování jsem tedy začal hezky od začátků - programováním generátoru puzzle.

Když jsem měl generátor hotový, pustil jsem se do hry jako takové. Půl dne jsem strávil nad tím, než jsem naprogramoval poskládání dílků z částí okrajů (otočení, posunutí, spojení), ale na konec se to povedlo a dál šlo vše jako po másle.

Vlastně jsem ještě měl jeden problém - při otáčení dílků. Naprogramovat otočení jednoho dílku nebyl problém, ale horší bylo otáčení více dílků najednou, protože jsem musel pro každý dílek vypočítat jeho novou pozici. Nakonec jsem si vzal papír a tužku a pomocí rovnic jsem si odvodil vzorečky, které už konečně fungovaly.

Poslední den

Když jsem Viczle doprogramoval, zbyl mi ještě jeden den. Chtěl jsem ho využít k napsání článku do blogu s názvem Offline článek, ale nevyšlo to ... protože jsem dostal nové nápady do Viczlí.

V knížce o C# jsem se dočetl a zapsání binárního souboru do XML. Soubor s uloženým puzzle je totiž ve formátu XML a do této doby se do něj zapisovala pouze adresa na obrázek, což znemožňovalo kopírování souboru do jiných počítačů. A tak jsem naprogramoval ukládání celého obrázku do souboru .viczle. Sice má nyní soubor větší velikost, ale je přenositelný.

Další věcí bylo spouštění souboru .viczle. K tomuto jsem potřeboval internet, aby mi s tím pomohl, takže jsem se časně ráno šel trápit na lavičku. Nakonec se to ale povedlo.

Pak jsem naprogramoval do generátoru věcičku, která je známá z Windows Forms (předchůdce WPF) jako NumericUpDown - textové pole, vedle kterého jsou šipčičky, kterými si navolíte požadované číslo. Ve WPF nic takového bohužel není, tak jsem si to musel naprogramovat sám.

Poslední blbůstku, kterou jsem doprogramovával už doma, bylo přetahování souboru metodou drag and drop do textového pole, kde si vybíráte obrázek pro puzzle. Toto mi poradil SuperMartas.

Testování

Můj hlavní tester - SuperMartas - nyní netestoval Viczle během vývoje (jak jsem psal, byl jsem offline), ale dostal až po návratu de facto hotový program a na testování měl pouze chvíli. I přesto po zveřejnění dne 7. července nebyla nalezena žádná chyba.

Instalátor

Den poté jsme se se Supermartasem bavili a řekl mi, že by se pro Viczle hodil instalátor. Hlavně pro registraci typů souborů .viczle a .viczlesav. Mě se nechtělo nic hledat - dříve jsem už hledal, ale neúspěšně. Tak nalezl program na Stahuj.cz, který umí registraci typů a instalátor lze jednodušše naklikat. Ovšem verze programu na Stahuj byla stará - nepodporovala Windows 7 ani .NET Framework 4. Tak jsem na internetu našel nejnovější verzi a pustil se do nastavování. Měl jsem ještě problém s diakritikou, protože jazykový soubor s češtinou byl uložený ve špatném kódování. Toto jsem opravil a vygeneroval jsem instalátor. Na webu máte k dispozici ke stažení verzi s instalátorem, i bez něj.


Přeji hodně zábavy s Viczle. Další článek v blogu bude snad již brzy.

Hodnocení

Celkové hodnocení
6 hlasů
Vaše hodnocení
Vyberte počet hvězdiček

Komentáře

Jméno:
Předmět:
Komentář:
  :):-|:P:D;):(8)[evil][arrow][idea][?][!]
Kontrola:

22.7.2012 17:17:19 Re: MC

Ano, na Fakahedě. IP nedám, je to jen pro uzavřenou společnost. Vím, že si to můžu udělat i doma, ale to web taky.

Víčko
3
0

22.7.2012 17:07:10 MC

A server na Minecraft máš cez Fakahedu ? Inak, mohol si si ho spraviť aj sám doma cez Hamachi ;-) IP asi neposkytneš čo ?

Well
2
1

19.7.2012 11:51:50 Odpovědi

benko:
Já jsem zapřísáhlej nehráč, ale ne protože mě to nebaví, ale protože jakmile nějakou hru zkusím, hraju ji pořád ... To se stalo s MineCraftem.
MineCraft mě ale inspiruje i jako programátora, a to tím, jak je primitivní. Je na něm dobře vidět, že i malý věci můžou dokázat hodně.

artorie:
Zatím jen weby.

Víčko
2
1

19.7.2012 11:39:11 co programuješ

A co programuješ za peníze? jen webové stránky, nebo i nativní nebo síťové aplikace.

artorie
2
1

18.7.2012 22:27:02 Ach, tie hry...

MineCraft, MineCraft, MineCraft. Čo s ním len vy všetci máte :)

benko
1
3
© 2011 - 2019 SuperMartas a Tomáš Hypeš