pętla rysująca graf, problem komiwojażera
Ostatnio zmodyfikowano 2016-03-24 18:26
Sarrys Temat założony przez niniejszego użytkownika |
pętla rysująca graf, problem komiwojażera » 2016-01-13 20:51:56 Witam, Zmagam się z rysowaniem grafów i problemem komiwojażera. Korzystam z SFML. Rysuję punkty/kropki na ekranie(mam dane ich współrzędne), określam początkowy punkt i z niego program ma poprowadzić linie do kolejnej kropki po naciśnięciu strzałki w prawo. Przy kolejnym naciśnięciu klawisza, powinien połączyć tą drugą z trzecią itd. Poniższy kod nie działa. wspX -> zawiera współrzędne X kolejnych kropek wspY -> analogicznie do wspX kolejnosc -> zawiera indeksy kolejnych kropek Wydaje mi się, że aby to miało sens, powinienem za każdym razem tworzyć nową linię, o nowej nazwie. Ale nie wiem jak to zrobić. A może da się to rozwiązać inaczej? Proszę o pomoc/wskazówki/linki. Cokolwiek. int par = 0; while( par <= liczbamiast - 1 ) { if( Keyboard::isKeyPressed( Keyboard::Right ) ) { Vertex line[ 2 ] = { Vertex( Vector2f( wspX[ kolejnosc[ par ] ] + 5, wspY[ kolejnosc[ par ] ] + 5 ) ), Vertex( Vector2f( wspX[ kolejnosc[ par + 1 ] ] + 5, wspY[ kolejnosc[ par + 1 ] ] + 5 ) ) }; okno.draw( line, 2, Lines ); par++; } } okno.display();
|
|
jarek20 |
» 2016-03-24 18:26:28 Spróbuj tak: ///zmienne globalne (ważne żeby było przed pętlą główną) int par = 0; bool is_key_pressed=false; ///w pętli głownej
if( Keyboard::isKeyPressed( Keyboard::Right ) ) { is_key_pressed=true; } else if(is_key_pressed) { par++; }///takie rozwiązanie z dwoma ifami i zmienną bool sprawi ze zmienna par będzie inkrementowana jedyni przy puszczeniu klawisza.
for(int i=0; i<par&&i<= liczbamiast - 1;i++ ) { Vertex line[ 2 ] = { Vertex( Vector2f( wspX[ kolejnosc[ par ] ] + 5, wspY[ kolejnosc[ par ] ] + 5 ) ), Vertex( Vector2f( wspX[ kolejnosc[ par + 1 ] ] + 5, wspY[ kolejnosc[ par + 1 ] ] + 5 ) ) }; okno.draw( line, 2, Lines ); } okno.display();
|
|
« 1 » |