Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[Allegro, C++] Wyświetlanie tekstu

Ostatnio zmodyfikowano 2010-06-20 21:40
Autor Wiadomość
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ę !
C/C++
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.
P-18179
michalp
» 2010-06-20 15:30:46
Poczytaj o printf, zwróć uwagę na znaczniki. Teraz przeczytaj o texprintf_ex i powinno ci wystarczyć.
P-18181
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.
P-18182
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).
P-18183
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ę !
P-18190
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:
C/C++
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 );
}

// Funkcja 'Odczytaj'
bool Odczytaj( int read_char, std::string & str, int MAX_LENGTH )
{
    if( str.length() < MAX_LENGTH )
    {
        // Backspace 
        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 :).
P-18192
« 1 »
  Strona 1 z 1