Zum Inhalt springen

Variablen und Daten

Variablen sind wie digitale Gedächtnisspeicher für Ihre Scratch-Programme - sie merken sich wichtige Informationen und ermöglichen es Ihren Projekten, intelligent zu reagieren und sich an verändernde Situationen anzupassen!

Stellen Sie sich eine Variable als beschriftete Box vor, in der Sie Informationen aufbewahren können. Genau wie eine echte Box können Sie:

  • Etwas hineinlegen (einen Wert speichern)
  • Nachschauen, was drin ist (den Wert lesen)
  • Den Inhalt ändern (den Wert aktualisieren)
  • Die Box beschriften (der Variable einen Namen geben)

🎮 Spielmechanik

Verfolgen Sie Punkte, Leben, Level und Spielerfortschritt in Ihren Spielen.

🧮 Berechnungen

Führen Sie mathematische Operationen durch und speichern Sie Ergebnisse für spätere Verwendung.

👤 Benutzerinformationen

Merken Sie sich Namen, Einstellungen und Präferenzen der Benutzer.

🔄 Dynamisches Verhalten

Lassen Sie Ihr Programm basierend auf gespeicherten Informationen unterschiedlich reagieren.

  1. Variablen-Kategorie öffnen

    • Klicken Sie auf “Variablen” in der Blockpalette
    • Sie sehen orange/rote Blöcke für Datenoperationen
  2. “Variable erstellen” klicken

    • Klicken Sie auf den Button “Variable erstellen”
    • Ein Dialog öffnet sich
  3. Variable benennen

    • Geben Sie einen beschreibenden Namen ein
    • Beispiele: “Punkte”, “Spielername”, “Geschwindigkeit”
    • Vermeiden Sie Leerzeichen und Sonderzeichen
  4. Gültigkeitsbereich wählen

    • Für alle Sprites: Alle können die Variable verwenden
    • Nur für dieses Sprite: Nur das aktuelle Sprite kann sie verwenden
  5. Variable verwenden

    • Neue Blöcke erscheinen in der Variablen-Kategorie
    • Ziehen Sie sie in Ihre Skripte

Einen Wert speichern:

setze [Punkte] auf (0)
setze [Spielername] auf (frage [Wie heißt du?] und warte auf Antwort)
setze [Geschwindigkeit] auf (5)

Berechnete Werte:

setze [Gesamtpunkte] auf ((Punkte) + (Bonuspunkte))
setze [Durchschnitt] auf ((Summe) / (Anzahl))
setze [Zufallsfarbe] auf (Zufallszahl von (1) bis (10))

Benutzereingaben:

frage [Wie alt bist du?] und warte auf Antwort
setze [Alter] auf (Antwort)

Einfaches Punktesystem:

// Spielstart
Wenn ⚑ angeklickt
setze [Punkte] auf (0)
setze [Level] auf (1)
zeige Variable [Punkte]
// Punkte sammeln
Wenn ich [Münze] empfange
ändere [Punkte] um (10)
falls <(Punkte) > [100]> dann
ändere [Level] um (1)
setze [Punkte] auf (0)
sage (verbinde [Level ] (Level))
end

Erweiterte Punktelogik:

// Verschiedene Punktwerte
Wenn ich [Kleine Münze] empfange
ändere [Punkte] um (5)
Wenn ich [Große Münze] empfange
ändere [Punkte] um (20)
Wenn ich [Diamant] empfange
ändere [Punkte] um (50)
spiele Klang [Jackpot]
// Multiplikator-System
Wenn ich [Power-Up] empfange
setze [Multiplikator] auf (2)
warte (10) Sekunden
setze [Multiplikator] auf (1)
// Punkte mit Multiplikator
ändere [Punkte] um ((Grundpunkte) * (Multiplikator))

Charakterstatistiken:

// Charaktererstellung
Wenn ⚑ angeklickt
frage [Wie heißt dein Charakter?] und warte auf Antwort
setze [Charaktername] auf (Antwort)
setze [Leben] auf (100)
setze [Mana] auf (50)
setze [Stärke] auf (10)
setze [Geschwindigkeit] auf (5)
// Charakterentwicklung
Wenn ich [Level Up] empfange
ändere [Stärke] um (2)
ändere [Leben] um (10)
ändere [Mana] um (5)
sage (verbinde (Charaktername) [ ist stärker geworden!])

