Creation roue de la fortune [Résolu]

Signaler
Messages postés
21
Date d'inscription
mardi 24 août 2004
Statut
Membre
Dernière intervention
2 mai 2005
-
Messages postés
14472
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
8 juillet 2020
-
bonjour
j aimerai créé une roue de la fortune (enfin quelque chose de similaire)
j ai d abord pensé a crée plusieur position de l aiguille comme pour une horloge et avant de continuer j ai fait des recherche sur le net pour trouver un code
mon plus gros probleme et de faire que quand on lance l aiguille qu elle fasse un nombre de tour (degrés) aleatoire

si quelqun a une piste ou quelquechose de proche qu il me previenne merci

21 réponses

Messages postés
149
Date d'inscription
vendredi 30 mai 2003
Statut
Membre
Dernière intervention
28 janvier 2011
2
Il faut mettre la bouton sur la scène avec le code suivant :
on(press){
MaFleche.onPress();
}
et ça marche... normalement
Messages postés
149
Date d'inscription
vendredi 30 mai 2003
Statut
Membre
Dernière intervention
28 janvier 2011
2
Hello,

je pense qu'il te manque un mc vide que j'utilise pour simuler la rotation de la fleche.

Ca evite d'écrire un type modulo qui fonctionne comme la rotation de -180 à 180.

Je t'ai deposé le fla à l'adresse suivante :

www.odv.ch/codeflash/cibleFleche.zip

j'espère que ça va foncitonner.

A plus,

adv
Messages postés
149
Date d'inscription
vendredi 30 mai 2003
Statut
Membre
Dernière intervention
28 janvier 2011
2
Hello,
je t'ai rapidement fait un petit exemple, mais très simple.
Tu peux le charger à l'adresse suivante :
http://www.autourdevinc.com/codeFlash/flecheTourne.zip
J'espère que ça t'aidera, à plus.
je ne peux pas accéder au site
Messages postés
14472
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
8 juillet 2020
420 > xeillfeurx
BONJOUR xeillfeurx. si si un peu de politesse ça ne fait jamais de mal...
C'était un lien, peut-être temporaire, partagé il y a 15 ans, tu t'attendais à quoi?

D'un autre coté, Flash est une technologie en voie de disparition, il serait peut-être judicieux de te mettre à autre chose (HTML 5, CSS, PHP, Javascript etc....)
Voir https://fr.wikipedia.org/wiki/Adobe_Flash

Je cite
... Adobe favorise une transition vers le HTML5 et sa mort définitive est annoncée pour 2020...
Messages postés
149
Date d'inscription
vendredi 30 mai 2003
Statut
Membre
Dernière intervention
28 janvier 2011
2
Je ne comprend pas exactement.
Ce que j'ai compris, la roue est divisée de 10 en 10, donc de 0 à 35. Une fois la fléche arretée, tu aimerais connaitre le no sur lequel elle est arretée.
Supposons que la case 0 soit à l'angle 0. (de >-5 degré et à <=5)
Flash fonctionne avec une rotation calculée de -180 à 180 et non pas de 0 à 360.
Bout de code :
angle = this._rotation;
if(angle<0){
angle = 360+angle;
}
angle -=5;
noCase = Math.round(angle/10);

C'est peut-être ça qu'il te faut, sinon j'ai rien compris et ça c'est fort probable.
A plus
Messages postés
149
Date d'inscription
vendredi 30 mai 2003
Statut
Membre
Dernière intervention
28 janvier 2011
2
Bonjour,
je pense que le plus simple est de se rapprocher de la réalité. C'est à dire de lancer la roue avec une certaine force et de simuler le frottement afin de la ralentir.
Cela ne devrait pas poser de problème, mais tout dépend à quelle étape de développement tu te trouves.
Affaire à suivre...
Messages postés
21
Date d'inscription
mardi 24 août 2004
Statut
Membre
Dernière intervention
2 mai 2005

bah j en suis a zero
comme je ne savais pas par ou commencer
enfin je vais partir sur mon idée d horloge
c a d : créer toutes les positions que je veux
ensuite reussir a faire tourner mon aiguille a une certaine vitesse
je pense ensuite faire une fonction qui changera la vitesse au hasard a chaque lancée

et terminer si c est possible par ta simulation de frottement (chose que j ai vu en faisant des recherche mais je ne vois aps comment ralentir ...) enfin je vais faire le debut je repasserai apres pour tenir informé
merci
Messages postés
21
Date d'inscription
mardi 24 août 2004
Statut
Membre
Dernière intervention
2 mai 2005

merci pour tout
c est exactement ce que je veux faire
je vais m appuyer sur ce que tu as fait
pour arriver a mes fins
;)
Messages postés
21
Date d'inscription
mardi 24 août 2004
Statut
Membre
Dernière intervention
2 mai 2005

