Wolfff Temat założony przez niniejszego użytkownika |
» 2018-08-14 18:15:14 Wszystko co było ważne już wrzuciłem, ale jeżeli będzie to większą pomocą to tutaj wrzucam praktycznie całość:
std::string st_number; std::vector < std::string > story; std::string opt_one; std::string opt_two; std::vector < std::string > result_one; std::vector < std::string > result_two; std::vector < std::string > stats_one; std::vector < std::string > stats_two;
int stor = 0; int choice_1 = 0; int story_count = 0;
sf::Text fstory; sf::Text sstory; fstory.setCharacterSize( 15 ); sstory.setCharacterSize( 15 ); fstory.setFillColor( sf::Color( 0, 0, 0, 255 ) ); sstory.setFillColor( sf::Color( 0, 0, 0, 255 ) ); fstory.setPosition( 150.f, 470.f ); sstory.setPosition( 150.f, 505.f ); fstory.setFont( font ); sstory.setFont( font );
bann_1.setPosition( 150.f, 465.f ); bann_2.setPosition( 150.f, 500.f );
if( loc_chosen ) { alpha = alpha_max; }
while( Running ) { while( App.pollEvent( event ) ) { if( event.type == sf::Event::Closed ) { return( - 1 ); } if( event.type == sf::Event::KeyPressed ) { if( !loc_chosen ) { switch( event.key.code ) { case sf::Keyboard::Down: { if( location < 3 ) { location++; std::cout << location << std::endl; } break; } case sf::Keyboard::Up: { if( location > 0 ) { location--; std::cout << location << std::endl; } break; } case sf::Keyboard::Return: { st_number += std::to_string( location ); std::cout << "LOC NUMBER: " << st_number << std::endl; loc_chosen = true; break; } } } else if( loc_chosen && !job_chosen ) { std::cout << linia_loc[ location * 2 ] << std::endl; std::cout << linia_loc[( location * 2 ) + 1 ] << std::endl; switch( event.key.code ) { case sf::Keyboard::Up: choice = 0; break; case sf::Keyboard::Down: choice = 1; break; case sf::Keyboard::Return: st_number += std::to_string( choice ); st_number += std::to_string( 0 ); std::cout << "LOC + CHOICE NUMBER + RAND(0): " << st_number << std::endl; job_chosen = true; break; } } else if( job_chosen ) { if( event.key.code == sf::Keyboard::Return ) { stor++; } else if( stor > story_count ) { switch( event.key.code ) { case sf::Keyboard::Up: choice_1 = 0; break; case sf::Keyboard::Down: choice_1 = 1; break; } } } } } if( loc_chosen ) { ch_1.setString( linia_loc[ location * 2 ] ); ch_2.setString( linia_loc[( location * 2 ) + 1 ] ); } if( job_chosen ) { LookFor( st_number, opt_one, opt_two, story, result_one, result_two, stats_one, stats_two ); story_count =( int( story.size() / 2 ) ); if( story_count > 0 ) { if( stor <= story_count ) { fstory.setString( story[( stor * 2 ) ] ); sstory.setString( story[( stor * 2 ) + 1 ] ); } if( stor > story_count ) { fstory.setString( opt_one ); sstory.setString( opt_two ); if( choice == 0 ) { arrow_r.setPosition( 120.f, 470.f ); } else { arrow_r.setPosition( 120.f, 505.f ); } } } } App.clear(); App.draw( sprite ); for( auto & sprt: sprite_br ) { App.draw( sprt ); } for( auto & text: location_txt ) { App.draw( text ); } if( !loc_chosen && !job_chosen ) { arrow_l.setPosition( 140.f, 65.f *( location + 1 ) ); App.draw( arrow_l ); } if( loc_chosen ) { if( !job_chosen ) { if( choice == 0 ) { arrow_r.setPosition( 120.f, 470.f ); } else { arrow_r.setPosition( 120.f, 505.f ); } } App.draw( s_gray ); App.draw( bann_1 ); App.draw( bann_2 ); App.draw( arrow_r ); App.draw( ch_1 ); App.draw( ch_2 ); } if( job_chosen ) { App.draw( s_gray ); App.draw( text_box ); App.draw( fstory ); App.draw( sstory ); if( stor > story_count ) { App.draw( arrow_r ); } } App.display(); }
return( - 1 ); }
oraz pełna funkcja look for: void LookFor( std::string st, std::string & opt_o, std::string & opt_t, std::vector < std::string >& sto, std::vector < std::string >& result_o, std::vector < std::string >& result_t, std::vector < std::string >& stat_o, std::vector < std::string >& stat_t ) { std::fstream plik; plik.open( "story.txt", std::ios::in ); if( !plik.good() ) { std::cout << "nie udalo sie otworzyc pliku" << std::endl; } std::string tekst; std::string stopper; std::string starter; starter = st; stopper = "***"; bool lookin = true; int look = 0; while( look == 0 ) { std::getline( plik, tekst ); if( !( std::string::npos == tekst.find( starter ) ) ) { std::cout << "found it!" << std::endl; while( tekst != stopper ) { std::getline( plik, tekst ); if( tekst == "+++" ) { do { std::getline( plik, tekst ); sto.push_back( tekst ); std::cout << "gettin the story!" << std::endl; } while( tekst != "---" ); } if( tekst == "---" ) { std::getline( plik, tekst ); opt_o = tekst; std::getline( plik, tekst ); opt_t = tekst; } if( tekst == "#" ) { do { std::getline( plik, tekst ); result_o.push_back( tekst ); } while( tekst != "##" ); } if( tekst == "##" ) { do { std::getline( plik, tekst ); result_t.push_back( tekst ); } while( tekst != "$" ); } if( tekst == "$" ) { do { std::getline( plik, tekst ); stat_o.push_back( tekst ); } while( tekst != "$$" ); } if( tekst == "$$" ) { do { std::getline( plik, tekst ); stat_t.push_back( tekst ); } while( tekst != stopper ); } if( tekst == stopper ) { sto.pop_back(); result_o.pop_back(); result_t.pop_back(); stat_o.pop_back(); stat_t.pop_back(); lookin = false; look = 1; } } } else { std::cout << "ERROR couldn't find the story nb" << std::endl; } } plik.close(); }
|
|
pekfos |
» 2018-08-14 18:53:32 LookFor( st_number, opt_one, opt_two, story, result_one, result_two, stats_one, stats_two ); story_count =( int( story.size() / 2 ) );
|
Rośnie bez przerwy, bo bez przerwy wywołujesz LookFor(), które dodaje dane do wektorów bez ich uprzedniego wyczyszczenia. |
|
Wolfff Temat założony przez niniejszego użytkownika |
» 2018-08-14 20:10:42 Wiem dlaczego rośnie, ale nie wiem jak przestać wywoływać LookFor(). Czy chodzi Ci o to żebym w LookFor() na początku czyścił wszystkie zmienne? To jest problemem? |
|
pekfos |
» 2018-08-14 20:22:16 Czyli wcześniej podałeś co najmniej jedną fałszywą informację. ale nie wiem jak przestać wywoływać LookFor(). |
Jakoś sobie poradziłeś ze zmiennymi bool, by zacząć wywoływać tę funkcję, czemu by nie dodać kolejnej by wywoływała się tylko raz? |
|
Wolfff Temat założony przez niniejszego użytkownika |
» 2018-08-14 23:55:29 Nie podałem żadnej fałszywej informacji. Wiem dlaczego rośnie, jest to raczej oczywiste, nie wiem dlaczego się zapętla funckja LookFor(). Mam już tyle zmiennych bool że kod staje się ciężki do przeczytania ale masz rację, kolejna zmienna tego typu o dziwo pomogła. Jak zwykle pomoc dostarczona w kąśliwy sposób, niemniej jestem bardzo wdzięczny. Dzięki. |
|
1 « 2 » |