Avatar
Jozef
Člen
Avatar
Jozef:

Zdravím,
vytvoril som si v C-éčku takú jednoduchú hru, na spôsob stolných hier ako je človeče atď., kde sa akoby hádže kockami a hráč sa posúva po hracej ploche o súčet tých kociek. Na niektorých miestach sa nachádza pozícia s otáznikom. Keď na ňu hráč stúpi, tak sa posúva buď dopredu alebo dozadu, podľa jednej z náhodne vygenerovaných úloh(zatiaľ ich je iba 6).

Kedže je to môj prvý podobný pokus, bol by som rád za vaše názory, čo je dobré, čo zlé, poprípade nejaké rady.

Zdrojové kódy za chvíľu pridám na stiahnutie :)
Vopred ďakujem :)

Editováno 7.4.2015 11:00
Odpovědět  +1 7.4.2015 10:59
I'm not afraid to die on a treadmill
Avatar
Jozef
Člen
Avatar
Jozef:

Odkaz na stiahnutie zip súboru: http://uloz.to/…82Sq/hra-zip

Nahoru Odpovědět 7.4.2015 11:03
I'm not afraid to die on a treadmill
Avatar
Odpovídá na Jozef
Štefan Pružinský:

Bohužiaľ C neovládam, a teda sa necítim dostatočne kvalifikovaný hodnotiť tvoje zdrojáky. Podľa samotnej hry je však vidno, že je na čom stavať. Len tak ďalej:)

Nahoru Odpovědět 7.4.2015 13:18
Najefektívnejším spôsobom debuggingu je modlitba. :)
Avatar
Eldan
Člen
Avatar
Eldan:

Příjde mi to strašně málo interaktivní. Vždyť mi stačí držet enter a hra se tak nějak sama dohraje. Ale jinak je to pěkné :)

Nahoru Odpovědět 7.4.2015 15:13
Unobfuscated executable == free source code
Avatar
David Novák
Tým ITnetwork
Avatar
Odpovídá na Jozef
David Novák:

Jako hra vcelku slušná, ale pár výtek ke kódu:

  1. nedostatečně okomentovaný - komentáře by měly být všude a ne jen u deklarací funkcí v hlavičkovém souboru ;)
  2. názvy funkcí zásadně malýmy písmeny.. VELKÝMI se pojmenovávají makra
  3. některé funkce jsou si velmi podobné a šlo by je napsat do jedné (např. posun_hodnoty)
  4. obsah některých funkcí se vcelku opakuje (viz. jednotlivé casy v posun_hodnotu) a taky by z toho šla udělat funkce (nebo makro) pro zpřehlednění.. Příklad:
if(hrac % 2 != 0){
        vypisULOHY();
        RAM_ZED();
        kostka1 = rand() % 6 + 1;
        kostka2 = rand() % 6 + 1;
        kostka3 = rand() % 6 + 1;
        barva(0);
        gotoxy(38,2);
        printf("%s\n",hrac1);
        kreslikocky(kostka1,kostka2,kostka3);
        vykresli_hracov();
        posun_hodnoty1(kostka1+kostka2+kostka3,hrac1);
        _getch();
        vykresli_hracov();
        tahy1++;
        }
else{
        vypisULOHY();
        RAM_ZED();
        kostka1 = rand() % 6 + 1;
        kostka2 = rand() % 6 + 1;
        kostka3 = rand() % 6 + 1;
        barva(0);
        gotoxy(38,2);
        printf("%s\n",hrac2);
        kreslikocky(kostka1,kostka2,kostka3);
        vykresli_hracov();
        posun_hodnoty2(kostka2+kostka1+kostka3,hrac2);
        _getch();
        vykresli_hracov();
        tahy2++;
}

5. deklarace s definicí na zvláštní řádek..

int kostka1 = 0,kostka2 = 0,kostka3 = 0,tahy1 = 0,tahy2 = 0,hrac = 0;

int kostka1 = 0;
int kostka2 = 0;
int kostka3 = 0;
int tahy1 = 0;
int tahy2 = 0;
int hrac = 0;

6. místo kostka 1-3 by mohlo být dobré použít pole - usnadnilo by to práci s nimi.

7. použití windows.h... to dělá hru spustitelnou pouze na windows.. pokud se tomu nejde vyhnout, tak aspoň použít podmíněny překlad, aby se to dalo přeložit i na jiných systémech.. Pokud chceš dělat aplikace pouze pro windows, tak nemá smysl používat C, jehož hlavní výhodou je multiplatformnost

Jinak chválím použití konstant místo magických čísel ;)

Jo.. a proč while(0<1) a ne while(1)? :D

Nahoru Odpovědět  +2 7.4.2015 18:01
Chyba je mezi klávesnicí a židlí.
Avatar
Jozef
Člen
Avatar
Odpovídá na David Novák
Jozef:

David Novák Vďaka za pripomienky, kód samozrejme upravím :) Máš pravdu že mnoho kódu sa opakuje, zbytočne je to kvôli tomu dlhé, pokúsim sa to teda skrátiť :) Windows.h som použil preto, lebo iný spôsob nepoznám, nikde som na iný spôsob pri učení nenarazil...
A k tomu while... ja vlastne ani neviem :D
Eldan zatiaľ je tam málo úloh a žiadna z nich nepotrebuje od hráča vlastne nič, ale plánujem pridať ďalšie, ktoré budú naozaj úlohy- teda hráč bude musieť niečo spraviť. ;)

Nahoru Odpovědět  +1 7.4.2015 19:56
I'm not afraid to die on a treadmill
Avatar
David Novák
Tým ITnetwork
Avatar
Odpovídá na Jozef
David Novák:

:)
K čemu to windows vlastně používáš? Barvy?
Minimálně bych tam přidal ten podmíněný překlad (google nebo místní fórum - už jsem tu řešení nedávno ukazoval :P ), aby to fungovalo bez těch windowsovských věcí všude.. ;)

A to while.. Zajímavé to je :D
Člověk by si řekl, že porovnání navíc bude snižovat výkon.. Ale mám pocit, že překladač to nahradí za true a hotovo.. protože ví, že to je pravda a nezmění se to ;)

Nahoru Odpovědět 7.4.2015 20:00
Chyba je mezi klávesnicí a židlí.
Avatar
Jozef
Člen
Avatar
Jozef:

Vlastne všetky funkcie v súbore hra.h/.c okrem kreslikocky využívajú časti z knižnice Windows.h

Nahoru Odpovědět 7.4.2015 20:04
I'm not afraid to die on a treadmill
Avatar
Jozef
Člen
Avatar
Jozef:

Tak kód som upravil, pridal som niektoré úlohy, spravil som všeobecnejšie funkcie, teda na posun jedného hráča netreba samostatnú funkciu, je pre oboch rovnaká.
Použitie Windows.h som zatiaľ neriešil.

http://uloz.to/…Pwdj/hra-zip

Nahoru Odpovědět 10.4.2015 22:11
I'm not afraid to die on a treadmill
Avatar
David Novák
Tým ITnetwork
Avatar
Odpovídá na Jozef
David Novák:

Jen tak dál :)

Jestli máš rád výzvy, tak to zkus co nejvíc pročistit a "vyleštit".. A taky řádně okomentovat ;)

A pak můžeš přidávat další funkce a zlepšovat to :)

Nahoru Odpovědět  +1 11.4.2015 1:23
Chyba je mezi klávesnicí a židlí.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 10.