Pomoc C++...:)

Programovacie jazyky, rady, poradňa...
x0_0x
Light Star
Light Star
Príspevky: 210
Registrovaný: 05 mar 2008, 21:18
Bydlisko: 127.0.0.1[localhost]
Kontaktovať používateľa:

Pomoc C++...:)

Príspevok od používateľa x0_0x »

prosim vas nemohli by ste mi vysvetlit nasledjuci kod?

Kód: Vybrať všetko

int MyGetch()
{
int Ret = getch();
if ((!Ret || Ret == 0xE0) && kbhit())
Ret = 256 + getch();
return Ret;
}
Dik kazdemu
juho
Star
Star
Používateľov profilový obrázok
Príspevky: 551
Registrovaný: 11 máj 2007, 21:16

Príspevok od používateľa juho »

vyvola stlacenie klavesy a ked sa neurcila alebo ma hodnotu E0 14*16+0==224 a zaroven je stlacena klavesa tak pripocitaj zaklad a znovu nacitaj klavesu a navratovu hodnotu nastav na ret.
x0_0x
Light Star
Light Star
Príspevky: 210
Registrovaný: 05 mar 2008, 21:18
Bydlisko: 127.0.0.1[localhost]
Kontaktovať používateľa:

Príspevok od používateľa x0_0x »

Dik :D

Mozem este jednu otazocku??
Ako zistim poziciu kurzora v konzole?
Mam definovanu funkciu gotoxy kt. nastaví kurzor na hodnoty x a y
Kod gotoxy:

Kód: Vybrať všetko

void gotoxy(int x, int y)
{
  COORD point;
  point.X = x; point.Y = y;
  SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),
                           point);
}
Ale ja potrebujem zistit kde sa akurat nachadza kurzor.Dik :?
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Príspevok od používateľa audiotrack »

a čo takto nejak?

Kód: Vybrať všetko

void GetConsoleCursorPosition(SHORT &x, SHORT &y);
x0_0x
Light Star
Light Star
Príspevky: 210
Registrovaný: 05 mar 2008, 21:18
Bydlisko: 127.0.0.1[localhost]
Kontaktovať používateľa:

Príspevok od používateľa x0_0x »

Nejaky priklad na pouzitie by sa nenasiel? :? :? :D :D
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

Správna funkcia je GetConsoleScreenBufferInfo(), ale vôbec netuším, načo ti je zisťovanie pozície kurzora (veď tú polohu nastavíš ty, takže nie je problém si ju zapamätať).
x0_0x
Light Star
Light Star
Príspevky: 210
Registrovaný: 05 mar 2008, 21:18
Bydlisko: 127.0.0.1[localhost]
Kontaktovať používateľa:

Príspevok od používateľa x0_0x »

Lebo si chcem spravit nieco ako sipkove menu a povodne som to cel spravit tak ze ak je kurzor na nejakej pozicii a uzivatel stlaci sipku hore tak sa kurzor presunie o riadok vyssie a vysvieti polozku menu..Potom ked stlaci enter tak znova si zisti polohu kurzora a ak je poloha co ja viem 45,50 a na tej polohe bude polozka nova hra tak spusti funkciu nova hra:P

Je to dost zlozite a myslim ze sa to da urobit aj ovela jednoduchsie ale ja netusim ako
:? :? :?
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

Poloha kurzora je ti na nič. Nakreslíš menu a vysvietiš nejakú položku (jej číslo budeš poznať). Pri stlačení klávesu hore/dole (vľavo/vpravo...) tú starú položku prekreslíš a zvýrazníš novú. Keď sa stlačí kláves, ktorý to má potvrdiť budeš vedieť, ktorá položka bola zvýraznená.
x0_0x
Light Star
Light Star
Príspevky: 210
Registrovaný: 05 mar 2008, 21:18
Bydlisko: 127.0.0.1[localhost]
Kontaktovať používateľa:

Príspevok od používateľa x0_0x »

Ale ja to cem robit v konzole :? :?
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Príspevok od používateľa audiotrack »

x0_0x napísal:Ale ja to cem robit v konzole :? :?
rovnaký princíp sa dá aplikovať aj na konzolu.
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

x0_0x napísal:Ale ja to cem robit v konzole :? :?
Presne to sa používa aj v konzole. Napr. mi na rovnakom princípe funguje aj program na riešenie Sudoku (nikde sa tam nezisťuje poloha kurzoru, lebo je tam, kde chcem aby bol). ;)
Napísať odpoveď