Creation roue de la fortune [Résolu]

knone 21 Messages postés mardi 24 août 2004Date d'inscription 2 mai 2005 Dernière intervention - 24 août 2004 à 15:23 - Dernière réponse : knone 21 Messages postés mardi 24 août 2004Date d'inscription 2 mai 2005 Dernière intervention
- 3 mars 2005 à 13:07
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
Afficher la suite 

21 réponses

Répondre au sujet
cs_adv 149 Messages postés vendredi 30 mai 2003Date d'inscription 28 janvier 2011 Dernière intervention - 24 août 2004 à 16:36
+3
Utile
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.
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_adv
cs_adv 149 Messages postés vendredi 30 mai 2003Date d'inscription 28 janvier 2011 Dernière intervention - 25 août 2004 à 17:02
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_adv
cs_adv 149 Messages postés vendredi 30 mai 2003Date d'inscription 28 janvier 2011 Dernière intervention - 26 août 2004 à 12:03
+3
Utile
Il faut mettre la bouton sur la scène avec le code suivant :
on(press){
MaFleche.onPress();
}
et ça marche... normalement
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_adv
cs_adv 149 Messages postés vendredi 30 mai 2003Date d'inscription 28 janvier 2011 Dernière intervention - 3 mars 2005 à 11:32
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_adv
cs_adv 149 Messages postés vendredi 30 mai 2003Date d'inscription 28 janvier 2011 Dernière intervention - 24 août 2004 à 15:40
0
Utile
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...
Commenter la réponse de cs_adv
knone 21 Messages postés mardi 24 août 2004Date d'inscription 2 mai 2005 Dernière intervention - 24 août 2004 à 16:05
0
Utile
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
Commenter la réponse de knone
knone 21 Messages postés mardi 24 août 2004Date d'inscription 2 mai 2005 Dernière intervention - 25 août 2004 à 13:16
0
Utile
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
;)
Commenter la réponse de knone
knone 21 Messages postés mardi 24 août 2004Date d'inscription 2 mai 2005 Dernière intervention - 25 août 2004 à 15:36
0
Utile
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 ?
Commenter la réponse de knone
cs_adv 149 Messages postés vendredi 30 mai 2003Date d'inscription 28 janvier 2011 Dernière intervention - 25 août 2004 à 16:09
0
Utile
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).
Commenter la réponse de cs_adv
knone 21 Messages postés mardi 24 août 2004Date d'inscription 2 mai 2005 Dernière intervention - 25 août 2004 à 16:28
0
Utile
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
Commenter la réponse de knone
knone 21 Messages postés mardi 24 août 2004Date d'inscription 2 mai 2005 Dernière intervention - 25 août 2004 à 17:13
0
Utile
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
Commenter la réponse de knone
knone 21 Messages postés mardi 24 août 2004Date d'inscription 2 mai 2005 Dernière intervention - 25 août 2004 à 17:26
0
Utile
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)
Commenter la réponse de knone
knone 21 Messages postés mardi 24 août 2004Date d'inscription 2 mai 2005 Dernière intervention - 26 août 2004 à 11:58
0
Utile
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 )
Commenter la réponse de knone
knone 21 Messages postés mardi 24 août 2004Date d'inscription 2 mai 2005 Dernière intervention - 26 août 2004 à 12:22
0
Utile
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
Commenter la réponse de knone
knone 21 Messages postés mardi 24 août 2004Date d'inscription 2 mai 2005 Dernière intervention - 1 mars 2005 à 16:28
0
Utile
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
Commenter la réponse de knone
cs_adv 149 Messages postés vendredi 30 mai 2003Date d'inscription 28 janvier 2011 Dernière intervention - 1 mars 2005 à 20:14
0
Utile
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
Commenter la réponse de cs_adv
cs_adv 149 Messages postés vendredi 30 mai 2003Date d'inscription 28 janvier 2011 Dernière intervention - 1 mars 2005 à 20:17
0
Utile
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
Commenter la réponse de cs_adv
knone 21 Messages postés mardi 24 août 2004Date d'inscription 2 mai 2005 Dernière intervention - 2 mars 2005 à 14:40
0
Utile
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
Commenter la réponse de knone
cs_adv 149 Messages postés vendredi 30 mai 2003Date d'inscription 28 janvier 2011 Dernière intervention - 2 mars 2005 à 14:52
0
Utile
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
Commenter la réponse de cs_adv
knone 21 Messages postés mardi 24 août 2004Date d'inscription 2 mai 2005 Dernière intervention - 3 mars 2005 à 10:20
0
Utile
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
Commenter la réponse de knone

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

creation roue de la fortune - page 2