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

[Allegro,C++] Wpisywanie nicku gracza. Różne czcionki w Allegro.

Ostatnio zmodyfikowano 2010-09-28 17:36
Autor Wiadomość
Mateusz124
Temat założony przez niniejszego użytkownika
[Allegro,C++] Wpisywanie nicku gracza. Różne czcionki w Allegro.
» 2010-09-27 18:16:20
Witam wszystkich,
Mam dwa pytania.
1. Czy w Allegro istnieje możliwość zrobienia pola do wpisywania tekstu aby gracz mógł wpisać tam swój Nick.
2. Jak w Allegro można używać innej czcionki niż domyślna.
Z góry dziękuje za odpowiedź.
P-22415
McAffey
» 2010-09-27 18:30:45
Nie znam bardzo dobrze allegro, ale co do :
1 - sam kiedyś napisałem coś takiego w allegro, nie jest to skomplikowane więc też możesz spróbować
2 - nie wiem, sam nigdy nie używałem
P-22416
szyx_yankez
» 2010-09-27 18:35:30
1.W allego nie ma(chociarz można by się kłucić bo w Allegro Gui jest, ale to inna sprawa),
Jednak ja sobie pisałem, taką funkcję jakiś czas temu, bardzo efektowna mi wyszła.

C/C++
//*.hpp
//clas GUI
//{
struct textbox
{
    int x;
    int y;
    std::string text;
    BITMAP * bmp;
    BITMAP * buf;
    void show();
   
    int iter;
    int wsk;
    int _time;
    bool active;
   
   
    textbox( int cx, int cy, BITMAP * cbmp )
        : x( cx )
        , y( cy )
        , bmp( cbmp )
        , buf( create_bitmap( 106, 21 ) )
        , iter( 0 )
        , wsk( false )
        , _time( 0 )
        , active( true )
    { }
   
   
   
};
//}

//*.plik cpp
void GUI::textbox::show()
{
    clear_to_color( buf, makecol( 255, 233, 255 ) );
    if( active )
    {
        while( keypressed() )
        {
            if( !key[ KEY_BACKSPACE ] )
            {
                text += readkey();
                iter++;
            } else
            {
                iter--;
                if( iter < 0 ) iter = 0;;
                text.erase( iter, iter + 1 );
                clear_keybuf();
            }
           
           
        }
       
        if( clock() - 600 > _time )
        {
            _time = clock();
            wsk =!wsk;
        }
        if( wsk )
        {
            if( iter < 13 )
                 vline( buf, iter * 8 + 2, 2, 18, makecol( 0, 0, 0 ) );
            else
                 vline( buf, 13 * 8 - 1, 2, 18, makecol( 0, 0, 0 ) );
           
        }
        if( iter < 13 )
             textout_ex( buf, font, text.c_str(), 2, 7, makecol( 0, 256, 0 ), - 1 );
        else
             textout_ex( buf, font, text.c_str(), -(( iter - 13 ) * 8 ), 7, makecol( 0, 256, 0 ), - 1 );
       
        hline( buf, 0, 0, 105, makecol( 0, 0, 0 ) );
        hline( buf, 0, 20, 105, makecol( 0, 0, 0 ) );
        vline( buf, 0, 0, 20, makecol( 0, 0, 0 ) );
        vline( buf, 105, 0, 20, makecol( 0, 0, 0 ) );
    }
    blit( buf, bmp, 0, 0, x, y, 106, 21 );
   
}

// przyklad użycia

GUI::textbox tb( 300, 300, buffer ); //nadajemy parametry
//while(){
tb.Show();
//}
Funkcja daje Ci możliwość wczytywania, tekstu do zmiennej typu string. Nie jest dokończona, mianowicie brakuje, takiego czegoś jak tak zwanego "aktywności pola", tzn. że jeżeli kliknjemy w ramke do wpisywania to możemy pisać, jak obok to wpisywanie staje się zablokowane, możesz sobie to dopisać, masz juz nawet zmienną do tego: active.
2.Zapoznaj się z AllegroFont.
P-22418
dmx81
» 2010-09-27 18:48:40
zgadza sie,
1 - mozesz sam napisac funkcje rysujaca pole (jakas bitmapa - prostokat o kolorze bialym na np prostokacie minimalnie wiekszym pod spodem, o innym kolorze dla kontrastu) + funkcja wypisujaca tekst "na biezaco"
2 - dokumentacja na allegro.cc lub chyba byl artykul na tym forum
P-22423
ison
» 2010-09-27 20:17:09
dla początkującego może i nie jest to rzecz łatwa (chodzi mi tu o editboxa) ale nie aż taka straszna
tzn, pole do wpisywania, wybieranie motywu, zmiana koloru czcionki, kursor, zaznaczanie tekstu, mozliwosc kopiowania i wklejania tekstu - zajęło mi 400 linii. Bibliotekę udostępnię jak będę miał czas dokończyć dokumentację ;P (gratis w bibliotece znajduje się kontrolka button -> obie kontrolki są banalne w użyciu - zwłaszcza dla początkującego)

co do drugiego zapytania:
C/C++
FONT * MyFont;
C/C++
load_font
C/C++
textprintf_ex( bufor, MyFont, 0, 0, makecol( 0, 0, 0 ), - 1, "Text!" );
czcionka musi mieć format .pcx, Allegro gdzieś tam udostępnia program zamieniający standardowe czcionki na .pcx - jak nie będziesz mógł tego znaleźć to udostępnię
P-22434
Mateusz124
Temat założony przez niniejszego użytkownika
» 2010-09-28 17:36:16
Dzięki ison,
Sposób który podałeś do wczytywania czcionek działa.
P-22458
« 1 »
  Strona 1 z 1