Programmieren

Computerbefehle für Programme sind in Programmiersprache verfasst, damit der Computer auch versteht, was man ihm befiehlt. Mithilfe der Scriptsprache GamBu-Script machen Schüler*innen erste Schritte beim Programmieren. Sie schreiben Schleifen, Verzweigungen und Schalter für Spiele und können ihre Arbeit in der Game-Engine austesten.

Arbeitsmittel

Info für Lehrende

Eingeloggte Lehrer*innen werden hier durch Unterrichtsvorschläge und Zusatzinformationen zur Seite und zu Lernzielen unterstützt.
Mehr zu SchuBu+

Ablauf

Ein Computerprogramm ist eine haargenaue Anleitung für einen Computer, was er tun soll. Jedes Programm hat einen Programmstart und dann eine genaue Reihenfolge von Befehlen. Diese Computerbefehle sind in Programmiersprache verfasst, damit er auch versteht, was man ihm befiehlt.

Abbildung ??
Sprachenlernen zahlt sich aus.

Das folgende Programm ist in der Programmiersprache Java-Script verfasst. Sortiere die Befehle so, dass sie ein sinnvolles Programm ergeben!

else document.write("Nö");
if (antwort == "eine künstliche Intelligenz") document.write("Richtig! Du bist fast so intelligent wie ich.");
var antwort = prompt("Falls ich intelligent wäre, was wäre ich dann?");

Geschichte des Programmierens

Die ersten Programme waren oft eine lange Liste von Befehlen hintereinander.

Im folgenden SchuBuch-Text erfährt man mehr über die Geschichte des Programmierens:

Im SchuBuch hast du vieles darüber gelesen, wie sich das Programmieren historisch entwickelt hat. Schaffst du es, die wichtigsten Entwicklungsschritte richtig in den Zeitstrahl einzuordnen?

1804 1837 1843 1946 1950er 1990er

GamBu-Script

GamBu-Script ist die Scriptsprache, mit der man Spielelemente in der SchuBu-Game-Engine GamBu programmieren kann. Für jedes runde Element in der GamBu-Game-Engine, also , , , und , kann man ein Script schreiben, das bestimmt, was das Element kann, macht und wie es reagiert.

 + Script =  Bot

Alles in GamBu-Script wird kleingeschrieben.

Ein Befehl lautet zum Beispiel:

bei berührung sage "Autsch!" (In Anführungszeichen darf auch großgeschrieben werden.)

Bei Berührung sage: „Autsch!“ würde also nicht funktionieren.

GamBu Konsole
Gewonnen!
Bots starten?
Verloren!
Der Seppibär is los!
Assets
Texturen Sounds
Wenn alle Texturen, Bilder und Grafiken von dir selbst erstellt, gemalt oder gezeichnet worden sind, dann stehen sie bei einer Veröffentlichung automatisch unter CC BY-ND. Außer den selbst gemachten dürfen auch Grafiken enthalten sein, die ausdrücklich OHNE NAMENSNENNUNG frei verwendbar sind, dann stehen alle Grafiken, auch deine eigenen, nach Veröffentlichung unter CC0.
Die Texturen sollten genau 62 x 62 Pixel groß sein
Wenn alle Musikstücke und Geräusche von dir selbst erstellt, gesungen, gespielt und komponiert worden sind, dann stehen sie bei einer Veröffentlichung automatisch unter CC BY-ND. Außer den selbst gemachten dürfen auch Sounds enthalten sein, die ausdrücklich OHNE NAMENSNENNUNG frei verwendbar sind, dann stehen alle Sounds, auch deine eigenen, nach Veröffentlichung unter CC0.
bei berührung sage "Autsch!"

Schreibe ein erstes GamBu-Script! Programmiere den Puck am Eis so, dass er automatisch durch eine Lücke findet und das Netz trifft! Verwende dazu folgende Befehle:

hinauf x hinunter x links x rechts x

Das x ist die Kraft. Bei 1 bewegt sich der Puck sehr wenig, bei 100 viel stärker in die angegebene Richtung. Achtung: Die Kraft bedeutet NICHT, wie viele Kästchen die Bewegung sein soll.

Zum Beispiel:

hinauf 150 rechts 200

Klicke zum Programmieren auf den Bot (hier ein Puck)!

Info für Lehrende
GamBu Konsole
Gewonnen!
Bots starten?
Verloren!
Der Seppibär is los!

Das große Fressen

Bereitet euch auf ein Klassenturnier vor! Am Ende der nächsten Seite wird es ein Spiel geben, wo die Maus gewinnt, die am meisten Käse gefressen hat. Alle in der Klasse schreiben ein Script für eine Maus. Die Mäuse-Bots treten dann gegeneinander an. Wer am schlauesten programmiert, gewinnt das Spiel.

Die genauen Turnierregeln finden sich am Ende der nächsten Seite.

Schreibe ein erstes Script für eine der Mäuse auf dem Turnierfeld! Die programmierte Maus soll einen Käse fressen. Kopiere dein Script zum Spaß auch in das Scriptfenster der zweiten Maus, damit beide loslaufen! Im Turnier wird das Script für die zweite Maus dann von einer Klassenkollegin oder einem Klassenkollegen stammen.

