[SFML] Problem z wyodrębnieniem pola .
Ostatnio zmodyfikowano 2013-08-08 23:22
domin568 Temat założony przez niniejszego użytkownika |
[SFML] Problem z wyodrębnieniem pola . » 2013-08-06 22:12:33 Witam , mój problem niby nie przeszkadza w działaniu mojej aplikacji , jednak chciałem to zrobić abym mógł zrobić specjalną obwolutę pola które zostało już klikniętę . Jednak kiedy wywołuje metodę sprawdzającą to sprawdza mi ona również już to co przed chwilą kliknąłem . Tutaj kod potrzebny : isUsed bool Pole::isUsed( sf::Vector2f pozycja_pola, sf::Sprite * sprite, int i, int & f ) { f++; cout << "f = " << f << endl; for( int j = 0; j < f && j < 9; j++ ) { cout << pozycja_pola.x << " pozycja pola.x " << endl; cout << pozycja_pola.y << " pozycja pola.y " << endl; cout << "sprite[" << j << "] x" << sprite[ j ].getPosition().x << endl; cout << "sprite[" << j << "] y" << sprite[ j ].getPosition().y << endl; if( pozycja_pola == sprite[ j ].getPosition() ) { cout << "zwracam true " << endl; return true; } } cout << "zwracam false " << endl; return false; }
główna int i = - 1; int f = 0; int k = 0;
while( okno.pollEvent( zdarzenie ) ) { pole.getPosMouse( okno ); if( zdarzenie.type == sf::Event::Closed ) { okno.close(); return true; } if( pole.inPole( pole.getPosMouse( okno ) ) == 2 ) { if( pole.isUsed( pole.getPositionPole( pole.getPosMouse( okno ), pozycjaNaFigure ), figury, i, f ) == false ) { ++i; pole.getPositionPole( pole.getPosMouse( okno ), pozycjaNaFigure ); pole.ustawFigury( pozycjaNaFigure, figury, kogo_kolej, i ); } if( pole.isUsed( pole.getPositionPole( pole.getPosMouse( okno ), pozycjaNaFigure ), figury, i, f ) == true ) { cout << "iiiiii" << i << endl; cout << " aa " << endl; } } }
getPositionPole sf::Vector2f Pole::getPositionPole( sf::Vector2f pozycja_myszki, sf::Vector2f & pozycja_na_figure ) { for( int i = 0; i < 9; i++ ) { if( pole[ i ].getGlobalBounds().contains( pozycja_myszki ) ) { pozycja_na_figure = pole[ i ].getPosition(); return pozycja_na_figure; } } }
|
|
bbcodepl |
» 2013-08-07 07:03:29 Z tego co widzę, ale mogę się mylić brakuje przed tym chyba else: cout << "zwracam false " << endl; return false;
|
|
hincu |
» 2013-08-07 10:13:06 w petli glownej sprawdz raz... i uzyj if else a nie if if, swoja droga ten kod jest cholernie chaotycznie napisany i nieczytelny, ledwo co kminie o co w nim chodzi..., nastepnym razem nie cuduj za bardzo bo nie wychodzi tobie myslenie xD |
|
domin568 Temat założony przez niniejszego użytkownika |
» 2013-08-07 12:14:01 @bbcodepl jeżeli użyłbym tam else to by mi wywaliło błąd , no bo if jest w pętli a tak jak już wyjdzie z pętli to zwraca false . @hincu wiem że w głównej mógłbym dać tam else , w głównej sprawdzam wszystko przecież tylko raz , więc o co ci chodzi :) ? chyba zę chodzi ci o isUsed no to tam sprawdzam wszystkie elementy tablicy sprite ( tylko chce żeby nie zwracało true gdy dopiero co kliknę w pole ) Edycja : hincu jednak miałeś racje , zupełnie nie pomyślałem że jeżeli będę wywoływał tą metode po raz 2 to również będzie sprawdzać , dałem else zamiast if( pole.isUsed( pole.getPositionPole( pole.getPosMouse( okno ), pozycjaNaFigure ), figury, i, f ) == true ) |
|
hincu |
» 2013-08-08 23:22:20 skoro problem rozwiazany to zamknij temat, w koncu po to admini dali zwyklym usera taka flage... |
|
« 1 » |