..:: Ondra[sej] :: Projekty :: Tetris ::..
Ondra[sej] Home

[Tady bude nějaké moudro]

Tetris

Tetris rozšířený o "zlou" umělou inteligenci vyhledávající v aktuální situaci nejhorší možné kostky. Napsaný jako zkouškový projekt ke zkoušce z Programování pro Windows I.

Tetris :: Úvod

Screenshot ze hry Ke složení zkoušky z Programování pro Windows I bylo doporučeno přinést vlastní program, napsaný ve Win32 API, případně v .NET. Celá zkouška se pak týkala tohoto programu, jeho vnitřní struktury a způsobu fungování.

V té době jsem žádným příhodným (dostatečně jednoduchýmú programem psaným čistě ve Win32 API nedisponoval, na druhou stranu jsem si chtěl programování pro Win32 API procvičit. Částečně mě také inspirovala rychlosoutěž Českých her zaměřená na téma Tetris.

Další věcí, která mě při tvorbě inspirovala, byl pocit dobře známý všem hráčům tetrisu - totiž ten, že počítač jim určitě ty kostičky vybírá naschvál tak, aby prohráli. Ale mýlí se - něco takového by slušného autora hry ani nenapadlo.

Pokud takový pocit ale budete mít při hraní tohoto Tetrisu, budete ho mít zcela správně. Já totiž slušný herní programátor nejsem :-).

Tetris :: Řešení

Protože se jedná hlavně o ukázku práce s Win32 API a proof of concept pro tetrisovou "umělou inteligenci", je uživatelské rozhraní poměrně strohé.

Pro zobrazení stavu hry a následující kostičky je v programu definována vlastní třída okna, která se mj. stará o správnou reakci na stisknutí ovládacích kláves.

Při hledání nejhoršího umístění kostky se používá jednoduché prohledávání a je vybírána kostka s nejhorším ohodnocením nejlepšího možného umístění. Obrácením tohoto principu by mělo být možné vytvořit automatického hráče tetrisu. V první verzi, ve které nebylo napovídání příští kostičky (a tedy bylo možné vybírat nejhorší kostku vždy pro aktuální situaci) nebylo výjimkou skóre rovné dvěma až třem. Po přidání nápovědy bylo nutné výběr nejhorší "odložit" o krok a hráč tím navíc získal jako velkou výhodu možnost plánovat svůj postup. Tím algoritmus výběru sice ztratil na účinnosti, ale i tak nad hráčem s velkou převahou vítězí.

Tetris :: Závěr

Výsledky zcela splnily očekávání - zkoušku za pomoci tohoto programu se mi složit podařilo. Přesto jsem se v jednu chvili trochu bál - když přenášející pronesl svoje smutné "Takže ta hra podvádí? To já nemám rád...".

Nejlepší závěr si ale můžete udělat sami - stáhněte si kompilovanou verzi a zkuste kolik bodů dokážete uhrát.

Tetris :: Download

Komilovaná verze (zip - 28kB)