Gesundheitssystem:

// Schaden nehmen
Wenn ich [Schaden] empfange
ändere [Leben] um (-10)
falls <(Leben) < [1]> dann
setze [Leben] auf (0)
sende [Game Over] an alle
sonst
setze [Farbe] Effekt auf (25) // Rot blinken
warte (0.2) Sekunden
schalte Grafikeffekte aus
end
// Heilung
Wenn ich [Heiltrank] empfange
ändere [Leben] um (25)
falls <(Leben) > [100]> dann
setze [Leben] auf (100) // Maximum begrenzen
end

Benutzerfreundliche Eingaben:

// Spielerregistrierung
Wenn ⚑ angeklickt
frage [Willkommen! Wie heißt du?] und warte auf Antwort
setze [Spielername] auf (Antwort)
frage [Wie alt bist du?] und warte auf Antwort
setze [Alter] auf (Antwort)
frage [Wähle Schwierigkeit (1-3):] und warte auf Antwort
setze [Schwierigkeit] auf (Antwort)
sage (verbinde [Hallo ] (verbinde (Spielername) [! Viel Spaß!]))

Einstellungen speichern:

// Spieleinstellungen
Wenn [s] Taste gedrückt // Settings
frage [Lautstärke (0-100):] und warte auf Antwort
setze [Lautstärke] auf (Antwort)
setze Lautstärke auf (Lautstärke) %
frage [Schwierigkeit (1-5):] und warte auf Antwort
setze [Schwierigkeit] auf (Antwort)
sage [Einstellungen gespeichert!]

Adaptive Schwierigkeit:

// Schwierigkeit anpassen
Wenn ⚑ angeklickt
setze [Feindgeschwindigkeit] auf (2)
setze [Spawn-Rate] auf (3)
wiederhole fortlaufend
falls <(Punkte) > [50]> dann
setze [Feindgeschwindigkeit] auf (3)
setze [Spawn-Rate] auf (2)
end
falls <(Punkte) > [150]> dann
setze [Feindgeschwindigkeit] auf (4)
setze [Spawn-Rate] auf (1)
end
warte (1) Sekunden
end

Zufällige Ereignisse:

// Zufällige Power-Ups
Wenn ⚑ angeklickt
wiederhole fortlaufend
setze [Zufall] auf (Zufallszahl von (1) bis (100))
falls <(Zufall) < [5]> dann // 5% Chance
erzeuge Klon von [Power-Up]
end
falls <(Zufall) > [95]> dann // 5% Chance
erzeuge Klon von [Bonus-Münze]
end
warte (1) Sekunden
end

Listen sind wie Variablen, die mehrere Werte gleichzeitig speichern können:

  1. Liste erstellen

    • Klicken Sie auf “Liste erstellen” in der Variablen-Kategorie
    • Geben Sie einen Namen ein (z.B. “Highscores”, “Inventar”)
  2. Elemente hinzufügen

    füge [Neuer Spieler] zu [Spielerliste] hinzu
    füge (Punkte) zu [Highscores] hinzu
  3. Elemente verwenden

    sage (Element (1) von [Spielerliste]) // Erstes Element
    sage (Element (Zufallszahl von (1) bis (Länge von [Spielerliste])) von [Spielerliste])
  4. Listen verwalten

    lösche (1) aus [Spielerliste] // Erstes Element löschen
    lösche alles aus [Temporäre Liste] // Liste leeren
    ersetze Element (2) von [Highscores] durch (Neue Punktzahl)

Inventarsystem:

// Gegenstand aufheben
Wenn ich [Schwert] empfange
falls <[Schwert] in [Inventar] enthalten?> dann
sage [Du hast bereits ein Schwert!]
sonst
füge [Schwert] zu [Inventar] hinzu
sage [Schwert erhalten!]
end
// Inventar anzeigen
Wenn [i] Taste gedrückt
setze [Index] auf (1)
wiederhole (Länge von [Inventar]) mal
sage (Element (Index) von [Inventar])
ändere [Index] um (1)
warte (1) Sekunden
end

Highscore-System:

