Oryginalna strona colobot.cba.pl umarła, gdy cba.pl przestało oferować darmowy hosting. To jest statyczny mirror, pobrany w 2018. ~krzys_h
|
Forum - Polski Portal COLOBOTa |
|
|
Czy uzytkownik wcisnal klawisz? |
Autor |
Wiadomość |
Simbax
Mod
Twoja ulubiona misja: Wszystkie na Krystalii
Pomógł: 6 razy Wiek: 22 Dołączył: 07 Sie 2009 Posty: 473 Skąd: z Leszna
|
Wysłany: 15-10-2011, 13:14 Czy uzytkownik wcisnal klawisz?
|
|
|
Znowu ja i moje nieumiejętne szukanie. Tym razem chcę, żeby wykonywał się pewien kawałek kodu co pewien czas (dokładnie - co sekundę), ale jeśli w trakcie zostanie naciśnięty odpowiedni klawisz to zanim to wykona zrobi coś jeszcze. Prościej: ma wyświetlać co sekundę na ekranie wartość, która się zmienia, a w razie naciśnięcia np. 1 coś w niej zmienić. To kawałek kodu:
Kod: | for(;;)
{
system("cls");
cout << "Aktualna predkosc: " << Pojazd.fPredkosc() << " m/s" << endl << endl;
cout << "1 - przyspiesz 2 - zwolnij 3 - zatrzymaj";
Sleep(1000);
ch=getch();
if (ch == '1') Pojazd.Przyspiesz(1);
if (ch == '2') Pojazd.Zwolnij(1);
if (ch == '3') Pojazd.Zwolnij(Pojazd.fPrzyspieszenie());
} |
Wiem, że to jest źle, próbowałem coś wykombinować, ale jakoś nie mogę na nic wpaść. Po prostu getch() będzie się wykonywać tak długo dopóki nie dostanie znaku, tu jest problem. |
_________________ http://projektsimbax.blogspot.com/ <- Taki sobie blog |
|
|
|
|
adiblol
Administrator forum FLOSS FTW!
Twoja ulubiona misja: porównywanie formatów audio
Pomógł: 18 razy Dołączył: 21 Kwi 2008 Posty: 1313 Skąd: pokój odsłuchowy
|
|
|
|
|
Simbax
Mod
Twoja ulubiona misja: Wszystkie na Krystalii
Pomógł: 6 razy Wiek: 22 Dołączył: 07 Sie 2009 Posty: 473 Skąd: z Leszna
|
|
|
|
|
adiblol
Administrator forum FLOSS FTW!
Twoja ulubiona misja: porównywanie formatów audio
Pomógł: 18 razy Dołączył: 21 Kwi 2008 Posty: 1313 Skąd: pokój odsłuchowy
|
Wysłany: 15-10-2011, 15:12
|
|
|
No i udowodniłeś brak umiejętności myślenia. A później się dziwisz dlaczego nazywam Cię konsumpcjonistą... |
_________________ 1Tbps Project && Telecomix Network
|
|
|
|
|
Simbax
Mod
Twoja ulubiona misja: Wszystkie na Krystalii
Pomógł: 6 razy Wiek: 22 Dołączył: 07 Sie 2009 Posty: 473 Skąd: z Leszna
|
Wysłany: 15-10-2011, 15:31
|
|
|
Ależ ty jesteś mądry. Dałeś linka do jakiegoś tekstu, który nie dość że jest po angielsku, to jeszcze za wiele mi nie dał, bo nawet z wykorzystaniem tego czegoś nie mogę tego problemu rozwiązać, chyba że mam kazać wcisnąć przycisk dwa razy. ekhem... idiota... ekhem...
[ Dodano: 15-10-2011, 15:46 ]
No dobra działa, szkoda tylko, że nikt nigdzie nie napisał pewnej ważnej rzeczy, tylko dał linka, bo jest "ekspertem". Więc niech ktoś taki naprawdę inteligentny mi wyjaśni jakim cudem to działa:
Sleep(1000);
system("cls");
cout << "Aktualna predkosc: " << Pojazd.fPredkosc() << " m/s" << endl << endl;
cout << "1 - przyspiesz 2 - zwolnij 3 - zatrzymaj";
if (kbhit()!=0)
{
ch=getch();
if (ch == '1') Pojazd.Przyspiesz(1);
if (ch == '2') Pojazd.Zwolnij(1);
if (ch == '3') Pojazd.Zwolnij(Pojazd.fPrzyspieszenie());
}
[ Dodano: 15-10-2011, 15:57 ]
Dobra, chyba już rozumiem. |
_________________ http://projektsimbax.blogspot.com/ <- Taki sobie blog |
|
|
|
|
adiblol
Administrator forum FLOSS FTW!
Twoja ulubiona misja: porównywanie formatów audio
Pomógł: 18 razy Dołączył: 21 Kwi 2008 Posty: 1313 Skąd: pokój odsłuchowy
|
Wysłany: 15-10-2011, 15:58
|
|
|
Simbax napisał/a: | Ale żeś mi pomógł... | Czy takie zdanie informuje mnie czego nie rozumiesz? W czym mam pomóc dodatkowo?
Simbax napisał/a: | który nie dość że jest po angielsku | Nie pogrążaj się... Jeżeli rozumiesz menu Minecrafta to nie powinieneś mieć problemu z dokumentacją techniczną.
Simbax napisał/a: | if (kbhit()!=0)
{
ch=getch(); | Normalnie. kbhit() zwraca 0 jeżeli użytkownik nic nie wcisnął, wtedy zgodnie z if'em nie jest użyty getch bo gdyby został użyty to by zablokował program. |
_________________ 1Tbps Project && Telecomix Network
|
|
|
|
|
Berserker
Dark Ness
Twoja ulubiona misja: Ofrenia
Pomógł: 16 razy Wiek: 24 Dołączył: 24 Mar 2009 Posty: 496 Skąd: Bigos
|
Wysłany: 15-10-2011, 18:25
|
|
|
Poczytaj o funkcji GetAsyncKeyState(). Sposobow na odczyt klawiszy jest wiele, GetAsyncKeyState() jest chyba najprostsze, najwydajniejsze jest po prostu zalozenie hooka na klawiature, ale ja nie rozumiem, jak hooki dzialaja wiec trzymam sie tej funkcji
Angielski nie powinien byc problemem, wiekszosc stron angielskich jest duzo lepsza od ich polskich odpowiednikow, wiec jesli nie umiesz angielskiego na poziomie conajmniej intermediate to czas sie uczyc. |
_________________
|
|
|
|
|
|
|
| |
|
|
|
|
Polski Portal COLOBOTa © 2008 - 2012 |
|
|