Zum Inhalt springen

Hilfe bei der Zahlenanzeige-Abständen

💡 Haben Sie Probleme beim Zusammensetzen von Scratch-Blöcken? Wissen Sie nicht, wie Sie Code-Logik implementieren? 🚀 Jetzt Hilfe erhalten

IS

Isopod7

Gepostet am 5. August 2025 • Fortgeschritten

🔢 Hilfe bei einer Zahlenanzeige

Ich erstelle eine Zahlenanzeige, die beim Hinzufügen von Zahlen kleiner wird, um in ein Quadrat zu passen und zentriert zu bleiben. Das Problem ist, dass die x-Achsen-Abstände zwischen den Zahlen nicht koordiniert sind.

Ich möchte, dass die Zahlen gleichmäßig verteilt sind und sich automatisch an die Gesamtbreite anpassen. Wie kann ich das in Scratch umsetzen?

SC

ScratchCoder_Pro

Antwortete 2 Stunden später • ⭐ Beste Antwort

Großartige Frage @Isopod7! Dynamische Zahlenanzeigen mit ordnungsgemäßen Abständen erfordern eine durchdachte Herangehensweise. Hier ist eine umfassende Lösung:

🔧 Schritt 1: Variablen einrichten

Erstellen Sie zunächst diese Variablen für Ihr Anzeigesystem:

    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]
  

📏 Schritt 2: Dynamische Größe berechnen

Berechnen Sie die optimale Größe basierend auf der Anzahl der Ziffern:

    // Ziffern zählen und Größe berechnen
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))
  

🎯 Schritt 3: Startposition berechnen

Bestimmen Sie die Startposition für die Zentrierung:

    // Startposition für Zentrierung berechnen
set [Total Width v] to ((Digit Count) * (Digit Spacing))
set [Start X v] to (0 - ((Total Width) / [2]))
  

🔢 Schritt 4: Ziffern-Klone erstellen

Erstellen Sie Klone für jede Ziffer mit ordnungsgemäßen Abständen:

    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
  

➖ Schritt 5: Negative Zahlen handhaben

Für negative Zahlen fügen Sie spezielle Behandlung hinzu:

    // Negative Zahlen prüfen
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

// Minuszeichen-Klon erstellen falls nötig
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
  

🎨 Schritt 6: Klon-Verhalten

Im Ziffern-Sprite fügen Sie dieses Klon-Verhalten hinzu:

    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
  

🔄 Schritt 7: Vollständiges Anzeigesystem

Kombinieren Sie alles in einem Hauptskript:

    define Update Number Display (number)
set [Number to Display v] to (number)
delete all clones of [Digit Sprite v]

// Negative Zahlen handhaben
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

// Größe und Abstände berechnen
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]))

// Minuszeichen erstellen
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

// Ziffern erstellen
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
  

💡 Profi-Tipps

  • Responsive Größenanpassung: Verwenden Sie Mindest- und Höchstgrößen für Ziffern
  • Glatte Übergänge: Fügen Sie Gleitanimationen beim Größenwechsel hinzu
  • Dezimalzahlen: Erweitern Sie das System für Dezimalpunkte
  • Verschiedene Schriftarten: Erstellen Sie verschiedene Kostüme für verschiedene Stile

Dieses System passt automatisch Größe und Abstände basierend auf der Anzahl der Ziffern an und hält dabei eine ordnungsgemäße Zentrierung bei! 🎯

IS

Isopod7

Antwortete 30 Minuten später

@ScratchCoder_Pro Das ist fantastisch! Vielen Dank! 🎉

Ich habe das grundlegende System zum Laufen gebracht. Eine schnelle Frage - wie kann ich die Anzeige auch mit negativen Zahlen kompatibel machen? Und warum ist der Abstand zwischen zweistelligen Zahlen in Ihrer Lösung so groß?



Benötigen Sie mehr Hilfe bei der Scratch-Programmierung? Treten Sie unserer Community bei und erhalten Sie Expertenberatung für Ihre Projekte! ✨🚀