IT rekvalifikácia. Seniorní programátori zarábajú až 6 000 €/mesiac a rekvalifikácia je prvým krokom. Zisti, ako na to!

Diskusia – Tvoríme hru had v jazyku C - 2.Diel

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
Avatar
David Hartinger
Vlastník
Avatar
David Hartinger:29.10.2012 11:56

Ahoj, tutoriál se ti docela povedl, máš tu obrázky, zdrojáky, v kódu nějaké komentáře, používáš struktury a tak :)

Vytkl bych snad jen slučování hlaviček a těl metod do souborů .h a těch pár globálních proměnných, i když v céčku to neberu jako tak závažnou chybu a také zmiňuješ, že by tam být neměly.

Jsem rád, že jsi udělal délku hada dynamicky, většinou jsem to vídal pomocí pole, což nevadí, ale takhle se člověk více naučí. Vážím si toho, že jsem tě odnaučil používat nekonečný cyklys a dokonce tu mám i speciální věnování :D

Odpovedať
29.10.2012 11:56
New kid back on the block with a R.I.P
Avatar
Зайчик
Člen
Avatar
Odpovedá na David Hartinger
Зайчик:29.10.2012 15:29

Tak to jsem rád že se ti libí :) jojo já to musel upravit protože by si mě za ten cyklus sežral zaživa už :D každopádně ještě chci doplnit že to bude funkční jen pro platformu windows kuli knihovně windows :) takže linuxáci mají smůlu nebo až se k tomu dostanu udělám hada i pro linux :)

Odpovedať
29.10.2012 15:29
Коммунизм для нашего будущего!
Avatar
Libor Šimo (libcosenior):26.6.2013 10:59

Зайчик, мне очень нравитця твойе дело.
Mám však jednu pripomienku.
Vždy keď mi kompilátor vyhodí nejaký varning, nie som spokojný s programom.
Tu mi vyhodil hneď 3.

had.h|43|warning: data definition has no type or storage class|
had.h|43|warning: type defaults to 'int' in declaration of 'konecprosdraca'|
had.h|266|warning: implicit declaration of function 'main'|

Myslím, že v tutoriáloch by malo byť všetko bezchybné, tak by si to mal opraviť. ;)
Stačí deklarovať konecprosdraca ako premennú typu int a riadok 266 zmazať.

Editované 26.6.2013 11:01
Odpovedať
26.6.2013 10:59
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Зайчик
Člen
Avatar
Odpovedá na Libor Šimo (libcosenior)
Зайчик:26.6.2013 12:04

Celý had je špatně navržený, .h soubory používám úplně jinak než se mají atd atd je toho spousta.

K C se vracet nebudu... ten kdo se dostal až k psaní hada tak by měl vědět jak si to opravit, že třeba do .h souborů se nepíšou definice funkcí.

Ale je tu spousta hadů co jsou napsané na styl "hlavně, že to funguje" ;) pokud to chceš opravit tak prosím pak se můj příspěvek smaže.

Odpovedať
26.6.2013 12:04
Коммунизм для нашего будущего!
Avatar
filip.proch
Člen
Avatar
filip.proch:16.12.2014 11:20

Zdarvim, teď sem si dělal na otestování pracování s MCU hada, a k čemu je dobré uchovávat pozici hada, když už máme definovaný pole obrazovky? Stačí uchovávat pozici a poslední pozici hada a pak pouze do mapy ukládat směr, který se had vydal v daném bodě. Jestli to je blbý řešení, tak se nechám opravit, ale přijde mi to vhodnější, než zde uvedené. Pokud se narazí na myš, tak se pouze přičte nejvyšší směr a mělo by to stačit. Funguje mi to správně. To že ten kód je naprasácky udělanej, by nemělo mít na řešení vliv, dělal sem to v rychlosti s tím, že to zítra smažu Zde je kód:

if (init == false) {
Lcd_Ini();
snakeScreen[star­t.x][start.y] = direct;
//end = start;
Draw_SnakePoin­t(start,BORDER_SNA­KE,FILL_SNAKE);
Draw_SnakePoin­t(mouse,BORDER_MO­USE,FILL_MOUSE);
for (i = 0; i < snakeScreenX; i++){
for (j = 0; j < snakeScreenY; j++){
snakeScreen[i][j] = 0;
}
}
for(i=0;i<BOR­DER;i++){
DrawRectangle(i, i, WIDTH-i-i, HEIGHT-i-i, YELLOW);
}
srand(time(NULL));
}

if(touch==1){
switch (tlacitko)
{
case 2:
direct++;
break;
case 3:
direct--;
break;
}
if(direct>Down)
direct=Right;
else if(direct<Right)
direct=Down;
//smazePunti

if (initEnd == 1){
if (snakeScreen[en­d.x][end.y] <= Down)
Draw_SnakePoin­t(end, 0x0, 0x0);
switch (snakeScreen[en­d.x][end.y]){
case Right:
snakeScreen[en­d.x][end.y] = 0;
end.x++;
break;
case Up:
snakeScreen[en­d.x][end.y] = 0;
end.y--;
break;
case Left:
snakeScreen[en­d.x][end.y] = 0;
end.x--;
break;
case Down:
snakeScreen[en­d.x][end.y] = 0;
end.y++;
break;
default:
snakeScreen[en­d.x][end.y] -= 4;
break;
}
}
if (initEnd == 0){
end = start;
initEnd = 1;
}
switch (direct){
case Right:
snakeScreen[star­t.x][start.y] += Right;
start.x++;
break;
case Up:
snakeScreen[star­t.x][start.y] += Up;
start.y--;
break;
case Left:
snakeScreen[star­t.x][start.y] += Left;
start.x--;
break;
case Down:
snakeScreen[star­t.x][start.y] += Down;
start.y++;
break;
}
if(snakeScreen[star­t.x][start.y]!=0){
while(1);
}
if(start.x==mouse.x && start.y==mouse.y){
snakeScreen[star­t.x][start.y]+=Dow­n;
do{
mouse.x=rand()%sna­keScreenX;
mouse.y=rand()%sna­keScreenY;
}while(snakeS­creen[mouse.x][mou­se.y]!=0);
Draw_SnakePoin­t(mouse,BORDER_MO­USE,FILL_MOUSE);
}
Draw_SnakePoin­t(start,BORDER_SNA­KE,FILL_SNAKE);
}

 
Odpovedať
16.12.2014 11:20
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zatiaľ nikto nevložil komentár - buď prvý!