ATELIER / REGISTRE DE PIÈCE GRAVÉE
Lire le registre à deux faces avant de lancer
Ce registre gravé décrit l’éditeur actuel de pièce : cinq IDs de design sélectionnables, commandes visibles par bouton et glisser, expression de résultat, valeurs de mouvement, registre affiché, valeurs stockées, son et confettis.
- 5 IDs de design
- chemin bouton flipCoin(1.5)
- 20 registres · affichage 10
Sélecteur de motifs / cinq IDs gravés
Le sélecteur contient exactement cinq IDs : euro, dollar, chf, gbp et gold. L’éditeur résout les noms et labels de face depuis ses objets de design et son mappage localisé.
- euro
- dollar
- chf
- gbp
- gold
Les cinq IDs identifient des designs sélectionnables dans cette interface ; ce registre ne leur attribue pas d’autre attribut.
Rail d’activation / bouton, glisser, touche
Utilisez le bouton visible ou la commande de glisser. Le bouton appelle flipCoin(1.5). isFlipping empêche une autre voie de lancer pendant qu’une est en cours.
01 · BOUTON — Commande visible
Appuyer sur la commande visible appelle flipCoin(1.5). Elle est désactivée tant que isFlipping est true.
02 · GLISSER — Décalage vers le haut
offset = max(dragStartY - clientY, 0), plafonné à 100px. La fin démarre seulement avec offset > 30 ou velocity > 2, via max(offset / 30, velocity / 3).
03 · TOUCHE — Garde Entrée ou Espace
Enter ou Space appelle flipCoin(1.5) seulement si la cible n’est pas input, textarea, button, select ou [contenteditable=true].
Plaque de mouvement / résultat et rotation
L’éditeur dérive la face affichée avec Math.random() > 0.5 ? heads : tails et utilise requestAnimationFrame pour les mises à jour de mouvement.
RÉSULTAT — Expression de la face
Math.random() > 0.5 ? heads : tails. La rotation finale est heads = 0 et tails = 180.
TOURS — Composants de rotation
Pour flipCoin(velocity=1), baseFlips=4 et extraFlips=min(velocity*2,6). total rotation=(baseFlips+extraFlips)*360+end rotation.
TEMPS — Durée du mouvement
duration=1500+velocity*500 ms. requestAnimationFrame met à jour rotation, arc, échelle et ombre pendant le chemin.
Registre de lancers / limite visible
Quand le mouvement se termine, showResult, l’état de confettis et FlipResult result/timestamp/coinType sont définis ; le résultat est inséré en tête, total augmente de 1 et un événement d’analytique est envoyé.
HISTORIQUE — Insertion en tête, conserver 20
L’éditeur ajoute FlipResult en tête et conserve au plus 20 entrées.
VUE LATÉRALE — Afficher 10 entrées
La vue latérale utilise history.slice(0,10). Avec un historique non vide, elle affiche les pourcentages arrondis de heads et tails de l’historique actuel.
LECTURE — Registre affiché seulement
Les comptes et pourcentages décrivent l’historique affiché ; cette page ne les traite pas comme une évaluation statistique ou de probabilité.
Registre des valeurs stockées / chargement et effacement
Au montage, l’éditeur lit coinFlipHistory, coinFlipTotalFlips, coinFlipSound et coinFlipSelectedCoin. Son effet écrit l’historique, y compris un tableau vide, total, son et ID de pièce sélectionnée.
CHARGE — Valeurs acceptées
L’historique accepte seulement des objets dont result est heads ou tails et est coupé à 20. Total est accepté seulement s’il est finite et >= 0 ; selectedCoin doit être un ID connu.
PARSE — Chemin JSON non valide
Si l’analyse JSON échoue, coinFlipHistory et coinFlipTotalFlips sont supprimés. Son et pièce sélectionnée sont ensuite résolus depuis leurs chaînes présentes.
EFFACER — Réinitialiser historique et total
Effacer l’historique fixe history à [] et totalFlips à 0 ; l’effet écrit ensuite ces nouvelles valeurs sous les clés nommées.
Notes de périmètre
- AudioContext est tenté pendant un lancer ; un contexte suspendu pris en charge est repris et la commande visible bascule le son.
- Après le chemin final, l’état de confettis démarre une boucle canvas de 150 particules et son effet nettoie la boucle animation frame.
- Ce registre décrit des branches de l’éditeur et des commandes visibles, pas une évaluation d’un résultat ou d’un affichage.
- Utilisez le bouton et la commande de glisser visibles pour interagir avec l’éditeur.
Continuer avec des outils voisins
Chaque outil lié possède ses propres commandes et son chemin d’état.
- Roue de choix
Ouvrez l’interface d’entrées et de commandes de roue.
- Sudoku
Ouvrez l’interface de puzzle en grille.
- Puzzle de mots
Ouvrez l’interface de puzzle de mots.
Questions sur le registre de pièce
Quels motifs peut-on sélectionner ?
Le sélecteur a les IDs euro, dollar, chf, gbp et gold. L’éditeur résout noms visibles et labels de face depuis ses mappages de design et de localisation existants.
Comment un lancer peut-il commencer ?
Le bouton visible appelle flipCoin(1.5). Le glisser utilise offset = max(dragStartY - clientY, 0), plafonné à 100px, et ne déclenche qu’avec offset > 30 ou velocity > 2. Enter ou Space suivent leur garde de cible et appellent flipCoin(1.5).
Quelle expression et quelles valeurs de mouvement sont utilisées ?
L’expression de face est Math.random() > 0.5 ? heads : tails. baseFlips=4, extraFlips=min(velocity*2,6), duration=1500+velocity*500 ms et total rotation=(baseFlips+extraFlips)*360+end rotation.
Que montre la vue latérale ?
L’historique conserve 20 entrées, la vue latérale utilise history.slice(0,10), et un historique non vide affiche des pourcentages arrondis de heads et tails pour cet affichage.
Quelles valeurs stockées sont lues et écrites ?
Les valeurs nommées sont coinFlipHistory, coinFlipTotalFlips, coinFlipSound et coinFlipSelectedCoin. Un JSON non valide supprime historique et total ; l’effacement fixe history à [] et total à 0 avant que l’effet les écrive.
Que font les chemins son et confettis ?
Un lancer tente AudioContext et reprend un contexte suspendu pris en charge. À la fin, l’état de confettis exécute une boucle canvas de 150 particules qui nettoie sa boucle animation frame.
Ouvrir les commandes de pièce
Choisissez un motif visible, utilisez le bouton ou le glisser, puis lisez le registre affiché.