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ź. |
|
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 |
|
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.
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 ) { } };
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 ); }
GUI::textbox tb( 300, 300, buffer );
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. |
|
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 |
|
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: 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ę |
|
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. |
|
« 1 » |