enfait j ai pas fini mon programme
donc je continue ici
donc j ai rajouté des fioriture et changer plusieur valeur afin que comme la vitesse la deccelaration soit aleatoire .
j ai graduer le cercle de 0 a 99 et j aimerai avoir maintenant la valeur pointer par la fleche !
je pensais a prendre la position de ma fleche (mais je n ai pas encore trouver la commande) pour en deduire le chiffre
d autre pistes ?
Messages postés
149
Date d'inscription
vendredi 30 mai 2003
Statut
Membre
Dernière intervention
28 janvier 2011
2
hello,
si tu as divisé le cercle en 100 parties, il faut que l'angle sur lequel la fleche s'arrete soit un multiple de 3,6 (360/100).
Pour le faire, il faut contrôler l'angle de la fleche (this._rotation, dans le code fourni).
Messages postés
21
Date d'inscription
mardi 24 août 2004
Statut
Membre
Dernière intervention
2 mai 2005

pas de probleme pour la division
et je peux arrondir apres
ce que j essaye de trouver c est un moyen qui fait qu une fois la fleche arreté j obtienne dans une autre fenetre (2)(ca je sais faire)
la valeur pointer par la fleche
correction : j ai gradué de 10 en 10 mais dans la fenetre (2) je veux la valeur arrondi ( par ex : 12 )
c est pour cela que je voulais obtenir la position de la fleche
Messages postés
21
Date d'inscription
mardi 24 août 2004
Statut
Membre
Dernière intervention
2 mai 2005

je n explique surement pas tres bien
enfin tu as tout bon (sauf que je t ai embrouillé avec mes derniere explication c ets juste a l affichage que l on voit graduer de 10 en 10 pour faire un repere)
mais je veux le resultat enier enfin j ai fait la correction
je devrait m en sortir avec tout ce que tu m as donné

encore merci je confirmerais ta reponse quand j aurai reussi a le faire marcher
Messages postés
21
Date d'inscription
mardi 24 août 2004
Statut
Membre
Dernière intervention
2 mai 2005

bon voila j ai reussi a faire exactement ce que je voulais
je ne peux pas le mettre ne ligne mais je t affiche le code (on pourrait dire ton code ;) ):

angle = this._rotation;
if(angle<0){
angle = 360+angle;
}
angle -= 1;
noCase = Math.round(angle/3.6);

pour le reste je n ai pratiquement rien changer
ca tourne super bien je regle encore la decceleration et j ai fini

:big)
Messages postés
21
Date d'inscription
mardi 24 août 2004
Statut
Membre
Dernière intervention
2 mai 2005

bon nouveau probleme
j ai rajouter un bouton pour lancer le clip
mon probleme est que je n arrive pas a lancer le clip
apres avoir essayer de lancer avec play ,gotoandplay , et les fonctions (j ai meme essayé loadmovie en desespoir de cause)
je commence a me dire que c est impossible

comment s y prendre ? j ai essayer de donne rune instance au clip ( je l ai appelé MaFleche ) pour pouvoir le lancer mais rien n y fait

donc comment faire pour qu un bouton lance le clip ?
(sans pour autant enlever le precedent )
Messages postés
21
Date d'inscription
mardi 24 août 2004
Statut
Membre
Dernière intervention
2 mai 2005

merci bcp
je veins d en apprendre pas mal en 2 jour grace a toi
transformer ce clip en bouton grace a onPress est une grande revolution pour moi

merci encore
Messages postés
21
Date d'inscription
mardi 24 août 2004
Statut
Membre
Dernière intervention
2 mai 2005

RE-Bonjour a tous
je dois refaire ma roue de la fortune avec 2 possibilité
1 envoyer le resultat a une autre application ( grace a delphy)
2 recevoir le resultat escompter et faire que la roue tourne et s arrete au bon endroit

pour le 1 je devrait etre a la hauteur
mais pas pour le 2
quelqun pourrait-il me donner une piste a partir de mon code ?

code :

#initclip
//constructeur


function clsFleche(){ }


clsFleche.prototype = new MovieClip();
clsFleche.prototype.onPress = function(){
//definition de la vitesse de rotation entre 300 et 400
this.vRot = Math.floor(Math.random()*100)+600;
//si un interval en cours, le stopper
clearInterval(this.refInt)
//demarage de la rotation;
this.refInt = setInterval(this, "tourne", 1000/16);
}
clsFleche.prototype.tourne = function(){
this._rotation += this.vRot/5;
this.vRot -= this.vRot/10 //Math.floor(Math.random()*400);entre 10 et 50

if(this.vRot <= 5){
clearInterval(this.refInt);
}
angle = this._rotation;
if(angle<0){
angle = 360+angle;
}
angle -= 1;
noCase = Math.round(angle/3.6);
}
Object.registerClass("mcFleche", clsFleche)
#endinitclip

