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í).