[SFML] Rzut kostką, zbyt wiele wykonań
Ostatnio zmodyfikowano 2014-06-19 10:23
kamilall234 Temat założony przez niniejszego użytkownika |
[SFML] Rzut kostką, zbyt wiele wykonań » 2014-06-14 03:35:04 Witam. Mam problem. Mam przycisk zrobiony za pomoca SPrite, którego kliknięcie wywołuje funkcję rzut kostką, a on zwraca wartość wyrzuconych pol, jednak jest problem taki, iż przy jednym kliknięciu tych rzutów wykonuje się o wiele za dużo. Jakie jest rozwiązanie, aby to troche wstrzymac. Myślę ze tutaj chodzi o czas kliknięcia, z którym wiąże się taktowanie procesora. Jednak nie mam pomysłu na rozwiązanie tego. if( sf::Mouse::isButtonPressed( sf::Mouse::Left ) && przycisk_rzuc.getGlobalBounds().contains( MousePos ) ) { bool rzucanie = true; while( rzucanie == true ) { std::cout << " " << endl; int kolejeczka = 0; gra->kolejka_gry( 1, kolejeczka ); rzucanie = false; } }
|
|
SeaMonster131 |
» 2014-06-14 10:14:21 bool click = false;
if( klikniecie && !click ) { click = true; }
if( !klikniecie && click ) click = false;
|
|
kamilall234 Temat założony przez niniejszego użytkownika |
» 2014-06-14 12:56:55 W klikniecie mam wstawić przycisk_rzuc.getGlobalBounds().contains( MousePos ) Jeżeli tak to dalej nie działa, zapętla się baaaardzo dużo razy. Jeżeli wstawie coś o co zapyta w konsoli to wtedy rzuca tylko raz np, ale to bez sensu, żeby po kliknieciu jeszcze akceptować to w konsoli. bool rzucanie = true; while( rzucanie == true ) { std::cout << "chcesz rzucic kostka" << endl; std::cin >> rzucanie; }
|
|
Monika90 |
» 2014-06-14 14:52:58 |
|
kamilall234 Temat założony przez niniejszego użytkownika |
» 2014-06-14 15:33:59 Uzywam obsługi wciśniecia przycisku lewego i potem jest uruchamiana funkcja rzucajaca kostka, jednak wykonuje sie kilka razy. A jedno klikniecie=jeden rzut powinno sie odbyc. /Edit: Problem zażegnany. Używałem if( sf::Mouse::isButtonPressed( sf::Mouse::Left ) && przycisk_rzuc.getGlobalBounds().contains( MousePos ) ) { if( wait && !sf::Mouse::isButtonPressed( sf::Mouse::Left ) ) { } }
A trzeba było : while( sf::Mouse::isButtonPressed( sf::Mouse::Left ) && przycisk_rzuc.getGlobalBounds().contains( MousePos ) ) { if( wait && !sf::Mouse::isButtonPressed( sf::Mouse::Left ) ) { } }
|
|
pekfos |
» 2014-06-19 10:23:02 A jak przytrzymasz dłużej LPM? Użyj zdarzeń, otrzymujesz wtedy MouseButtonPressed/MouseButtonReleased tylko raz na jedno kliknięcie i nie trzeba tak pod górę kombinować.. |
|
« 1 » |