CodeNatter
BefehleBefehlsreferenz

CodeNatter

Auf dieser Seite kannst du kleine Python-Programme direkt im Browser ausführen. Die Seite wurde sehr datensparsam entwickelt und lässt sich auch direkt in andere Webseiten einbetten. Über die Webseiten­adresse lassen sich alle eingegebenen Programme sofort teilen, dabei wird der Quelltext ausschließlich über den Link weitergegeben und bleibt damit vertraulich.

Anleitungen

  • Programme aufteilen – Vorbereitung einklappen, mehrere Ausgangslagen, Titel und Aufgabe
  • Teilen, Einbetten und Drucken – der Link, der Schnipsel für fremde Seiten, die Beamer-Ansicht
  • Kara – die Welt, die Befehle und ein Editor zum Zusammenklicken von Welten
  • Turtle – die Schildkröte, die zeichnet

Spiele mit Bildern und Klängen

Spiele schreibst du mit Pygame Zero (import pgzrun … pgzrun.go()). Dafür gibt es eine Bibliothek mit rund 600 Bildern und 14 Klängen in einem einheitlichen, flachen Stil. Hochladen musst du nichts: Jedes Spiel findet die Bilder über ihren Namen. Alle Bilder mit Suche, Vorschau und fertigem Code zeigt die Bildergalerie.

Alle Befehle für Turtle, Kara, Spiele, Fenster, numpy, Diagramme, requests und Dateien mit kurzen Beispielen zum Ausprobieren stehen in der Befehlsreferenz.

Bilder

Ein Bild wird zur Spielfigur mit Actor("name"), ein Hintergrund oder eine Kachel wird mit screen.blit("name", (x, y)) gezeichnet; images.name geht auch. Geladen werden nur die Bilder, deren Name im Programm steht.

import pgzrun

WIDTH = 800
HEIGHT = 480

ente = Actor("ente", (400, 240))

def draw():
    screen.blit("pf_bg_day", (0, 0))
    ente.draw()

def on_mouse_down():
    sounds.platsch.play()

pgzrun.go()

Klänge

sounds.coin.play() spielt einen Klang ab, z. B. coin, jump, hit, laser, explosion, win, platsch. Der Ton startet erst nach dem ersten Klick oder Tastendruck (so wollen es die Browser).

Namen und Animationen

Die Namen folgen dem Muster <ding>_<aktion>_<n>: heroine_run_1 bis heroine_run_8 sind die acht Bilder der laufenden Heldin. Wer sie nacheinander zeigt, bekommt eine Animation. Steht der Anfang des Namens in einer Zeichenkette, werden alle passenden Bilder geladen:

LAUFEN = ["heroine_run_" + str(i) for i in range(1, 9)]
heldin = Actor(LAUFEN[0], (200, 300))
zeit = 0

