IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze – Tvoříme hru had v jazyce C - 2.Díl

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
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

Odpovědět
29.10.2012 11:56
New kid back on the block with a R.I.P
Avatar
Зайчик
Člen
Avatar
Odpovídá 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 :)

Odpovědět
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ť.

Editováno 26.6.2013 11:01
Odpovědět
26.6.2013 10:59
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Зайчик
Člen
Avatar
Odpovídá 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.

Odpovědět
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);
}

 
Odpovědět
16.12.2014 11:20
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 5 zpráv z 5.