Info für Lehrende
GamBu Konsole
Gewonnen!
Bots starten?
Verloren!
Der Seppibär is los!

Schleifen

Lange Programme sind kompliziert. Sie werden vom Menschen geschrieben, müssen aber zugleich für Computer verständlich sein. Deshalb klingen sie oft seltsam und man muss sich genau an ihre Regeln halten.

Eine praktische Anforderung an alle Programmiersprachen ist zum Beispiel:

Wenn sich etwas Gleiches oft wiederholt, wie schreibt man das?

In Programmiersprachen gibt es dafür mehrere Möglichkeiten, eine davon sind Schleifen. Dabei wird ein Teil des Programms immer wieder neu ausgeführt, also wiederholt.

In GamBu-Script werden Schleifen deshalb Wiederholung genannt. Es gibt zwei Arten:

wiederhole x sekunden [Befehl]

oder

wiederhole x mal [Befehl]

Zum Beispiel könnte ein GamBu-Script so lauten:

rechts 100 wiederhole 100 mal links 1

Der Bot würde mit Kraft 100 nach rechts düsen, dann aber langsam hundertmal hintereinander ein bisschen zurück nach links fahren.

Probier es aus! Klicke auf die Maus und kopiere das Beispiel-Script in das Script-Eingabe-Fenster!

GamBu Konsole
Gewonnen!
Bots starten?
Verloren!
Der Seppibär is los!

Schaffst du es das Script so zu verändern, dass die Maus den Käse frisst? (Du musst das Spiel reloaden.)

Schleifen in Scratch

Info für Lehrende

Scratch ist eine einfache, visuelle Programmiersprache, mit der junge Menschen digitale Geschichten, Spiele und Animationen erstellen können. Der Vorteil ist, dass die Community sehr groß ist, deshalb wird man leicht Hilfe und Informationen finden. Der Nachteil gegenüber GamBu ist, dass es viel schwieriger ist, mit Scratch ein fertiges lustiges Spiel zu erfinden. Die GamBu-Game-Engine ist dagegen selbst wie ein Spiel.

Zum Vergleich sieht eine ähnliche Schleife wie die oben in Scratch so aus:

Scratch Screenshot

Programmiere die Maus so, dass sie automatisch zum Käse läuft und ihn frisst!

Info für Lehrende
GamBu Konsole
Gewonnen!
Bots starten?
Verloren!
Der Seppibär is los!

EXPERTENFRAGE: Obwohl immer eine Programmierzeile nach der anderen ausgeführt wird:

Wenn man will, dass zuerst nur ein Befehl und erst später ein anderer Befehl ausgeführt wird, muss man Schleifen verwenden. Wenn man zum Beispiel warten möchte, bis ein GamBu-Script später weitergeht, könnte man diesen Trick verwenden:

sage "Los geht's!" wiederhole 1 sekunde rechts 0 sage "Eine Sekunde ist schnell vergangen."

Verwende Schleifen zur Bewegung! Klicke auf die Maus und schreibe ein Script, dass die Maus zuerst nach oben und dann nach rechts geht, um sicher den Käse zu erreichen!

Info für Lehrende
GamBu Konsole
Gewonnen!
Bots starten?
Verloren!
Der Seppibär is los!

Verzweigungen

Programmierte Geräte sollen uns Arbeit abnehmen. Dazu gehört, dass sie selbst Entscheidungen treffen können.

Wie formuliert man eigenständige Entscheidungen von Programmen?

Eine Möglichkeit in Programmiersprachen sind bedingte Anweisungen, sogenannte Verzweigungen. Der Programmablauf muss an einer solchen Stelle entscheiden, ob ein Befehl ausgeführt wird oder nicht.

Man sieht, wie die Roboter heiraten.
wenn [ja], dann [heiraten]
Man sieht den weinenden Roboter.
sonst [weinen]

In GamBu-Script schreibt man eine Verzweigung so:

wenn [Bedingung erfüllt] dann [Befehl] sonst [anderer Befehl]

zum Beispiel:

wenn name = "Martin" dann sage "Hallo Martin!" sonst sage "Hallo?"

In Scratch würde der Befehl so aussehen:

if then in Scratch

In der Sprache Java-Script sieht eine Verzweigung folgendermaßen aus:

if (name == "Martin") alert("Hallo Martin!") else alert("Hallo?")

Im GamBu-Script-Beispiel oben hat der Bot „Hallo Martin!” gesagt. Bots können reden!

sage [text in Anführungszeichen]

Dieser praktische Befehl zeigt den Text, den der Bot sagen soll, in einer Sprechblase an.

Wenn man eine Sprechblase wieder wegkriegen möchte, dann lässt man den Bot einfach nichts sagen:

sage ""

Schalter

In der GamBu-Game-Engine gibt es einen mächtigen Baustein für Spiele, den Schalter. Spielfiguren können Schalter ein- oder ausschalten, um Türen zu öffnen, magische Dinge zu entdecken, Überraschungen zu erleben oder Bots zu aktivieren. Schalter sind gute Bauteile für Rätsel. Auch im Turnier „Das große Fressen” spielen Schalter eine wichtige Rolle. Schalter sind nur für Spieleautoren und Spieleautorinnen zugänglich, die programmieren können:

