Whytek Temat założony przez niniejszego użytkownika |
[Allegro, C++] Wyświetlanie tekstu » 2010-06-20 15:02:14 Witam serdecznie, mam problem z wyświetlaniem wartości zmiennej (przeliczanej w pętli) w oknie tworzonym przez allegro. Otóż - po prostu nie wiem jak to zrobić, szukałem w dokumentacji, ale albo czegoś nie rozumiem, albo jakąś informację tam zawartą pominąłem. Funkcja fun_x ma przeliczać wartość f(x) zadanej: ampX*sin(parA*t+delta), która to zależy od parametru t. Chodzi o to, żeby w oknie allegro wyświetlało mi na bieżąco tę zmianę, która zachodzi w pętli. Z góry dziękuję ! float fun_x( float parA, float ampX, float t, float delta, float dt ) { float ret_x; dt = 0.1f; ampX = 100.0f; parA = 100.0f; delta = 100.0f; for( t = 0.0f; t < 1000.0f; t += dt ) { ret_x = ampX * sin( parA * t + delta ); textprintf_ex( screen, font, 10, 10, makecol( 255, 100, 200 ), - 1, "F(x)= ", ret_x ); } } EDIT: chyba jednak coś przelicza, dodałem analogiczną funkcję dla y (ogólnie mam zamiar rysować tym programem figury Lissajous), ale zdaje się, że tekst jest po prostu niewidoczny. |
|
michalp |
» 2010-06-20 15:30:46 Poczytaj o printf, zwróć uwagę na znaczniki. Teraz przeczytaj o texprintf_ex i powinno ci wystarczyć. |
|
Whytek Temat założony przez niniejszego użytkownika |
» 2010-06-20 15:41:24 Brak doświadczenia robi swoje ;). Dzięki, jednak pojawił się kolejny problem pt. nakładanie się tychże cyferek w okienku. |
|
michalp |
» 2010-06-20 16:02:34 Musisz "czyścić" bitmapę na której rysujesz. Poczytaj tym razem o clear_to_color (czy czymś podobnym). |
|
Whytek Temat założony przez niniejszego użytkownika |
» 2010-06-20 20:56:16 Ok, program w połowie kompletny, jednak teraz pojawił się problem z wczytywaniem wartości liczbowych z klawiatury. Jak to zrobić w allegro ? Najlepiej, żeby działało to na podobnej zasadzie co cin>> ? Jedyne rozwiązania jakie znalazłem do tej pory wydają się być zbyt skomplikowane w użyciu dla kogoś tak niezaawansowanego jak ja ; ). Z góry dziękuję ! |
|
malan |
» 2010-06-20 21:40:28 Na Naszym forum panuje zasada: Jeden problem = jeden temat
|
Wczytywanie znaków nie dotyczy wyświetlania tekstu w Allegro, więc... :). Moja stara funkcja odczytująca znaki: while( !key[ KEY_ENTER ] ) { OdczytajZnak = readkey(); Odczytaj( OdczytajZnak, TymczasowyLog, 39 ); textprintf_ex( , font, 232, 245, makecol( 0, 0, 0 ), - 1, "%s", TymczasowyLog.c_str() ); blit( , screen, 0, 0, 0, 0, Log_Bufor->w, Log_Bufor->h ); }
bool Odczytaj( int read_char, std::string & str, int MAX_LENGTH ) { if( str.length() < MAX_LENGTH ) { if( read_char == 16136 && str.length() > 0 ) { str = str.substr( 0, str.length() - 1 ); return false; } std::string check; check = read_char; if( static_cast < int >( check[ 0 ] ) >= 32 && static_cast < int >( check[ 0 ] ) <= 127 ) { if( static_cast < int >( check[ 0 ] ) == 59 ) read_char = 32; str += read_char; return true; } } return false; }; Temat zamykam. Jeżeli będziesz miał problemy z tą funkcją skorzystaj z wyszukiwarki (temat był wałkowany kilka razy) lub załóż nowy temat :). |
|
« 1 » |