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.

Ouvrir le lancer de pièce

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é.

Ouvrir le lancer de pièce