def update():
    global zeit
    zeit = zeit + 1
    heldin.image = LAUFEN[zeit // 4 % 8]

Die Pakete erkennt man am Anfang: pf_ Jump and Run (Kacheln pf_grass_mid, Münzen pf_coin_1 …), sp_ Weltraum, sea_ Meer, nat_ Natur, an_ Tiere, ui_ Spieloberfläche. Die Bilder aus dem Buch heißen deutsch: ente, kueken, boot. Im Expertenmodus gewinnt eine eigene Datei im Ordner images/ (z. B. images/ente.png) gegen das gleichnamige Bild der Bibliothek.

Spiele zum Weiterbauen

Unter den Beispielen auf der Startseite stehen vier fertige Spiele mit Bildern aus der Bibliothek:

  • Heldin hüpft: Jump’n’Run mit den Laufbildern heroine_run_*, Sprung- und Fallbild, Graskacheln und drehenden Münzen.
  • Weltraum-Abwehr: Raumschiff sp_ship, Laser, Gegner sp_enemy_* und eine Explosion aus sechs Bildern.
  • Ententeich: das Spiel aus dem Buch mit ente, kueken und boot.
  • Memory: 16 Karten mit memory_*, gespielt mit Maus oder Finger.

Kara

Kara ist wie Sokoban. Im deutschsprachigen Raum ist es sehr beliebt, um Schüler:innen das Programmieren beizubringen. Ursprünglich wurde es von SwissEduc konzipiert.

Die Welt wird mit world("""…""") als Bild aus Zeichen beschrieben, die Befehle stehen ohne Import zur Verfügung (wie im Buch). Die Syntax der Welten ist kompatibel zu GreenfootKara und Pygame Zero Simple Game Tutorials.

So lässt sich etwa eine Welt erschaffen:

world("""
  ###
  #.#
  # ####
###$ $.#
#. $@###
####$#
    #.#
    ###
""")

turnLeft()
move()

Dabei haben die Zeichen folgende Bedeutung:

  • @ - Kara
  • # - Baum
  • - leeres Feld
  • . - Beere
  • + - Kara auf einer Beere
  • $ - Pilz
  • * - Pilz auf Beere

Kara kann ihre Welt mit folgenden Funktionen wahrnehmen, die True oder False zurückliefern:

onBerry()Sitze ich auf einer Beere?
treeFront()Ist vor mir ein Baum?
treeLeft()Ist links von mir ein Baum?
treeRight()Ist rechts von mir ein Baum?
mushroomFront()Ist vor mir ein Pilz?

Mit folgenden Funktionen verändert Kara ihre Welt:

move()Ich gehe einen Schritt nach vorn.
turnLeft()Ich drehe mich nach links.
turnRight()Ich drehe mich nach rechts.
putBerry()Ich lege eine Beere ab.
removeBerry()Ich esse eine Beere.

Wenn Kara sich verletzt, stürzt das Programm ab.

Turtle

Turtle ist eine kleine Schildkröte, die mit einem Stift bewaffnet die raffiniertesten Muster zeichnen kann.

Turtle nutzt die gleiche API wie Python.

So zeichnest du dein erstes Kunstwerk:

import turtle
t = turtle.Turtle()

print("Schneeball wird gebaut...")

a = 1

for i in range(12):
  t.forward(50)
  a = a+1
  t.right(30)

print("Schneeball ist gebaut 🙂")

Hier ist die KI-generierte Zusammenfassung der Turtle-Befehle:

Befehl Beschreibung
back(distance) Bewegt die Schildkröte um den angegebenen Abstand rückwärts.
begin_fill() Wird aufgerufen, bevor eine zu füllende Form gezeichnet wird.
bgcolor(*args) Setzt oder gibt die Hintergrundfarbe des TurtleScreens zurück.
bk(distance) Bewegt die Schildkröte um den angegebenen Abstand rückwärts.
circle(radius, extent=None, steps=None) Zeichnet einen Kreis mit dem gegebenen Radius.
clear() Löscht die Zeichnungen der Schildkröte vom Bildschirm, ohne die Schildkröte zu bewegen.
color(*args) Gibt die Stift- und Füllfarbe zurück oder setzt diese.
colormode(cmode=None) Gibt den Farbmodus zurück oder setzt ihn auf 1.0 oder 255.
delay(delay=None) Gibt die Zeichenverzögerung in Millisekunden zurück oder setzt diese.
distance(x, y=None) Gibt die Entfernung von der Schildkröte zu (x,y) in Schildkrötenschritten zurück.
dot(size=None, *color) Zeichnet einen Punkt mit dem Durchmesser size und der Farbe color.
down() Senkt den Stift ab – zeichnet beim Bewegen.
end_fill() Füllt die Form, die nach dem Aufruf von begin_fill() gezeichnet wurde.
exitonclick() Geht in die Hauptschleife, bis die Maus geklickt wird.
fd(distance) Bewegt die Schildkröte um den angegebenen Abstand vorwärts.
fill(flag=None) Ruft fill(True) auf, bevor eine Form zum Füllen gezeichnet wird, und fill(False), wenn fertig.
fillcolor(*args) Gibt die Füllfarbe zurück oder setzt diese.
forward(distance) Bewegt die Schildkröte um den angegebenen Abstand vorwärts.
goto(x, y=None) Bewegt die Schildkröte zu einer absoluten Position.
heading() Gibt die aktuelle Ausrichtung der Schildkröte zurück.
hideturtle() Macht die Schildkröte unsichtbar.
home() Bewegt die Schildkröte zum Ursprung – Koordinaten (0,0).
isdown() Gibt True zurück, wenn der Stift unten ist, sonst False.
isvisible() Gibt True zurück, wenn die Schildkröte sichtbar ist, sonst False.
left(angle) Dreht die Schildkröte um die angegebenen Einheiten nach links.
pencolor(*args) Gibt die Stiftfarbe zurück oder setzt diese.
pendown() Senkt den Stift ab – zeichnet beim Bewegen.
pensize(width=None) Setzt oder gibt die Linienstärke zurück.
penup() Hebt den Stift an – zeichnet nicht beim Bewegen.
pos() Gibt die aktuelle Position der Schildkröte (x,y) als Vec2D-Vektor zurück.
reset() Löscht die Zeichnungen der Schildkröte und stellt ihre Standardwerte wieder her.
right(angle) Dreht die Schildkröte um die angegebenen Einheiten nach rechts.
setheading(to_angle) Setzt die Ausrichtung der Schildkröte auf to_angle.
setpos(x, y=None) Bewegt die Schildkröte zu einer absoluten Position.
setup(width=0.5, height=0.75, startx=None, starty=None) Setzt die Größe und Position des Hauptfensters.
  • WIssen
  • Kontakt
  • Datenschutz
  • Impressum
CodeNatter

Python im Browser mit Natter und Ideen von LearnyPy. Spielbilder aus der Bildbibliothek von Natter (CC0). Schriften Rubik und Fira Code (SIL Open Font License), auf dieser Seite selbst ausgeliefert.

  • WIssen
  • Kontakt
  • Datenschutz
  • Impressum
© 2023- CodeNatter. Alle Rechte vorbehalten.