https://storage.googleapis.com/files.cs-first.com/images/icon-sports.png

arrow_back Einen Computergegner programmieren

Transkript

Diese Erweiterung ist dein Einstieg in  den Bereich der künstlichen Intelligenz.

Das ist genau das, was Computer-Gegner bei  Videospielen oder selbstfahrenden Autos nutzen.

Dieses Video wird dir zwei Möglichkeiten  zeigen, den Gegner zu programmieren.

Die erste Möglichkeit ist leichter zu  programmieren aber viel schwieriger zu besiegen.

Für die zweite Möglichkeit  ist mehr Code erforderlich, der Spieler hat dabei aber eine bessere Chance. Dupliziere zunächst die Sportler-Figur.

Falls du bereits einen zweiten  Spieler programmiert hast, kannst du diese Figur als Computer-Gegner nutzen.

Trenne dafür nun den Code des zweiten Spielers  vom Ereignis „Wenn Flagge angeklickt“, sodass er weiterhin vorhanden  ist, aber nicht ausgeführt wird.

Gehe dann zu Kostüme, klicke  auf „Oben und Unten vertauschen“ und ziehe die neue Figur an den  oberen Rand des Bildschirms.

Die erste Möglichkeit, diese Erweiterung  zu programmieren, ist, die Figur immer zur selben Links-rechts-Position  gehen zu lassen wie die Ball-Figur.

Gehe zum Tab „Skripte” und wähle im Menü  „Bewegung” einen Block „setze x auf“ aus.

Der x-Wert beschreibt die Position der  Figur auf der Bühne von links nach rechts.

Null wäre zum Beispiel in der Mitte dieser Linie,  240 wäre eine Position am rechten Rand der Bühne und minus 240 am linken Rand der Bühne. Gehe zum Menü „Fühlen”.

Ziehe den abgerundeten Block „x-Position  von Figur” in den Block „setze x auf“.

Wähle im zweiten Dropdown-Menü  des Blocks die Ball-Figur aus.

Dieser Block lautet jetzt: „setze die  Links-rechts-Position des Computer-Spielers auf dieselbe Links-rechts-Position  wie die der Ball-Figur“.

Klicke darauf, um zu sehen, ob die Computer-Figur  auch wirklich ihre Position verändert.

Genau wie bei den Erweiterungen „Eine  Reaktion auf das Abprallen programmieren“ und „Die Punkte zählen“ reicht es nicht  aus, diesen Code nur einmal auszuführen.

Die Figur muss das immer wieder wiederholen,  damit sie ein würdiger Gegner ist.

Lege eine Schleife „wiederhole  fortlaufend“ um den Block.

Setze dann einen Block „setze Drehtyp auf“ an den Anfang des Blockstapels und wähle  im Dropdown-Menü „links-rechts“.

Füge nun am Anfang des Stapels noch  einen Block „Wenn Flagge angeklickt“ ein.

Du hast soeben deinen ersten  Computer-Gegner erstellt.

Probier’s mal aus! Versuche als Nächstes einen realistischeren Computer-Gegner zu programmieren. Was du dafür machen musst, wird dir im weiteren Verlauf dieses Videos erklärt. Was jetzt kommt ist etwas schwieriger; am Ende wirst du jedoch ein cooleres Projekt  haben, das näher an ein echtes Spiel herankommt!

Trenne zunächst den letzten Codestapel vom  Ereignis, sodass er nicht ausgeführt wird.

Dupliziere dann den ursprünglichen Blockstapel. Jetzt programmieren wir Folgendes: Die Computer-Figur wird sich sehr ähnlich  verhalten wie ein echter menschlicher Spieler.

Sie wird sich genauso schnell in Richtung  des Balls bewegen wie dein Spieler.

Verändere den neuen Codestapel so,  dass die Figur automatisch bewegt wird.

Entferne dafür zunächst die Blöcke  „Taste gedrückt“ aus dem Stapel.

Ersetze sie durch Blöcke  aus dem Menü „Operatoren”.

Ziehe einen Block „größer  als“ in das erste leere Feld.

Ziehe nun einen Block „kleiner  als“ in das zweite leere Feld.

Ziehe jeweils einen weiteren der Blöcke „Position  von Figur“ aus dem Menü „Fühlen” in das erste leere Feld der Operatoren-Blöcke. Achte darauf, dass im Dropdown-Menü jeweils „x-Position“ und „Tennisball“ (oder die  Ball-Figur in deinem Programm) ausgewählt ist.

Für das jeweils zweite leere Feld findest du im  Menü „Bewegung” einen Block, der die x-Position der aktuellen Figur angibt. Ziehe jeweils einen  davon in die zwei Felder, die noch leer sind.

Setze jetzt noch ein Ereignis „Wenn Flagge angeklickt“ an den Anfang und  probier‘ das Ganze mal aus.

Okay, einen Moment. Der Computer-Spieler rennt ja vom Ball weg.

Er geht in die falsche Richtung! Der Code in unserem Beispiel lautet: „Falls der Ball sich rechts vom  Sportler befindet, gehe nach links.“ Na klar, das ist doch falsch herum. Falls dir das auch passiert, ziehe einfach die Bewegungsblöcke aus dem  Block „falls“ heraus und vertausche sie.

Super, jetzt kannst du dir anschauen, wie sich die  Computer-Figur in Richtung der Ball-Figur bewegt.

Wenn deine Computer-Figur sich  in die falsche Richtung bewegt, hast du vielleicht einfach nur die Bedingungen  in den Anweisungen „falls” vertauscht.

Es gibt hier noch einen letzten Fehler.

Siehst du, dass sich die neue Figur ständig  umdreht, wenn sie sich rückwärts bewegt?

Der Block „wiederhole fortlaufend“ prüft  beide Bedingungen „falls“ sehr schnell, sodass es scheint, als würden beide  Bedingungen gleichzeitig erfüllt werden.

Dadurch sieht es aus, als  würde die Figur sich umdrehen.

Das kannst du beheben, indem du unter dem zweiten  Block „falls“ einen Block „warte“ einfügst.

Experimentiere mit diesem Wert herum, bis du  einen findest, der für dein Programm geeignet ist.

Probier’s aus!

Gute Arbeit!

Wenn du fertig bist, hast du einen Computer-Gegner  mit künstlicher Intelligenz programmiert!

Das ist der Spielplan: Programmiere die Computer-Figur so, dass sie sich  fortlaufend zur x-Position der Ball-Figur bewegt.

Programmiere die Computer-Figur dann so, dass sie  prüft, ob sie nach links oder rechts gehen muss, und sich dann in die gleiche Richtung  bewegt wie der menschliche Spieler.

Erweiterung auswählen

Eine Reaktion auf das Abprallen programmieren

Die Ball-Figur beim Abprallen etwas tun oder sagen lassen

Einen zweiten Spieler hinzufügen

Einen zweiten Sportler hinzufügen, damit man das Spiel zu zweit spielen kann.

Die Punkte zählen

Eine Variable zum Zählen der Punkte hinzufügen

Einen Computergegner programmieren

Eine Figur programmieren, die gegen den Nutzer spielt

Anleitung

  1. Wählt eine der Erweiterungen aus und schaut euch das Video an, um zu sehen, wie sie programmiert wird.
  2. Wenn ihr mit einer Erweiterung fertig seid, probiert eine andere aus!