Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++] Przytrzymanie przycisku - zwiększanie wartości liczby całkowitej.

Ostatnio zmodyfikowano 2015-06-10 08:45
Autor Wiadomość
neon94
Temat założony przez niniejszego użytkownika
[C++] Przytrzymanie przycisku - zwiększanie wartości liczby całkowitej.
» 2015-06-09 15:38:30
Dzień dobry, muszę zrobić symulator pojazdu, rzecz w tym, że totalnie nie wiem jak zasymulować wzrost prędkości. Chodzi mi o proste przytrzymanie strzałki w górę i zwiększanie wartości liczbowej imitującej prędkościomierz. Zastanawiałem się nad użyciem funkcji getch(), lub skorzystaniem z biblioteki time.h i kombinowaniem tego na czasie, tylko kolejnym problemem jest to, że muszę uwzględnić "skosy" tj. punkt ma się przesuwać w dwóch płaszczyznach na raz tj. x i y, albo mówić inaczej muszą być dwa prędkościomierze, jeden od strzałem góra dół, drugi od strzałek lewo prawo.
Wiem, że to forum nie jest od pisania kodu i powinienem coś wkleić i pokazać jak nad tym kombinowałem, ale jestem totalnym laikiem, a muszę to zrobić, ponieważ ten element jest kluczem do całego modelu, a właśnie z tym mam największy problem. Jeżeli ktoś zechce poświęcić chociaż chwilę i udzielić jakiejś rady/podpowiedzi, byłbym bardzo wdzięczny.
Pozdrawiam.
P-133374
akwes
» 2015-06-09 16:14:53
Jesteś pewien, że masz problem z programowaniem a nie z fizyką?
Idea jest taka: Przesuwasz obiekt o pewien wektor, długość wektora wyliczasz na podstawie aktualnej prędkości, kierunek wektora na podstawie aktualnego skrętu osi, lub w przybliżeniu po prostu środka auta. Zatem masz obliczenie dwóch zmiennych i zaktualizowanie pozycji grafiki. Aktualną prędkość obliczasz na podstawie wzorów z fizyki na prędkość po czasie z przyspieszenia. Skrętność osi możesz sobie symulować jakąś funkcją, wykładniczą czy logarytmiczną jeżeli liniowa Ci nie odpowiada.
P-133377
neon94
Temat założony przez niniejszego użytkownika
» 2015-06-09 16:25:25
To nie jest aż tak zaawansowany symulator, ogólnie w moim przypadku słowo "pojazd" i "symulator" można po prostu usunąć. Kluczową rolę odgrywa problem w jaki sposób zwiększać ew. zmniejszać, lub jedną zwiększać, drugą zmniejszać, wartość dwóch liczb równolegle, przy pomocy przytrzymania np. strzałki lub jakiejś literki(oczywiście różne przyciski dla dwóch wartości), tak żeby załóżmy stan początkowy wynosił 0, i np. przytrzymanie klawisza w górę przez 1s zwiększa wartość o 10, a w dół analogicznie zmniejsza wartość o 10. Ale właśnie nie chodzi mi o zasadę prostego kliknij ->dodaj, tylko przytrzymaj i żeby wszystko było zależne od czasu przytrzymania.
P-133379
akwes
» 2015-06-09 19:10:17
Czyli Twój problem nie ma nic wspólnego z tym wszystkim co opisałeś wcześniej a potrzebujesz jedynie zmieniać dwie wartości w czasie? Aby wyniki były takie same na każdym komputerze będziesz potrzebował jakiegoś timera. Korzystasz z jakiś bibliotek? Czy to prosta aplikacja konsolowa?

P-133388
neon94
Temat założony przez niniejszego użytkownika
» 2015-06-09 22:39:40
Tak jest to prosta aplikacja konsolowa, chciałem skorzystać z time.h, lecz nie wiem jak pogodzić to aby dwie operacje wykonywały się jednocześnie, albo chociaż pozornie udawały, że wykonują się jednocześnie. Jestem strasznym laikiem w programowaniu, i największy problem mam właśnie z zaimplementowaniem czasu do całości programu, w dodatku, abym mógł przekształcić ten czas na "wartości" na których mógłbym operować np. dodać jakiś dzielnik, lub pomnożyć przez pewien współczynnik.
P-133406
akwes
» 2015-06-10 08:45:56
W takim razie idea jest prosta. Przemyśl taki schemat:


a := 0;
b := 0;
Timer t;
pętla:
    czas = t.CzasOdOstatniegoWywolania();
    CzyKlawiszWcisniety(klawisz1) => a += a * czas;
    CzyKlawiszWcisniety(klawisz2) => b += b * czas;   
    CzyKlawiszWcisniety(klawisz3) => break;
koniec pętli

Jak zrealizować Timer czy wykrywanie wciśnięcia klawisza powinieneś być w stanie wyszukać.
P-133416
« 1 »
  Strona 1 z 1