merci
Messages postés
149
Date d'inscription
vendredi 30 mai 2003
Statut
Membre
Dernière intervention
28 janvier 2011
2
Hello,

le plus simple est de le faire par simulation. La code suivant n'est
pas optimisé sur la recherche, mais devrait fonctionner. Il suffit
d'appeler la fonction vDepart(caseCible) afin de connaitre la vitesse à
laquelle la roue doit être lancée.

-----------------------------------------

clsFleche.prototype.vDepart = function(refCase){

vMin = 500;//vitesse minimale du lance

vMax = 800;//vitesse maximale du lance

vStop = 5;//vitesse d'arret

vTest = vMin;//valeur testée

vPerte = 0.9;//perte de vitesse

pRot = 0.2;//proportion pour la rotation

trouve = false;//vitesse trouvée?

while(not trouve){//tant que ca n'a pas ete trouve

vAct = vTest;//initilisation de la vitesse

this.contRot._rotation =
this._rotation;//initialisation de la rotation (contRot est un clip
vide placer dans l'objet pour simuler la rotation)

while(vAct > vStop){//tant que la vitesse est superieur à la vitesse min

this.contRot._rotation += vAct * pRot; //nouvelle rotation

vAct = vAct * vPerte; // deceleration

}

//transposer la rotation de -180..180 à 0..360

actRot = this.contRot._rotation;

if(actRot < 0){

actRot = 360 + actRot;

}

//copie du code reference

actRot -= 1;

//resultat du test

resCase = Math.round(actRot/3.6) ;

//la case correspond-elle à la référence

trouve = (int(resCase)==int(refCase));

//si pas trouve

if(not trouve){

if(vTest >
vMax){//valeur non trouvee dans la plage min..max retourne 0

trouve = true;

vTest = 0;

}

vTest = vTest + 1;//tester la valeur suivante

}

}

}

return vTest;

}

------------------------------------------------

ce code ce refere au code transmis, alors si des paramettres changent
dans la fonction tourne, il faut les repercuter sur cette fonction.

J'espère que j'ai bien compris ce que tu cherchais à faire.

J'attends de tes nouvelles,

à plus.

adv
Messages postés
149
Date d'inscription
vendredi 30 mai 2003
Statut
Membre
Dernière intervention
28 janvier 2011
2
oh oh, il y a une petite erreur, il faut inverser les lignes suivantes :

--------------------------

if(not trouve){

if(vTest >
vMax){//valeur non trouvee dans la plage min..max retourne 0

trouve = true;

vTest = 0;

}
vTest = vTest + 1;//tester la valeur suivante

}


--------------------------, ainsi


if(not trouve){


vTest = vTest + 1;//tester la valeur suivante



if(vTest >
vMax){//valeur non trouvee dans la plage min..max retourne 0

trouve = true;

vTest = 0;

}

}


--------------------------

desole,

adv
Messages postés
21
Date d'inscription
mardi 24 août 2004
Statut
Membre
Dernière intervention
2 mai 2005

re-bonjour
merci pour tout
je pense que tu as tres bien compri mon souhait
par contre je n arrive pas pour l instant a faire ce que je veux

j ai mis ton code dans le mien (entre #initclip et endinitclip )
j ai rajouté une case de saisie qui a pour variable caseCible

mais je ne comprend pas comment lier mon code et le tien
si j ai bien compris je dois remplacer
this.vRot = Math.floor(Math.random()*100)+600;
par
this.vRot = vTest;

mais j ai du mal ranger mon flash ....
enfin je ne lachepas l affaire si facilement
je repasserai si j ai trop de mal merci encore
Messages postés
149
Date d'inscription
vendredi 30 mai 2003
Statut
Membre
Dernière intervention
28 janvier 2011
2
Hello,

pour arriver sur la case 10, par exemple, il faut faire ainsi :



this.vRot = this.vDepart(10);



puis, lancer l'interval pour faire tourner la fleche

et ça devrait fonctionner.

A plus,

adv
Messages postés
21
Date d'inscription
mardi 24 août 2004
Statut
Membre
Dernière intervention
2 mai 2005

bon apres plusieur manipulation je n arrive toujours pas a faire fonctionner ton code
il doit y avoir une petite erreur mais je ne met pas la main de ssus car quoi qu il arrive il ne me renvoie rien (meme quand je met "return 1000 ;")
quand je trouve je repasse ici pour t en faire part
c etait le compte rendu du matin