Wpis z mikrobloga

#cpp #naukaprogramowania
Mirki mam program w C++ z grą milionerzy. Jednak muszę jeszcze dodać do niej licznik z czasem i gdy skończy nam się czas na pytanie to przegrywamy. Problem jest taki, że zwykły zegar (odmierzający czas od tyłu) łatwo zrobić, bo dałbym zwykłą funkcję sleep lub coś podobnego i odświeżałbym konsolę co np. sekundę ze zmianą czasu. Jednak funkcja typu sleep "zatrzymuje" mi program a ja chcę w tym czasie wpisać poprawną odpowiedz (A, B, C lub D).
Jak zrobić taki zegar który by mi odmierzał sekundy do końca czasu i jednocześnie mógłbym wpisać z konsoli klawisz z dobrą odpowiedzią?
Patres - #cpp #naukaprogramowania
Mirki mam program w C++ z grą milionerzy. Jednak m...

źródło: comment_zn1BFcGTh531o7PWcBRlvCgPr9o5Zf5D.jpg

Pobierz
  • 14
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@ravpawlisz: Czas odświeżania nic tu nie zmieni. Po prostu nie wiem jak mogę użyć funkcji pobierającej znak dopóki nie skończy mi się odliczanie, bo wygląda to mniej więcej tak:
for (int i =0; i<60; i++)
{
sleep(1000);
odswiez-ekran-ze-zmiana-czasu();
}
cin>>odpowiedz;
  • Odpowiedz
@Patres: zrób to na różnych wątkach. Jeden wątek to GUI, które pobiera sobie czas do końca pytania, drugi wątek to jakiś timer lub coś podobnego. Możesz śmiało użyć std::chrono do takich poczynań.
  • Odpowiedz
@ravpawlisz: Nie mogę dać wewnątrz pętli, bo przy każdym odświeżaniu program będzie czekał aż gracz wciśnie jakiś klawisz:
for (int i =0; i<60; i++)
{
sleep(1000);
  • Odpowiedz
Zapamietaj czas wystartowania w jakiejs globalnej zmienniej, zrob kolejna z tym czasem +20 sec i sprawdzaj przy karzdym obrocie petli czy czas obecny systemu jest wiekszy od zmiennej numer dwa
  • Odpowiedz