Aller au contenu

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

IS

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 ?

SC

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é ! 🎯

IS

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 ?



Besoin de plus d’aide avec la programmation Scratch ? Rejoignez notre communauté et obtenez des conseils d’experts pour vos projets ! ✨🚀