Aidez-moi a comprendre cette fonction.

Fermé
Cute0112 Messages postés 3 Date d'inscription vendredi 3 mai 2013 Statut Membre Dernière intervention 7 mai 2013 - 3 mai 2013 à 17:31
Cute0112 Messages postés 3 Date d'inscription vendredi 3 mai 2013 Statut Membre Dernière intervention 7 mai 2013 - 5 mai 2013 à 09:49
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.

1 réponse

e666 Messages postés 458 Date d'inscription jeudi 23 août 2012 Statut Membre Dernière intervention 2 août 2014 175
3 mai 2013 à 18:04
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 458 Date d'inscription jeudi 23 août 2012 Statut Membre Dernière intervention 2 août 2014 175
3 mai 2013 à 18:05
Tu n'écriras donc pas le code de la source angrybirds avec cette fonction ^^
0
Cute0112 Messages postés 3 Date d'inscription vendredi 3 mai 2013 Statut Membre Dernière intervention 7 mai 2013
5 mai 2013 à 09:49
Je ne me suis pas bien exprimee. J ai besoin de cette fonction pour stocker les scores et les noms des joueurs.
0