[C#] FootSimulation

Složitě jednoduchý program šedých barev bez jakékoliv grafiky, barevnosti a vnější krásy – příště zcela jistě napravím. Ovšem ta vnitřní krása, ta snad stojí za to 🙂

Zdravím všechny krevety 🙂

Dnes jsem dodělal program v MVS 2010, na kterým jsem pracoval dva dny. Hodilo se mi to k maturitě, kterou mám mimochodem za 14 dní, protože u matury z ICT je třeba znalost alespoň základů C#.

O co jde?
Jednoduše řečeno: je to program, který simuluje turnaj, mistrovství světa ve fotbale o 16 týmech.
Pro začátek generování turnaje stačí stisknout tlačítko „Generate“, v záložce Groups, kde mj. najdete i statistiky turnaje.

Jak program funguje?
Obsahuje menší databázi 16 týmů a jejich hráčů (brankář, obránce a 2 útočníci). Každý z hráčů má svůj „total skill index“ (dále TSI), který je znázorněn číslem 1-10 (obr. 1). Těchto 16 týmů jsou rozřazeny do čtyř skupin po čtyrech (jako v klasickém turnaji). Hraje se systém každý s každým v rámci skupiny. Je tedy nasimulovaný zápas, přičemž se bere v potaz celková obrana týmů a celkový útok týmů (obr. 1), které vypočítáme jednoduchým vzorcem. Díky rozdílu těchto parametrů je vypočítaný počet vstřelených branek každého týmu, přičemž hraje velkou roli i náhoda. Následně se vypíšou časy a střelci branek, kdy také má větší šanci vstřelit gól hráč s lepším TSI. První dva z každé tabulky postoupí do čtvrtfinále, vítězové pokračují atd. V těchto vyřazovacích zápasech není možná remíza. Jestliže je remíza po základní hrací době, hraje se prodloužení (2*15 min), šance na vstřelení jsou stále stejné. Jestliže ani potom se nerozhodne, následuje penaltový rozstřel, kde jsou šance 1:1. Gól se připočítá náhodnému hráči, vzhledem k TSI. A vítěz může pokračovat. 🙂

Statistiky
Během turnaje se započítávají samosebou všechny góly každému hráči, a tak můžu nakonec vypsat nejlepších 24 hráčů. Totéž platí i u gólmanů, těch vypíšu jen těch 8, co se dostali do čtvrtfinále, aby měli stejný počet zápasů.

Mimochodem, jména hráčů jsem vymýšlel asi v 9 letech, kdy jsem dělal něco podobného s papírem a s kostkou 😀

Funkčnost
Opravdu dle programu platí, že hráči s největším TSI skórují nejčastěji, samozřejmě se tam i připlete někdo slabší, protože random je opravdu náhoda 🙂 Týmy s nejlepší obranou inkasují nejméně a týmy se solidním útokem zase hodně skórují +- náhoda. Takže z programu mám dobrý pocit, protože splnil, co jsem od něj očekával. 🙂

Budoucnost?
Časem bych chtěl udělat totéž třeba s ligou (2x každý s každým), to by mohlo být zajímavější.. ale až po maturitě..

Tvorba
Opravdu ze začátku jsem to bral jako prázdný projekt, kde zkouším různé věci ohledně C#, dělal jsem tedy hlavně s DataTable. Doma jsem při úklidu poličky snad i s pavučinami našel moje staré poznámky, jak jsem jako malý dělal tu statistiku MS s hráči. Spojil jsem si jedna a jedna do hromady a se vzpomínkami na dávnou minulost jsem splácal tento program, který mi celkem udělal radost. A hlavně jsem se naučil zas něco nového ohledně C# 🙂

Download: FootSimulation.exe (88kB)

Obrázky:
fs_1  fs_2 fs_3