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

[Allegro ] Instrukcja wejścia (cin)

Ostatnio zmodyfikowano 2009-07-25 12:50
Autor Wiadomość
DejaVu
» 2009-07-20 21:44:46
To co podałeś to jest instrukcja do wypisywania na ekran.
textprintf_ex(..., "%s %d %f", napis, liczbaInt, liczbaFloat );

O tym temacie myślałem wcześniej: http://forum.ddt.pl/?Tid=638&p=1.
Może pomoże Ci również temat: http://forum.ddt.pl/?Tid=1074.
P-8613
kaxm
Temat założony przez niniejszego użytkownika
» 2009-07-20 21:47:38
no tak ale da sie to wykorzystac tak np.
jak w c++ bym to napisal :

string wyraz;
cout<<"podaj wyraz";
cin>>wyraz;
to moge to zapisac za pomoca tego textprintf_ex?
 
P-8614
kaxm
Temat założony przez niniejszego użytkownika
» 2009-07-20 21:53:22
ok juz teraz wiem. dziekuje :)
P-8616
kaxm
Temat założony przez niniejszego użytkownika
» 2009-07-24 21:28:46
Na szczescie juz poradzilem sobie z instrukcja wejscia w allegro(znalazlem na jakiejs stronce kod, ktory uproscilem i dziala) oto on:


C/C++
#include <allegro.h>
#include <iostream>
#include <vector>
#include <iostream>
#include <conio.h>

using namespace std;
#define WHITE  makecol(150,0,0)
int main()
{
    allegro_init();
    install_keyboard();
    set_color_depth( 16 );
    set_gfx_mode( GFX_AUTODETECT, 600, 400, 0, 0 );
    set_palette( default_palette );
    clear_to_color( screen, 0 );
    string wyraz;
   
    clear_to_color( screen, makecol( 202, 240, 70 ) );
   
    textout_ex( screen, font, "wyraz: ", 210, 210, makecol( 58, 77, 243 ), - 1 );
    wyraz = ' ';
    string::iterator iter = wyraz.begin();
    int caret = 0;
    bool insert = true;
    do
    {
        while( keypressed() )
        {
            int newkey = readkey();
            char ASCII = newkey & 0xff;
            char scancode = newkey >> 8;
            if( ASCII >= 32 && ASCII <= 126 )
            {
                if( insert || iter == wyraz.end() )
                     iter = wyraz.insert( iter, ASCII );
                else
                     wyraz.replace( caret, 1, 1, ASCII );
               
                caret++;
                iter++;
            } else
            switch( scancode )
            {
            case KEY_BACKSPACE:
                if( iter != wyraz.begin() )
                {
                    caret--;
                    iter--;
                    iter = wyraz.erase( iter );
                }
                break;
               
            }
        }
        textout( screen, font, wyraz.c_str(), 270, 210, WHITE );
    } while( !key[ KEY_ENTER ] );
   
    allegro_exit();
    return 0;
}
END_OF_MAIN();
Moje pytanie do tego: co trzeba dodac do kodu, żeby litery ktore wpisuje nie mialy tego czarnego tla(zeby bylo ono przezroczyste)???

A gdy uzyje tego zapisu:

textout_ex( screen, font, wyraz.c_str(), 270, 210, makecol( 150, 0, 0 ), - 1 );
to  wtedy gdy uzywa sie backspace'a to poprzednia litera zostaje a nowa sie na nia naklada i w efekcie wyraz jest strasznie nieczytelny
P-8758
DejaVu
» 2009-07-24 21:54:23
Czyść ekran za każdym razem.
P-8759
kaxm
Temat założony przez niniejszego użytkownika
» 2009-07-25 12:36:06
No oto chodzilo tylko to troche miga ale przynajmniej tlo jest przezroczyste i litery sie nie nakladaja :)
Dziekuje Panie Piotrze :P


o ale jednak znalazlem inne rozwiazanie i tym razem nie miga :P
zamaist czyscic ekran ustawilem kolor tla wyrazu taki sam jak kolor tla i dziala :)

textout_ex(screen,font,wyraz.c_str(),270,210,makecol(150,0,0),makecol(202,240,70));

P-8766
DejaVu
» 2009-07-25 12:50:16
Problem migania rozwiąż podwójnym buforowaniem.
P-8768
1 « 2 »
Poprzednia strona Strona 2 z 2