Programátorská dokumentace
Algoritmy
Nejzajímavější (nejdůležitější) algoritmus je hlavni smyčka programu, která umožňuje stejnou rychlost běhu programu nezávisle na rychlosti zobrazování. K tomu je zapotřebí pouze funkce na zjištění počtu tiků systémových hodin (v tomto případě je to počet ms od začátku běhu programu). Je v souboru game.cpp a zjednodušeně vypadá takto:
void PlayGame() { Uint32 next_time; next_time = SDL_GetTicks(); while (!game_over) { while ( next_time < SDL_GetTicks() ) { UpdateGameLogic(); next_time+=TICK_INTERVAL; } UpdateGameDisplay(); } }
Druhý algoritmus, který zde zmíním, je na počítání srážek jednotlivých lodí a střel. Každá loď (střela) je v podstatě jen obdélník, a já pouze kontroluji, zda se tyto obdélníky nepřekrývají. Druhá možnost, která mě napadla, je že by hrací plocha byla rozdělená na přiměřeně velká políčka, kam by lodě ukládaly svou pozici a jednoduše by si mohly zkontrolovat, zda už to které políčko není obsazené a zda tedy nedošlo ke srážce. Ale vzhledem k tomu, že lodí a střel, které jsou v jednom okamžiku na obrazovce není mnoho, jsem zvolil první možnost, která je přesnější, ale zato více časově náročná.
Známé chyby a nedodělávky
Zaprvé bych chtěl v tomto odstavci zmínit problém se zvukem. Ten totiž z mě neznámých důvodů nefunguje pod Linuxem (ve Windows funguje). Ale linuxáři zase o tolik nepřišli, protože na zvucích je ještě dost co na práci.
Pak se tady musí zmínit to, že není dodělána 3. část hry, kdy jsou všechny levely stejné a 3. loď je vlastnostmi a zbraněmi stejná, jako 2. To tak trochu souvisí s tím, že jsem zatím nesehnal nikoho, kdo by vytvořil grafiku hlavně lodí, ale i ostatních věcí.
Na druhou stranu si myslím, že se mi vcelku povedlo menu, kde už zbývá dodělat jen
pár věcí z nastavení (hlavně nastavení vlastního ovládání).