Aidez-moi a comprendre cette fonction.

Cute0112 Messages postés 3 Date d'inscription   Statut Membre Dernière intervention   -  
Cute0112 Messages postés 3 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
je suis débutante en programmation. Je voudrais comprendre ce que fait cette fonction. Je ne comprends pas.
je dois écrire le code de la source angrybirds en utilisant cette fonction.
Merci d 'avance.

Voici cette fonction.

typedef enum {
TEXT_FINISHED,
TEXT_CHANGED,
TEXT_UNCHANGED
} InputStatus;
Window win3;

typedef struct {
int type; /* Expose, ButtonPress, etc */
Window win; /* Identifiant de la fenetre */
int mx, my; /* Coordonnees souris */
int mb; /* Numero bouton de la souris, 0=aucun */
int width, height; /* Largeur et hauteur */
KeySym key_sym; /* Symbole touche : XK_Space, XK_q, etc */
char key_name[80]; /* Pour affichage : "XK_Space", "XK_q", .. */
char key_string[80]; /* Chaine correspondante : " ", "q", etc */
int key_count; /* Taille de la chaine */
} Ez_event;



InputStatus input_text (Ez_event *ev, char *text, int max_size)
{
int i;

switch (ev->key_sym) {

case XK_BackSpace : /* Touche backspace */
i = strlen (text);
if (i == 0) break;
text[i - 1] = '\0';
return TEXT_CHANGED;

case XK_Return : /* Touche Entree */
return TEXT_FINISHED;

default : /* Insertion d'un caractere */
if (ev->key_count != 1) break;
i = strlen (text);
if (i >= max_size - 1) break;
text[i] = ev->key_string[0]; text[i + 1] = '\0';
return TEXT_CHANGED;
}
return TEXT_UNCHANGED;
}

Je vous remercie d'avance.
A voir également:

1 réponse

e666 Messages postés 470 Date d'inscription   Statut Membre Dernière intervention   175
 
Bonjour,

Alors tout d'abord que veux-tu dire par code de la source d'angrybirds?
Tu sais ce n'est pas simple du tout de faire un jeu. Je te conseille par commencer par apprendre comment fonctionne un langage.
Ce que tu as posté comporte plusieurs choses.
Tout d'abord, cette enum :
typedef enum {
TEXT_FINISHED,
TEXT_CHANGED,
TEXT_UNCHANGED
} InputStatus; 

Donne TEXT_FINISHED = 0
TEXT_CHANGED=1
TEXT_UNCHANGED=2.
Ce sont des variables que tu peux donc utiliser elles seront remplacées par leur valeur dans le programme.
typedef struct {
int type; /* Expose, ButtonPress, etc */
Window win; /* Identifiant de la fenetre */
int mx, my; /* Coordonnees souris */
int mb; /* Numero bouton de la souris, 0=aucun */
int width, height; /* Largeur et hauteur */
KeySym key_sym; /* Symbole touche : XK_Space, XK_q, etc */
char key_name[80]; /* Pour affichage : "XK_Space", "XK_q", .. */
char key_string[80]; /* Chaine correspondante : " ", "q", etc */
int key_count; /* Taille de la chaine */
} Ez_event; 

Ce code te définit une structure Ez_event.
On en arrive donc à la fonction
InputStatus input_text (Ez_event *ev, char *text, int max_size)
{
int i;

switch (ev->key_sym) {

case XK_BackSpace : /* Touche backspace */
i = strlen (text);
if (i == 0) break;
text[i - 1] = '\0';
return TEXT_CHANGED;

case XK_Return : /* Touche Entree */
return TEXT_FINISHED;

default : /* Insertion d'un caractere */
if (ev->key_count != 1) break;
i = strlen (text);
if (i >= max_size - 1) break;
text[i] = ev->key_string[0]; text[i + 1] = '\0';
return TEXT_CHANGED;
}
return TEXT_UNCHANGED;
} 

Elle prend en paramètres un pointeur vers une structure Ez_event (la structure déclarée au dessus), une chaine de caractères reprsentant le texte et un entier max_size.
La fonction retourne donc TEXT_CHANGED si l'utilisateur appuie sur la touche retour arrière ou écrit un caractère.
TEXT_FINISHED si l'utilisateur appuie sur entrée.
Sinon ça renvoie TEXT_UNCHANGED.
0
e666 Messages postés 470 Date d'inscription   Statut Membre Dernière intervention   175
 
Tu n'écriras donc pas le code de la source angrybirds avec cette fonction ^^
0
Cute0112 Messages postés 3 Date d'inscription   Statut Membre Dernière intervention  
 
Je ne me suis pas bien exprimee. J ai besoin de cette fonction pour stocker les scores et les noms des joueurs.
0