Aide avec l'espacement d'affichage des nombres
💡 Vous avez des difficultés à assembler des blocs Scratch ? Vous ne savez pas comment implémenter la logique du code ? 🚀 Obtenir de l’Aide Maintenant
Isopod7
Publié le 5 août 2025 • Intermédiaire
🔢 Aide avec un affichage de nombres
Je crée un affichage de nombres qui devient plus petit lorsque des nombres sont ajoutés pour s’adapter dans un carré et rester centré. Le problème est que les espaces de l’axe x entre les nombres ne sont pas coordonnés.
Je veux que les nombres soient espacés uniformément et s’ajustent automatiquement à la largeur totale. Comment puis-je implémenter cela dans Scratch ?
ScratchCoder_Pro
A répondu 2 heures plus tard • ⭐ Meilleure Réponse
Excellente question @Isopod7 ! Les affichages dynamiques de nombres avec un espacement approprié nécessitent une approche réfléchie. Voici une solution complète :
🔧 Étape 1 : Configurer les Variables
D’abord, créez ces variables pour votre système d’affichage :
when flag clicked set [Number to Display v] to [12345] set [Display Width v] to [200] set [Display Height v] to [50] set [Digit Count v] to [0] set [Digit Width v] to [0] set [Digit Spacing v] to [0] set [Start X v] to [0]
📏 Étape 2 : Calculer la Taille Dynamique
Calculez la taille optimale basée sur le nombre de chiffres :
// Compter les chiffres et calculer la taille set [Digit Count v] to (length of (Number to Display)) set [Digit Width v] to ((Display Width) / (Digit Count)) if <(Digit Width) > [30]> then set [Digit Width v] to [30] end set [Digit Spacing v] to ((Display Width) / (Digit Count))
🎯 Étape 3 : Calculer la Position Initiale
Déterminez la position initiale pour le centrage :
// Calculer la position initiale pour le centrage set [Total Width v] to ((Digit Count) * (Digit Spacing)) set [Start X v] to (0 - ((Total Width) / [2]))
🔢 Étape 4 : Créer des Clones de Chiffres
Créez des clones pour chaque chiffre avec un espacement approprié :
delete all clones of [Digit Sprite v] set [Current Position v] to (Start X) repeat (Digit Count) set [Current Digit v] to (letter (Current Position + 1) of (Number to Display)) create clone of [Digit Sprite v] change [Current Position v] by (Digit Spacing) end
➖ Étape 5 : Gérer les Nombres Négatifs
Pour les nombres négatifs, ajoutez une gestion spéciale :
// Vérifier les nombres négatifs if <(letter [1] of (Number to Display)) = [-]> then set [Has Negative v] to [true] set [Number to Display v] to (letter [2] to (length of (Number to Display)) of (Number to Display)) else set [Has Negative v] to [false] end // Créer un clone de signe moins si nécessaire if <(Has Negative) = [true]> then set [Current Digit v] to [-] set [Current Position v] to ((Start X) - (Digit Spacing)) create clone of [Digit Sprite v] end
🎨 Étape 6 : Comportement du Clone
Dans le sprite de chiffre, ajoutez ce comportement de clone :
when I start as a clone go to x: (Current Position) y: [0] set size to ((Digit Width) / [20] * [100]) % switch costume to (Current Digit) show
🔄 Étape 7 : Système d’Affichage Complet
Combinez tout dans un script principal :
define Update Number Display (number) set [Number to Display v] to (number) delete all clones of [Digit Sprite v] // Gérer les nombres négatifs if <(letter [1] of (number)) = [-]> then set [Has Negative v] to [true] set [Number to Display v] to (letter [2] to (length of (number)) of (number)) else set [Has Negative v] to [false] end // Calculer la taille et l'espacement set [Digit Count v] to (length of (Number to Display)) if <(Has Negative) = [true]> then change [Digit Count v] by [1] end set [Digit Spacing v] to ((Display Width) / (Digit Count)) set [Digit Width v] to ((Digit Spacing) * [0.8]) if <(Digit Width) > [30]> then set [Digit Width v] to [30] end set [Total Width v] to ((Digit Count) * (Digit Spacing)) set [Start X v] to (0 - ((Total Width) / [2])) // Créer le signe moins if <(Has Negative) = [true]> then set [Current Digit v] to [-] set [Current Position v] to (Start X) create clone of [Digit Sprite v] change [Start X v] by (Digit Spacing) end // Créer les chiffres set [Digit Index v] to [1] repeat (length of (Number to Display)) set [Current Digit v] to (letter (Digit Index) of (Number to Display)) set [Current Position v] to ((Start X) + ((Digit Index - 1) * (Digit Spacing))) create clone of [Digit Sprite v] change [Digit Index v] by [1] end
💡 Conseils Professionnels
- Dimensionnement Réactif : Utilisez des tailles minimales et maximales pour les chiffres
- Transitions Fluides : Ajoutez des animations de glissement lors du changement de tailles
- Nombres Décimaux : Étendez le système pour les points décimaux
- Polices Différentes : Créez différents costumes pour divers styles
Ce système ajuste automatiquement la taille et l’espacement basé sur le nombre de chiffres tout en maintenant un centrage approprié ! 🎯
Isopod7
A répondu 30 minutes plus tard
@ScratchCoder_Pro C’est fantastique ! Merci beaucoup ! 🎉
J’ai réussi à faire fonctionner le système de base. Une question rapide : comment puis-je faire en sorte que l’affichage soit également compatible avec les nombres négatifs ? Et pourquoi l’espacement entre les nombres à deux chiffres est-il si grand dans votre solution ?
🔗 Sujets Connexes
Section intitulée « 🔗 Sujets Connexes »- Travailler avec les Clones dans Scratch
- Créer des Affichages de Texte Dynamiques
- Meilleures Pratiques de Gestion des Variables
Besoin de plus d’aide avec la programmation Scratch ? Rejoignez notre communauté et obtenez des conseils d’experts pour vos projets ! ✨🚀