[SFML] Problem z przechodzeniem pionka na planszy.
Ostatnio zmodyfikowano 2014-06-18 11:32
kamilall234 Temat założony przez niniejszego użytkownika |
[SFML] Problem z przechodzeniem pionka na planszy. » 2014-06-17 23:51:31 Witam. Mam problem z przechodzeniem pionka na planszy. Obiekt klasy gracz zawiera w sobie pionek (Sf::Sprite), przy tworzeniu gracza, automatycznie tworzony jest pionek gacza. Ustawiany na pozycje nr 0 na planszy. Błąd polega na tym, iż pionek wyświetla się w kilku pozycjach. Mianowicie rzuce 5, on jest na 5. Potem rzuce , jest na 5 i na 12. W dodatku mam problem z wyświetlaniem okna gry. Po wciśnieciu przycisku, "rzuć kostką" wyświetla się poprzedni ekran menu, jednak w "tle" jest dalej plansza, ponieważ klikająć ponownie w miejsce "rzuc kostka" (przycisku tego nie widać) jest wykonywany ruch i wraca plansza i przyciski, i po ponownym kliknieciu znika i tak wkółko. Mam te dwa problemy których nie mogę rozwiązać. Funkcja "narysuj" jest mało znacząca w tym wszystkim. Tak jakby funkcja move, nie działa do konca jakbym chciał void Gracz::pozycja_pionka( sf::RenderWindow & okno ) { float x, y; if( pozycja_na_planszy < 10 ) { x = 490; y = 570 -( 5 * numer_gracza ); cout << "Pozycja" << endl; cout << pozycja_na_planszy << endl; float roznica = pozycja_na_planszy * 35; x = x - roznica; pionek_gracza.move( x, y ); okno.draw( pionek_gracza ); } }
class Gracz { private: int numer_gracza; string kolor; int pozycja_na_planszy; sf::Sprite * pionek_gracza; public: Gracz( int, int ); int rzut_koscia( Kosc * ); int ruch_gracza( int, Kosc * ); void pozycja_pionka( sf::RenderWindow & okno ); void narysuj( sf::RenderWindow & okno, sf::Sprite ); };
void Gracz::narysuj( sf::RenderWindow & okno, sf::Sprite okno_do_wyswietlania ) { sf::Text login, cash, polakupione; login = tekst( okno_do_wyswietlania, nazwa ); okno.draw( login ); okno_do_wyswietlania.setPosition( okno_do_wyswietlania.getPosition() + sf::Vector2f( 0, 30 ) ); string skonto; skonto = "Kasa: "; ostringstream convert; convert << konto; skonto = skonto + convert.str(); cash = tekst( okno_do_wyswietlania, skonto ); okno.draw( cash ); ostringstream convert2; string pola; pola = "Karty :"; for( int i = 0; i < karty_gracza.size(); i++ ) { convert2 << karty_gracza[ i ]->numer_dzialki(); pola = pola + convert2.str(); pola = pola + ", "; } okno_do_wyswietlania.setPosition( okno_do_wyswietlania.getPosition() + sf::Vector2f( 0, 30 ) ); polakupione = tekst( okno_do_wyswietlania, pola ); okno.draw( polakupione ); }
|
|
maly |
» 2014-06-18 09:31:18 Błąd polega na tym, iż pionek wyświetla się w kilku pozycjach |
Pewnie nie czyścisz okna. Po wciśnieciu przycisku, "rzuć kostką" wyświetla się poprzedni ekran menu, jednak w "tle" jest dalej plansza |
Pewnie nie czyścisz okna. ponieważ klikająć ponownie w miejsce "rzuc kostka" (przycisku tego nie widać) jest wykonywany ruch i wraca plansza i przyciski, i po ponownym kliknieciu znika i tak wkółko |
Czemu obsługujesz nie widoczny przycisk? |
|
kamilall234 Temat założony przez niniejszego użytkownika |
» 2014-06-18 10:34:29 Tylko że nie bardzo wiem, jak mam wyczyścić okno, aby pozostała plansza i układ pionków na nim. Trzeba od nowa wszystko narysowac? Chciałem by zostawało tło planszy a ruszały się tylko pionki.
Biorąc oknoAplikacji.clear(), wyczysci mi cały ekran na którym musze budować wszystko od nowa. |
|
Glazus |
» 2014-06-18 11:32:04 Trzeba od nowa wszystko narysowac? |
Tak. Możesz ewentualnie użyć też sf::RenderTexture . |
|
« 1 » |