C - vykreslovanie polickovej mapy
C - vykreslovanie polickovej mapy
Ahoj, chcel by som sa opytat ako sa da synchronizovat vstup od uzivatela.
Priklad, program vyzve uzivatela aby zadal cislo a on tam napise nejake pismena alebo sa pomyli, tak mi to zozerie dalsi scanf() alebo gets() a ulozi sa ten omyl.
Priklad, program vyzve uzivatela aby zadal cislo a on tam napise nejake pismena alebo sa pomyli, tak mi to zozerie dalsi scanf() alebo gets() a ulozi sa ten omyl.
-
harrison314
Hardcore addict
- Príspevky: 8217
- Registrovaný: 27 máj 2009, 20:42
- Bydlisko: Bratislava
- Kontaktovať používateľa:
Re: C - synchronizacia vstupu
scanf vracia pocet parametrov, ktore nacitalo , napriklad chces nacitat cislo
Kód: Vybrať všetko
while(scanf("%i",&pocet) != 1)
{
printf("Zadaj tam to cislo poriadne!");
}
Re: C - synchronizacia vstupu
No len ked sa uzivatel pokusi do int vlozit string tak aplikacia zamrzne.
-
harrison314
Hardcore addict
- Príspevky: 8217
- Registrovaný: 27 máj 2009, 20:42
- Bydlisko: Bratislava
- Kontaktovať používateľa:
Re: C - synchronizacia vstupu
to sa mi nejak nezda, hod sem celi kod
Re: C - synchronizacia vstupu
Prepac, to zamrznutie bola zaciatocnicka chyba, len je tu iny problem.
Tu je cela funkcia
Ked program zisti ze uzivatel zadal iny charakter nez cisla 1,2 alebo 3. Tak zacne dookola pisat Plese enter number 1,2 or 3. No podla toho ako som to napisal by to malo dat moznost znovu zadat cislo...
Tu je cela funkcia
Kód: Vybrať všetko
void Menu()
{
int choice = 0;
printf(" 1. Start game \n 2. Credits \n 3. Exit \n");
do{
scanf(" %d", &choice);
if(choice != 1 && choice != 2 && choice != 3)
{
printf("Plese enter number 1,2 or 3. \n");
}
if(choice == 2)
{
credits();
}
if(choice == 3)
{
exit(0);
}
}while(choice == 2 || (choice != 1 && choice != 2 && choice != 3));
return;
}-
harrison314
Hardcore addict
- Príspevky: 8217
- Registrovaný: 27 máj 2009, 20:42
- Bydlisko: Bratislava
- Kontaktovať používateľa:
Re: C - synchronizacia vstupu
Skus toto, momentalne nemam po ruke ziaden C kompilator, tak tam mozno budu syntakticke cyby.
Kód: Vybrať všetko
void Menu()
{
for(;;)
{
printf(" 1. Start game \n 2. Credits \n 3. Exit \n");
char choice='\0';
while(choice<'1' || choice>'3') scanf("%c",&choice);
if(choice=='1') return;
if(choice=='2') credits();
if(choice=='3') exit(0);
}
}
Re: C - synchronizacia vstupu
Toto funguje presne tak ako som to planoval ja, vdaka.
Len este sa chcem spytat na jednu vec lebo nerad mam v kode nieco comu nechapem.
Co to znamena ked si char choice deklaroval ako '\0' ?
Len este sa chcem spytat na jednu vec lebo nerad mam v kode nieco comu nechapem.
Co to znamena ked si char choice deklaroval ako '\0' ?
-
harrison314
Hardcore addict
- Príspevky: 8217
- Registrovaný: 27 máj 2009, 20:42
- Bydlisko: Bratislava
- Kontaktovať používateľa:
Re: C - synchronizacia vstupu
Aby v nej nebolo '1','2', alebo '3', aj keby ju deklarujem ako 'z' tak je to okJacobs322 napísal:Co to znamena ked si char choice deklaroval ako '\0' ?
-
Fabo
Hardcore addict
- Príspevky: 6810
- Registrovaný: 16 nov 2007, 17:23
- Bydlisko: 's Chravenhache
- Kontaktovať používateľa:
Re: C - synchronizacia vstupu
Null termination = prazdny char array. V podstate to iste ako "" ale explicitne.
Re: C - synchronizacia vstupu
VdakaFabo napísal:Null termination = prazdny char array. V podstate to iste ako "" ale explicitne.
//autoeditácia príspevku (01 Sep 2014, 20:09)
Ahoj, programujem v C taku da sa povedat "hru", ucim sa na tom atd. a potreboval som nejako spravit mapku.
Sklada sa z 50x50 policiek a potrebujem nejako kazde kolo (ma to byt tahove) zistit na akom policku hrac je a podla toho sa hra nejako zachova. No cez if statement to nejde pretoze takych policok je tam asi 400 - 600. Takze sa chcem spytat ci by ste mi neporadili nejaky iny sposob ako to vykreslit a zaroven udrziavat hru aktualizovanu ?
-
harrison314
Hardcore addict
- Príspevky: 8217
- Registrovaný: 27 máj 2009, 20:42
- Bydlisko: Bratislava
- Kontaktovať používateľa:
Re: C - vykreslovanie polickovej mapy
Vies pouzivat v C datove struktury (struct) a viacrozmerne polia?
Na toto sa hodia.
tych 50x50 pociok, budes mat dvojrozmerne pole dacoho, a pozicia hraca bude urcena dvomi ntami ako sudranice, alebo priamo v tej strukture, to zalezi co to byt a ako to budes riesit.
Na toto sa hodia.
tych 50x50 pociok, budes mat dvojrozmerne pole dacoho, a pozicia hraca bude urcena dvomi ntami ako sudranice, alebo priamo v tej strukture, to zalezi co to byt a ako to budes riesit.
Re: C - vykreslovanie polickovej mapy
No, s datovymi strukturami som este nerobil, viacrozmerne polia ano.
Momentalne to mam tak ze mam urcene x,y ako polohu hraca v suradniciach a podla toho ako sa hrac pohne (S,V,J,Z) tak sa menia suradnice ale nepochopil som ako myslis ze to mam urobit cez d. strukturu a viacrozmerne pole ?
Momentalne to mam tak ze mam urcene x,y ako polohu hraca v suradniciach a podla toho ako sa hrac pohne (S,V,J,Z) tak sa menia suradnice ale nepochopil som ako myslis ze to mam urobit cez d. strukturu a viacrozmerne pole ?
-
harrison314
Hardcore addict
- Príspevky: 8217
- Registrovaný: 27 máj 2009, 20:42
- Bydlisko: Bratislava
- Kontaktovať používateľa:
Re: C - vykreslovanie polickovej mapy
Tak sa nauc robit vlastne datove strukturi, v programovani je to velmi dolezite. Napr nebudes mat dve premnne x a y ale budes mat strukturu Point, co ma x a y.
U teba spravne riesnie zalezi od celkovej funkcionality, dal si k tomu malo info (aspon sa mi zda, aj ked dnes mi to nemysli).
U teba spravne riesnie zalezi od celkovej funkcionality, dal si k tomu malo info (aspon sa mi zda, aj ked dnes mi to nemysli).
Re: C - vykreslovanie polickovej mapy
No vlastne predstav si mirezku 50x50 policok. Hrac sa pohybuje smermi hore, dolu, doprava a dolava. Su tam rozne oblasti ako pust, lesy a tak dalej na kazdom policku moze byt hocico. A hra musi zistit na ktorom policku si takze sa to vlastne musi udrziavat aktualizovane sposobom if((x == ? && y == ?) || (x == ? && y == ?) ) a takto je tam tych argumentov neskutocne vela a program vzdy zacne blbnut ked sa spusti tato funkcia. Tak potrebujem vymisliet nejaky sposob ktory by nebol tak narocny a hra by stale vedela kde hrac je/ na akom type policka sa nachadza.
Re: C - vykreslovanie polickovej mapy
mapa bude 2 rozmerné pole, ktoré bude mať v sebe symboly, napr. pre stron bude 'S', pre volné políčko napr '.'
a keď hráč stlačí šípku, tak predtým len skontroluj, či je políčko voľné atd
štruktúra hráča bude obsahovať x, y, poprípade iné údaje.
a keď hráč stlačí šípku, tak predtým len skontroluj, či je políčko voľné atd
štruktúra hráča bude obsahovať x, y, poprípade iné údaje.