domin568 Temat założony przez niniejszego użytkownika |
» 2013-08-05 00:21:04 No tak , ale jeżeli jest to tablica , to jak moge zrobić inaczej ?? Jakiś licznik ([i]) tablicy musi być , lub ja nie wiem jak sie od tego ustrzec . Jak mógłbym nie używać pętli for przy każdej okazji z tablicą ?? |
|
MrPoxipol |
» 2013-08-05 10:00:13 Użyj tablicy dwuwymiarowej. |
|
pekfos |
» 2013-08-05 10:26:45 Chyba mnie nie zrozumiałeś.. Wszystkie sprajty tablicy ustawiasz w jednym miejscu. W efekcie jest tak, jakbyś miał tylko jednego sprajta i go przesuwał po ekranie tam, gdzie klikniesz. Użyj tablicy dwuwymiarowej. |
Co? |
|
domin568 Temat założony przez niniejszego użytkownika |
» 2013-08-05 10:58:52 Teraz udało mi się dojść do aż 5 zapisanych figur ! już jest jakiś postęp , zmieniłem w funkcji głównej : for( int i = 0; i < 9; i++ ) { if( pole.inPole( posMouse ) == 2 ) { pole.getPositionPole( posMouse, pozycjaNaFigure ); pole.ustawFigury( pozycjaNaFigure, figury, kogo_kolej, i ); } }
i w funkcji ustawFigury : void Pole::ustawFigury( sf::Vector2f pozycjaNaFigure, sf::Sprite * sprite, short & kogo_kolej, int i ) { loadTexture(); switch( kogo_kolej ) { case 1: { sprite[ i ].setTexture( krzyzyk ); sprite[ i ].setPosition( pozycjaNaFigure ); kogo_kolej = 2; cout << pozycjaNaFigure.x << endl; cout << pozycjaNaFigure.y << endl << endl; break; } case 2: { sprite[ i ].setTexture( kolko ); sprite[ i ].setPosition( pozycjaNaFigure ); kogo_kolej = 1; cout << pozycjaNaFigure.x << endl; cout << pozycjaNaFigure.y << endl << endl; break; } } }
jednak nadal to jeszcze nie jest to ... |
|
pekfos |
» 2013-08-05 11:04:01 Dalej nie wiem, dlaczego robisz to 9 razy. Wystarczy, że określisz, który sprajt został klikniety i tam ustawisz odpowiednią teksturę. |
|
domin568 Temat założony przez niniejszego użytkownika |
» 2013-08-05 11:19:00 Myślę że funkcja getPositionPole to robi no bo sprawdza całą tablice i jeżeli znajdzie jedno (jedyne) pole na którym jest myszka : void 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(); } } }
to zwraca pozycje tego pola czyli tak jakby zwraca pozycje właśnie tego klikniętego pola (sf::RectangleShape) a potem jest przesyłana do ustawFigury żeby tam ustawić for( int i = 0; i < 9; i++ ) { if( pole.inPole( posMouse ) == 2 ) { pole.getPositionPole( posMouse, pozycjaNaFigure ); pole.ustawFigury( pozycjaNaFigure, figury, kogo_kolej, i ); } }
|
|
pekfos |
» 2013-08-05 11:34:41 Ale dlaczego chcesz wszystko zrobić na raz? Kliknięcie dotyczy tylko jednego pola, więc, co najwyżej, jedno pole powinno Cię interesować. jeżeli bym nie dał tutaj pętli to jak mógłbym pracować z tablicą |
Normalnie? |
|
domin568 Temat założony przez niniejszego użytkownika |
» 2013-08-05 12:27:23 Zrobiłem teraz tak : int i = - 1;
if( pole.inPole( posMouse ) == 2 )
{ ++i; pole.getPositionPole( posMouse, pozycjaNaFigure ); pole.ustawFigury( pozycjaNaFigure, figury, kogo_kolej, i ); }
Ten kod działa poprawnie :) , tylko teraz zrobić warunek który uniemożliwia stawiania na już użytych polach , wielkie dzięki pefkos !! :) |
|
1 « 2 » 3 |