Einen Schalter erstellt man nämlich so:

  1. Man platziert einen Ball dorthin, wo der Schalter im Spiel dann sein soll.
  2. Man klickt auf den Ball, um das Scriptfenster zu öffnen.
  3. In das Script schreibt man den Befehl:

Zum Erstellen eines Schalters:

ich bin ein schalter

und zum Auslesen, ob ein Schalter ein oder aus ist:

schaltwert von element n

n ist die Nummer des Schalters. (Man sieht die Nummern aller Elemente immer, wenn man ein Scriptfenster öffnet.)

Ich bin ein Schalter! magische Verwandlung von Bot in einen Schalter
ich bin ein schalter
Bist du eingeschaltet? Roboter schaut auf den Schalter und fragt in der Sprechblase „Bist du eingeschaltet?“
schaltwert von element 5 = 1

Ein Schalter wird ein- oder ausgeschaltet, wenn ihn ein Spielcharakter in GamBu berührt: Der Schaltwert von einem Element kann entweder 0 oder 1 sein. 1 wenn der Schalter eingeschaltet ist und 0 wenn er ausgeschaltet ist.

EXPERTENFRAGE

Programmiere die Schlangen-Leibwächter der Käferpräsidentin so, dass sie höflich und artig, genau dann, wenn die Maus den Schalter betätigt, nach oben und unten weggehen! Ziel ist es, dass die Maus den Käfer frisst.

TIPP: Beachte, dass du wiederholt den Schaltwert überprüfen musst, um zu erfahren, ob er irgendwann von der Maus gedrückt wird! Die obere Schlange musst also in einer Schleife folgende Bedingung immer wieder überprüfen: wenn schaltwert von element 1 = 1 dann hinauf 1 Die Nummern der Elemente sieht man, sobald man ein Scriptfenster öffnet.

Info für Lehrende
GamBu Konsole
Gewonnen!
Bots starten?
Verloren!
Der Seppibär is los!

EXPERTENFRAGE: Noch eine schwere Expertenfrage:


Wende deine neuen Fähigkeiten jetzt an!

Erstelle ein eigenes Spiel mit interessanten NPCs! Öffne die Game-Engine GamBu und wende in den Gambu-Scripts der NPCs alles an, was du gelernt hast!

Popup: Spiel mit programmierten Gegnern

Spiel mit programmierten Gegnern

Folgende Elemente soll das Spiel beinhalten:

  • Mindestens eine Spielfigur.
  • Mindestens ein Ziel
  • Mindestens ein rundes Tod-Element, das per Script bewegt wird.

Hacks und Tricks

Syntax
Beispiel
Anmerkung
sage "Ein beliebiger Text"
sage "Halli Hallo"
Der Bot sagt: „Halli Hallo” in einer Sprechblase.
sage ""
sage ""
Die Sprechblase verschwindet.
hinauf x
hinauf 100
Der Bot bewegt sich mit Kraft 100 nach oben.
hinunter x
hinunter 0.5
0.5 ist eine sehr kleine Kraft hinunter.
links x
links 50
50 ist eine etwas kleinere Kraft als 100 nach links.
rechts x
rechts 10
10 als Kraft nach rechts ist auch möglich.
wiederhole x sekunden [Befehl]
wiederhole 10 sekunden hinauf 1
Der Bot bewegt sich 10 Sekunden lang langsam nach oben.
wiederhole x mal [Befehl]
wiederhole 3 mal hinunter 200
3 Frames hintereinander beschleunigt der Bot sehr stark nach unten.
ich bin [Element-Typ]
ich bin ein schalter
Der Bot verwandelt sich in einen Schalter.
schaltwert von element n
schaltwert von element 1
Wenn das Element 1 eingeschaltet ist, ist der Schaltwert 1 sonst 0.
wenn [Bedingung wahr ist] dann [Befehl]
wenn schaltwert von element 35 = 1 dann sage "eingeschaltet!"
Falls in dem Moment, wenn das Script bei diesem Befehl ist, der Schalter eingeschaltet ist, dann sagt der Bot "eingeschaltet!".
wenn [Bedingung wahr ist] dann [Befehl] sonst [anderer Befehl]
wenn schaltwert von element 35 = 1 dann sage "eingeschaltet!" sonst sage "ausgeschaltet"
Der Teil „sonst [anderer Befehl]“ kann auch weggelassen werden.

10. Programmieren
Tools
Zeit
Zufall
Zeigen
Rechnen
Antworten
Quiz
Über SchuBu
1.1.5.a
Meine Lösung prüfen
später prüfen
Tipp 1
Tipp 2
Lösung
   
Ok
erledigt
Juhu!
Du hast alle Aufgaben abgeschlossen.
Dein Ergebnis:
Genug für heute
leider falsch
Oje!
Das ist leider nicht ganz richtig.
Noch einmal versuchen
richtig
Bravo!
Deine Lösung ist richtig.
Nächste Aufgabe