lord anubis
Messages postés12Date d'inscriptionvendredi 10 février 2006StatutMembreDernière intervention 9 mars 2006
-
21 févr. 2006 à 19:11
xboxut
Messages postés172Date d'inscriptionjeudi 4 mars 2004StatutMembreDernière intervention27 novembre 2009
-
22 févr. 2006 à 11:53
Salut, comme vous l'avez certainement compris, je cherche une fonction, sous allegro, qui permette à l'utilisateur de saisir des données, traitable par le programme.
Merci d'avance.
xboxut
Messages postés172Date d'inscriptionjeudi 4 mars 2004StatutMembreDernière intervention27 novembre 20091 22 févr. 2006 à 11:52
salut, voici un code d exmple fonctionnel qu'on m a fait lorsque j apprenais allegro sur allegro.cc,les crédits vont a 23yrold3yrold le post original est la :http://www.allegro.cc/forums/thread/371808
// all variables are here
BITMAP* buffer = create_bitmap(320, 240); // initialize the double buffer
string edittext; // an empty string for editting
string::iterator iter = edittext.begin(); // string iterator
int caret = 0; // tracks the text caret
bool insert = true; // true of should text be inserted
// the game loop
do
{
while(keypressed())
{
int newkey = readkey();
char ASCII = newkey & 0xff;
char scancode = newkey >> 8;
// a character key was pressed; add it to the string
if(ASCII >= 32 && ASCII <= 126)
{
// add the new char, inserting or replacing as need be
if(insert || iter == edittext.end())
iter = edittext.insert(iter, ASCII);
else
edittext.replace(caret, 1, 1, ASCII);
// increment both the caret and the iterator
caret++;
iter++;
}
// some other, "special" key was pressed; handle it here
else
switch(scancode)
{
case KEY_DEL:
if(iter !edittext.end()) iter edittext.erase(iter);
break;
case KEY_BACKSPACE:
if(iter != edittext.begin())
{
caret--;
iter--;
iter = edittext.erase(iter);
}
break;
case KEY_RIGHT:
if(iter != edittext.end()) caret++, iter++;
break;
case KEY_LEFT:
if(iter != edittext.begin()) caret--, iter--;
break;
case KEY_INSERT:
if(insert) insert 0; else insert 1;
break;