Jeux de mots avec flash

Signaler
Messages postés
10
Date d'inscription
mercredi 2 février 2005
Statut
Membre
Dernière intervention
12 février 2005
-
Messages postés
10
Date d'inscription
mercredi 2 février 2005
Statut
Membre
Dernière intervention
12 février 2005
-
bonjour a tous

je suis en train de m'initier a la programmation sous flash en faisant
des petits jeux de lettres pour mon amie qui est orthophoniste.

un des jeux est de masquer des mots de 2 (jusqu'a 9) lettres. j'ai mis au point un petit moteur

qui me permet de le faire mais j'en suis vraiment pas satisfait,
il est lourd et de plus il ne respecte pas la disposition du texte
d'origine, par ex :



Le chat est dans la cuisine.



Il ne pense qu'a manger !



devient avec la fonction masquer les mot de 2 lettres:



_ _ chat est dans _
_ cuisine . _ _ _ _
pense _ _ ' a manger _ chat est dans _
_ cuisine . _ _ _ _
pense _ _ ' a manger



ca m'a bouffer le paragraphe et virer le point d'exclamation, pas top tout ca.



voila!ce que j'ai reussi a faire atteint les limites de mes capacités actuelles et je n'arrive pas a aller plus loin.

si vous avez des idées elles seront les bienvenues.



merci

10 réponses

Messages postés
140
Date d'inscription
mardi 26 août 2003
Statut
Membre
Dernière intervention
20 mars 2005

Salut,
Je te donnes mon avis ...
J'aurais pris le problème dans l'autre sens ...
Tu fais un trait correspondant aux lettres manquantes dans ta phrase (un clip représentant : _ )
Tu en disposes sur un clip A correspondant à la phrase 1.
Tu mets toutes les lettres de ta phrase et tu met un masque uniquement sur les lettres visibles.
Ensuite lors de l'affichage du résulatt, tu n'as plus qu'à ajouter un masque sur les lettres cachées et faire disparaître les _.

Voilà comment je prendrais le problème ... et tu aurais quelque chose de"light"

Edwige
Messages postés
10
Date d'inscription
mercredi 2 février 2005
Statut
Membre
Dernière intervention
12 février 2005

ce serait effectivement la bonne solution si le texte reste statique mais la ce n'est pas le cas .

travaillant avec des enfants elle a besoin de taper son texte comme ca
lui vient, donc en fait la fonction s'applique sur du texte de saisie.

merci pour ta reponse
Messages postés
764
Date d'inscription
lundi 21 juin 2004
Statut
Membre
Dernière intervention
5 février 2010

Tu peux utiliser un split pour scinder ta chaîne en différentes phrases pour chaque ligne.
Puis tu appliques ton code. Mais je t'avoue que c'est plutôt obscur ton expliqation. Si tu pouvais mettre le code en ligne ça serait pas, on pourait plus t'aider.
@+ !

À tout problème réside une solution. Si il n'y a pas de solution, c'est qu'il y a un problème.
Messages postés
10
Date d'inscription
mercredi 2 février 2005
Statut
Membre
Dernière intervention
12 février 2005

ok je vais essayer d'etre un peu plus clair...

le programme dans son concept est assez simple, mon amie tape le texte
a faire travailler devant l'enfant puis ensuite masque les mots de 2
lettres ou plus , afin que l'enfant puisse reconstituer le

texte avec les mots manquants.

je vous copie la fonction que j'ai mis quelques jours a mettre
au point et qui est un peu lourdingue parce que je suis un peu novice
en la matiere, donc ne soyez pas trop dur avec moi.



masque = function (remplace,nombre) {

if (_root.entree.text !== "") {

// fonction 2 mots

// trouve retour

espace = "";

txt = _root.entree.text;

tab = txt.split("\r");

for (n=0; n<tab.length; n++) {

if (tab[n] == "") {

espace = espace+" ";

} else {

espace = espace+" "+tab[n];

}

}

// trouve point

point = "";

tab = espace.split(".");

for (n=0; n<tab.length; n++) {

if (tab[n] == "") {

point = point+" ";

} else {

point = point+" . "+tab[n];

}

}

// trouve virgule

virgule = "";

tab = point.split(",");

for (n=0; n<tab.length; n++) {

if (tab[n] == "") {

virgule = virgule+" ";

} else {

virgule = virgule+" , "+tab[n];

}

}

// trouve pointvirgule

pointvirgule = "";

tab = virgule.split(";");

for (n=0; n<tab.length; n++) {

if (tab[n] == "") {

pointvirgule = pointvirgule+" ";

} else {

pointvirgule = pointvirgule+" ; "+tab[n];

}

}

// trouve deuxpoint

deuxpoint = "";

tab = pointvirgule.split(":");

for (n=0; n<tab.length; n++) {

if (tab[n] == "") {

deuxpoint = deuxpoint+" ";

} else {

deuxpoint = deuxpoint+" : "+tab[n];

}

}

// trouve exclamation

exclamation = "";

tab = deuxpoint.split("!");

for (n=0; n<tab.length; n++) {

if (tab[n] == "") {

exclamation = exclamation+" ";

} else {

exclamation = exclamation+" ! "+tab[n];

}

}

// trouve interrogation

interrogation = "";

tab = exclamation.split("?");

for (n=0; n<tab.length; n++) {

if (tab[n] == "") {

interrogation = interrogation+" ";

} else {

interrogation = interrogation+" ? "+tab[n];

}

}

// trouve apostrophe

apostrophe = "";

tab = interrogation.split("'");

for (n=0; n<tab.length; n++) {

if (tab[n] == "") {

apostrophe = apostrophe+" ";

} else {

apostrophe = apostrophe+" ' "+tab[n];

}

}

// trouve tiret

tiret = "";

tab = apostrophe.split("-");

for (n=0; n<tab.length; n++) {

if (tab[n] == "") {

tiret = tiret+" ";

} else {

tiret = tiret+" - "+tab[n];

}

}

// trouve parenthese

parenthese = "";

tab = tiret.split("(");

for (n=0; n<tab.length; n++) {

if (tab[n] == "") {

parenthese = parenthese+" ";

} else {

parenthese = parenthese+" ( "+tab[n];

}

}

// trouve parenthesed

parenthesed = "";

tab = parenthese.split(")");

for (n=0; n<tab.length; n++) {

if (tab[n] == "") {

parenthesed = parenthesed+" ";

} else {

parenthesed = parenthesed+" ) "+tab[n];

}

}

// trouve guillemet

guillemet = "";

tab = parenthesed.split(""");

for (n=0; n<tab.length; n++) {

if (tab[n] == "") {

guillemet = guillemet+" ";

} else {

guillemet = guillemet+" " "+tab[n];

}

}

// trouve guillemets

guillemets = "";

tab = guillemet.split("&");

for (n=0; n<tab.length; n++) {

if (tab[n] == "") {

guillemets = guillemets+" ";

} else {

guillemets = guillemets+" & "+tab[n];

}

}

// trouve pourcent

pourcent = "";

tab = guillemets.split("%");

for (n=0; n<tab.length; n++) {

if (tab[n] == "") {

pourcent = pourcent+" ";

} else {

pourcent = pourcent+" % "+tab[n];

}

}

tab = pourcent.split(" ");

for (var i = 0; i<tab.length; i++) {

if (tab[i].length == nombre) {

tab[i] = remplace;

}

}

_root.entree.text = tab.join(" ");

// reinialise point

var enlvpoint = " . ";

var replace = "";

var pos = _root.entree.text.indexOf(enlvpoint);

var debpoint = _root.entree.text.substr(0, pos);

var finpoint = _root.entree.text.substr(pos+enlvpoint.length);

_root.entree.text = debpoint+replace+finpoint;

// reinitialise virgule

var enlvpoint = " , ";

var replace = "";

var pos = _root.entree.text.indexOf(enlvpoint);

var debpoint = _root.entree.text.substr(0, pos);

var finpoint = _root.entree.text.substr(pos+enlvpoint.length);

_root.entree.text = debpoint+replace+finpoint;

// reinitialise pointvirgule

var enlvpoint = " ; ";

var replace = "";

var pos = _root.entree.text.indexOf(enlvpoint);

var debpoint = _root.entree.text.substr(0, pos);

var finpoint = _root.entree.text.substr(pos+enlvpoint.length);

_root.entree.text = debpoint+replace+finpoint;

// reinitialise pointvirgule

var enlvpoint = " : ";

var replace = "";

var pos = _root.entree.text.indexOf(enlvpoint);

var debpoint = _root.entree.text.substr(0, pos);

var finpoint = _root.entree.text.substr(pos+enlvpoint.length);

_root.entree.text = debpoint+replace+finpoint;

// reinitialise pointvirgule

var enlvpoint = " ! ";

var replace = "";

var pos = _root.entree.text.indexOf(enlvpoint);

var debpoint = _root.entree.text.substr(0, pos);

var finpoint = _root.entree.text.substr(pos+enlvpoint.length);

_root.entree.text = debpoint+replace+finpoint;

// reinitialise pointvirgule

var enlvpoint = " ? ";

var replace = "";

var pos = _root.entree.text.indexOf(enlvpoint);

var debpoint = _root.entree.text.substr(0, pos);

var finpoint = _root.entree.text.substr(pos+enlvpoint.length);

_root.entree.text = debpoint+replace+finpoint;

// reinitialise pointvirgule

var enlvpoint = " ' ";

var replace = "";

var pos = _root.entree.text.indexOf(enlvpoint);

var debpoint = _root.entree.text.substr(0, pos);

var finpoint = _root.entree.text.substr(pos+enlvpoint.length);

_root.entree.text = debpoint+replace+finpoint;

// reinitialise pointvirgule

var enlvpoint = " - ";

var replace = "";

var pos = _root.entree.text.indexOf(enlvpoint);

var debpoint = _root.entree.text.substr(0, pos);

var finpoint = _root.entree.text.substr(pos+enlvpoint.length);

_root.entree.text = debpoint+replace+finpoint;

// reinitialise pointvirgule

var enlvpoint = " ( ";

var replace = "";

var pos = _root.entree.text.indexOf(enlvpoint);

var debpoint = _root.entree.text.substr(0, pos);

var finpoint = _root.entree.text.substr(pos+enlvpoint.length);

_root.entree.text = debpoint+replace+finpoint;

// reinitialise pointvirgule

var enlvpoint = " ) ";

var replace = "";

var pos = _root.entree.text.indexOf(enlvpoint);

var debpoint = _root.entree.text.substr(0, pos);

var finpoint = _root.entree.text.substr(pos+enlvpoint.length);

_root.entree.text = debpoint+replace+finpoint;

// reinitialise pointvirgule

var enlvpoint = " " ";

var replace = "";

var pos = _root.entree.text.indexOf(enlvpoint);

var debpoint = _root.entree.text.substr(0, pos);

var finpoint = _root.entree.text.substr(pos+enlvpoint.length);

_root.entree.text = debpoint+replace+finpoint;

// reinitialise pointvirgule

var enlvpoint = " & ";

var replace = "";

var pos = _root.entree.text.indexOf(enlvpoint);

var debpoint = _root.entree.text.substr(0, pos);

var finpoint = _root.entree.text.substr(pos+enlvpoint.length);

_root.entree.text = debpoint+replace+finpoint;

// reinitialise pointvirgule

var enlvpoint = " % ";

var replace = "";

var pos = _root.entree.text.indexOf(enlvpoint);

var debpoint = _root.entree.text.substr(0, pos);

var finpoint = _root.entree.text.substr(pos+enlvpoint.length);

_root.entree.text = debpoint+replace+finpoint;



var enlvpoint = " ";

var replace = "";

var pos = _root.entree.text.indexOf(enlvpoint);

var debpoint = _root.entree.text.substr(0, pos);

var finpoint = _root.entree.text.substr(pos+enlvpoint.length);

_root.entree.text = debpoint+replace+finpoint;

}



}

ouff!!

voila le pavé !! ca marche pour ce qui est de trouver et de remplacer
mais c'est long et la mise en page du texte d'origine n'est pas
respectée.

j'espere que c'est un peu plus clair.
Messages postés
88
Date d'inscription
dimanche 22 février 2004
Statut
Membre
Dernière intervention
1 mars 2006

En effet c'est un peu "bourrin" ta methode ! J'ai réfléchi à un truc plus simple, à toi de me dire si ca te convient:

(je suppose que remplace correspond au caractère à mettre lorsque qu'un mot doit etre caché, soit _ ici)




masque = function (remplace,nombre)

{

var taille=0; //taille d'un mot

var i,j;

var chaine:Array=new Array();

for (i=0;i<_root.entree.text.length;i++)

{

//transforme la chaine en tableau

chaine[i]=_root.entree.text.charAt(i);

//test si c'est un caractère "alphabetique" de a à z et de A à Z

if
((chaine[i]>='a' && chaine[i]<='z')||(chaine[i]>='A'
&& chaine[i]<='Z'))

taille++;

else

{

if (taille==nombre)

{

//remplace

for (j=taille;j>0;j--)



chaine[i-j]=remplace;

}

taille=0;

}

}

//refait un test si la chaine se finie par un mot a cacher

if (taille==nombre)

{

for (j=taille;j>0;j--)

chaine[i-j]=remplace;

}

_root.entree.text="";

//on remet dans le text de depart

for (i=0;i<chaine.length;i++)

_root.entree.text+=chaine[i];

}





voila normalement ca doit etre bcp bcp plus léger que ton code.



Hory
Messages postés
88
Date d'inscription
dimanche 22 février 2004
Statut
Membre
Dernière intervention
1 mars 2006

....dsl pour la taille et l'indentation, j'ai pas fait gaffe à la taille !
Messages postés
10
Date d'inscription
mercredi 2 février 2005
Statut
Membre
Dernière intervention
12 février 2005

en effet c'est beaucoup plus leger !!

je vais le regarder pour essayer de le comprendre un peu plus, je me
disais bien qu'il y avait surement une approche au niveaux des tableaux
mais je manque de vocabulaire actionscript pour formuler tout ca.

bon j'epluche ton code, je le test et je te tiens au courant



merci pour ton aide



@+
Messages postés
10
Date d'inscription
mercredi 2 février 2005
Statut
Membre
Dernière intervention
12 février 2005

ca marche nickel !!!

la saisie du texte est respectée, et de plus j'ai appris pas mal de
choses en essayant de comprendre ton code, il ne me reste plus qu'a lui
faire prendre en compte les lettres avec des accents et ca devrait
rouler.

encore merci



eric
Messages postés
88
Date d'inscription
dimanche 22 février 2004
Statut
Membre
Dernière intervention
1 mars 2006

Ok c cool ^^



Pour ce qui est des lettres accentuées il faut que tu les ajoutes à la condition comme ca:

if
((chaine[i]>='a' && chaine[i]<='z')||(chaine[i]>='A'
&& chaine[i]<='Z')||'é'||'è')

et normalement ca devrait rouler !



Hory
Messages postés
10
Date d'inscription
mercredi 2 février 2005
Statut
Membre
Dernière intervention
12 février 2005

comme sur des roulettes !!

tout marche c'est vraiment cool



merci et bonne journée