// Neuen Score hinzufügen
Wenn ich [Spiel Ende] empfange
füge (Punkte) zu [Highscores] hinzu
// Top 5 anzeigen (vereinfacht)
setze [Anzeige] auf [Top 5 Scores:]
wiederhole (5) mal
setze [Höchster] auf (0)
setze [Index] auf (1)
// Höchsten Score finden
wiederhole (Länge von [Highscores]) mal
falls <(Element (Index) von [Highscores]) > (Höchster)> dann
setze [Höchster] auf (Element (Index) von [Highscores])
end
ändere [Index] um (1)
end
setze [Anzeige] auf (verbinde (Anzeige) (verbinde (Höchster) [, ]))
lösche (Höchster) aus [Highscores]
end
sage (Anzeige)

Globale Variablen (für alle Sprites):

  • Spielstand, Level, Spielerinfo
  • Werden von allen Sprites geteilt
  • Ideal für spielweite Informationen

Lokale Variablen (nur für ein Sprite):

  • Sprite-spezifische Eigenschaften
  • Gesundheit, Position, Zustand
  • Vermeiden Namenskonflikte

Nachrichten mit Daten:

// Sprite 1: Schaden verursachen
setze [Schadenswert] auf (25)
sende [Schaden nehmen] an alle
// Sprite 2: Schaden empfangen
Wenn ich [Schaden nehmen] empfange
ändere [Leben] um (0 - (Schadenswert))

Zustandsmaschinen:

// Spielzustand verwalten
Wenn ⚑ angeklickt
setze [Spielzustand] auf [Menü]
wiederhole fortlaufend
falls <(Spielzustand) = [Menü]> dann
// Menü-Logik
end
falls <(Spielzustand) = [Spielen]> dann
// Spiel-Logik
end
falls <(Spielzustand) = [Pause]> dann
// Pause-Logik
end
falls <(Spielzustand) = [Game Over]> dann
// Game Over-Logik
end
end

Effiziente Variablen-Nutzung:

// Schlecht: Ständige Berechnungen
wiederhole fortlaufend
gehe zu x: ((Maus x-Position) + (50)) y: ((Maus y-Position) + (30))
end
// Besser: Zwischenspeichern
wiederhole fortlaufend
setze [Ziel X] auf ((Maus x-Position) + (50))
setze [Ziel Y] auf ((Maus y-Position) + (30))
gehe zu x: (Ziel X) y: (Ziel Y)
end

Problem: Variable hat unerwarteten Wert

Lösung: Debugging-Ausgaben hinzufügen

sage (verbinde [Punkte: ] (Punkte))
sage (verbinde [Leben: ] (Leben))
sage (verbinde [Level: ] (Level))

Variablen auf Bühne anzeigen:

  • Rechtsklick auf Variable → “Zeigen”
  • Beobachten Sie Wertänderungen in Echtzeit
  • Verstecken Sie sie wieder für finale Version

Variablen-Namen:

  • ✅ Beschreibend: Spielerpunkte, Feindgeschwindigkeit
  • ❌ Kryptisch: x, temp, var1
  • ✅ Konsistent: spielerX, spielerY, spielerGeschwindigkeit
  • ❌ Inkonsistent: playerX, spieler_y, SpeedPlayer

Gültigkeitsbereiche:

  • Verwenden Sie globale Variablen für spielweite Daten
  • Verwenden Sie lokale Variablen für sprite-spezifische Daten
  • Vermeiden Sie Namenskonflikte zwischen Sprites

Speicher-Management:

  • Löschen Sie unbenutzte Listen regelmäßig
  • Begrenzen Sie Listengröße bei Bedarf
  • Initialisieren Sie Variablen beim Spielstart

Sie haben gelernt:

  • ✅ Was Variablen sind und warum sie wichtig sind
  • ✅ Wie man Variablen erstellt, setzt und ändert
  • ✅ Praktische Anwendungen für Spiele und interaktive Projekte
  • ✅ Listen für erweiterte Datenverwaltung
  • ✅ Erweiterte Techniken und Optimierungen
  • ✅ Häufige Probleme zu erkennen und zu lösen

Variablen sind das Gedächtnis Ihrer Programme - sie machen den Unterschied zwischen statischen Animationen und intelligenten, interaktiven Erlebnissen! 🧠✨