image

image

Zu diesem Buch – sowie zu vielen weiteren dpunkt.büchern – können Sie auch das entsprechende E-Book im PDF-Format herunterladen. Werden Sie dazu einfach Mitglied bei dpunkt.plus+:

www.dpunkt.plus

Al Sweigart

Eigene Spiele programmieren – Python lernen

Der spielerische Weg zur Programmiersprache

image

Al Sweigart

Lektorat: Gabriel Neumann

nach der Originalvorlage von No Starch Press

Bibliografische Information der Deutschen Nationalbibliothek

ISBN:

1. Auflage 2017

Translation Copyright für die deutschsprachige Ausgabe © 2017 dpunkt.verlag GmbH

Copyright © 2017 by Al Sweigart. Title of English-language original: Invent Your Own Computer Games with Python, 4th Edition, ISBN 978-1-59327-795-6, published by No Starch Press.

Die vorliegende Publikation ist urheberrechtlich geschützt. Alle Rechte vorbehalten. Die Verwendung der Texte und Abbildungen, auch auszugsweise, ist ohne die schriftliche Zustimmung des Verlags urheberrechtswidrig und daher strafbar. Dies gilt insbesondere für die Vervielfältigung, Übersetzung oder die Verwendung in elektronischen Systemen.

5   4   3   2   1   0

Inhalt

Der Autor

Die Fachgutachterin der amerikanischen Ausgabe

Danksagung

Einleitung

Zielgruppe

Der Aufbau dieses Buches

Die Codebeispiele

Zeilennummern und Einrückungen

Lange Codezeilen

Python herunterladen und installieren

IDLE starten

Online Hilfe finden

1 Die interaktive Shell

Einfaches Rechnen

Integer und Fließkommazahlen

Ausdrücke

Ausdrücke auswerten

Syntaxfehler

Werte in Variablen speichern

Zusammenfassung

2 Programme schreiben

Stringwerte

Stringverkettung

Programme im Dateieditor von IDLE schreiben

Das Hello-World-Programm schreiben

Das Programm speichern

Das Programm ausführen

So funktioniert das Hello-World-Programm

Kommentare

Funktionen: Miniprogramme innerhalb von Programmen

Das Ende des Programms

Variablennamen

Zusammenfassung

3 Zahlen raten

Ein Beispieldurchlauf des Zahlenratespiels

Der Quellcode für das Zahlenratespiel

Das Modul random importieren

Zufallszahlen mit der Funktion random.randint() erzeugen

Den Spieler begrüßen

Flusssteuerungsanweisungen

Code in Schleifen wiederholen

Blöcke

for-Schleifen

Die Vermutung des Spielers abrufen

Werte mit den Funktionen int(), float() und str() umwandeln

Boolesche Werte

Vergleichsoperatoren

Bedingungen

Experimente mit booleschen Werten, Vergleichsoperatoren und Bedingungen

Der Unterschied zwischen = und ==

if-Anweisungen

Schleifen mit break vorzeitig abbrechen

Wenn der Spieler gewonnen hat

Wenn der Spieler verloren hat

Zusammenfassung

4 Ein Kalauerprogramm

Ein Beispieldurchlauf von Jokes

De Quellcode für Jokes

Funktionsweise des Codes

Maskierungszeichen

Einfache und doppelte Anführungszeichen

Der Schlüsselwortparameter end der Funktion print()

Zusammenfassung

5 Im Reich der Drachen

Spielverlauf von Dragon Realm

Ein Beispieldurchlauf von Dragon Realm

Das Flussdiagramm für Dragon Realm

Quellcode von Dragon Realm

Die Module random und time importieren

Funktionen

def-Anweisungen

Funktionen aufrufen

Wohin mit Funktionsdefinitionen?

Mehrzeilige Strings

while-Schleifen

Boolesche Operatoren

Der Operator and

Der Operator or

Der Operator not

Ausdrücke mit booleschen Operatoren auswerten

Rückgabewerte

Globaler und lokaler Gültigkeitsbereich

Funktionsparameter

Das Ergebnis anzeigen

Die Höhle mit dem freundlichen Drachen bestimmen

Die Hauptschleife des Spiels

Die Funktionen aufrufen

Neue Runde

Zusammenfassung

6 Der Debugger

Fehlerarten

Der Debugger

Den Debugger starten

Das Programm im Debugger schrittweise durchlaufen

Fehler finden

Haltepunkte setzen

Haltepunkte verwenden

Zusammenfassung

7 Galgenmännchen: Entwurf mit einem Flussdiagramm

Die Regeln für Galgenmännchen

Ein Beispieldurchlauf von Galgenmännchen

ASCII-Grafik

Programme mit Flussdiagrammen entwerfen

Das Flussdiagramm zeichnen

Verzweigungen in Flussdiagrammen

Das Spiel beenden oder neu starten

Erneut raten

Rückmeldung an den Spieler

Zusammenfassung

8 Galgenmännchen: Der Code

Der Quellcode von Galgenmännchen

Das Modul random importieren

Konstanten

Der Datentyp für Listen

Zugriff auf Listenelemente über den Index

Listenverkettung

Der Operator in

Methoden

Die Listenmethoden reverse() und append()

Die Methode split()

Ein Wort aus der Liste auswählen

Die Grafik anzeigen

Die Funktionen list() und range()

Listen- und Stringslices

Das zu erratende Wort mit Leerstellen anzeigen

Die Rateversuche des Spielers abrufen

Die Stringmethoden lower() und upper()

Die while-Schleife verlassen

elif-Anweisungen

Die Eingabe eines gültigen Werts sicherstellen

Dem Spieler eine weitere Runde anbieten

Die Funktionen im Galgenmännchen-Programm

Die Hauptschleife des Spiels

Die Funktion displayBoard() aufrufen

Den Spieler raten lassen

Gehört der Buchstabe zu dem Wort?

Hat der Spieler gewonnen?

Fehlversuche handhaben

Hat der Spieler verloren?

Das Spiel beenden oder zurücksetzen

Zusammenfassung

9 Galgenmännchen: Erweiterungen

Mehr Rateversuche hinzufügen

Dictionarys

Die Größe eines Dictionarys mit len() bestimmen

Der Unterschied zwischen Dictionarys und Listen

Die Dictionary-Methoden keys() und values()

Dictionarys in Galgenmännchen

Zufällige Auswahl aus einer Liste

Elemente aus Listen entfernen

Mehrfachzuweisung

Die Wortkategorie ausgeben

Zusammenfassung

10 Tic-Tac-Toe

Ein Beispieldurchlauf von Tic-Tac-Toe

Der Quellcode von Tic-Tac-Toe

Das Programm entwerfen

Das Spielbrett in Form von Daten darstellen

Die Strategie der Spiel-KI

Das Modul random importieren

Das Spielbrett anzeigen

Den Spieler zwischen X und O wählen lassen

Den ersten Zug auswürfeln

Eine Markierung auf dem Spielbrett vornehmen

Listenverweise

Listenverweise in makeMove()

Hat der Spieler gewonnen?

Die Spielbrettdaten duplizieren

Ist ein Feld belegt?

Einen Zug vom Spieler abrufen

Kurzschlussauswertung

Einen Zug von einer Zugliste auswählen

Der Wert None

Die KI gestalten

Prüfung auf einen Gewinnzug des Computers

Prüfung auf einen Gewinnzug des Spielers

Ecken, Mitte und Seitenfelder prüfen

Ist das Brett voll?

Die Hauptschleife des Spiels

Den Spielerbuchstaben auswählen und den ersten Zug auslosen

Der Zug des Spielers

Der Zug des Computers

Eine weitere Spielrunde anbieten

Zusammenfassung

11 Bagels

Ein Beispieldurchlauf von Bagels

Der Quellcode von Bagels

Das Flussdiagramm für Bagels

Import von random() und Definition von getSecretNum()

Ziffern durcheinanderwürfeln

Reihenfolge von Listenelementen mit random.shuffle() ändern

Die Geheimzahl aus durcheinandergewürfelten Ziffern zusammenstellen

Erweiterte Zuweisungsoperatoren

Berechnungen für die Hinweise

Die Listenmethode sort()

Die Stringmethode join()

Besteht der String nur aus Ziffern?

Das Spiel starten

Stringinterpolation

Die Hauptschleife des Spiels

Die Vermutung des Spielers abrufen

Die Hinweise gewinnen

Auf Sieg oder Niederlage prüfen

Nach einer weiteren Runde fragen

Zusammenfassung

12 Kartesische Koordinaten

Raster und kartesische Koordinaten

Negative Zahlen

Das Koordinatensystem eines Computerbildschirms

Rechentricks

Trick 1: Ein Minuszeichen verschlingt ein Pluszeichen zu seiner Linken

Trick 2: Zweimal Minus gibt Plus

Trick 3: Zwei Zahlen in einer Addition können den Platz tauschen

Beträge und die Funktion abs()

Zusammenfassung

13 Sonar-Schatzsuche

Ein Beispieldurchlauf der Sonar-Schatzsuche

Der Quellcode für die Sonar-Schatzsuche

Entwurf des Programms

Die Module random, sys und math importieren

Ein neues Spielbrett erstellen

Das Spielbrett zeichnen

Die x-Koordinaten am oberen Rand des Spielbretts zeichnen

Das Meer zeichnen

Eine Meeresreihe ausgeben

Die x-Koordinaten am unteren Rand ausgeben

Die zufällig verteilen Schatztruhen erstellen

Die Gültigkeit eines Zugs bestimmen

Einen Zug auf dem Spielbrett machen

Die nächstgelegene Schatztruhe finden

Werte mit der Listenmethode remove() entfernen

Den Zug des Spielers abrufen

Die Spielanleitung ausgeben

Die Hauptschleife des Spiels

Den Spielzustand anzeigen

Den Zug des Spielers verarbeiten

Eine Schatztruhe finden

Hat der Spieler gewonnen?

Hat der Spieler verloren?

Das Programm mit der Funktion sys.exit() beenden

Zusammenfassung

14 Die Caesar-Chiffre

Kryptografie und Verschlüsselung

Funktionsweise der Caesar-Chiffre

Ein Beispieldurchlauf der Caesar-Chiffre

Der Quellcode für die Caesar-Chiffre

Die maximale Schlüssellänge festlegen

Auswahl zwischen Ver- und Entschlüsselung

Die Nachricht vom Benutzer abrufen

Den Schlüssel vom Benutzer abrufen

Die Nachricht verschlüsseln oder entschlüsseln

Strings mit der Methode find() finden

Die einzelnen Buchstaben ver- bzw. entschlüsseln

Das Programm starten

Brute-Force-Entschlüsselung

Den Brute-Force-Modus hinzufügen

Zusammenfassung

15 Reversegam

Die Spielregeln von Reversegam

Ein Beispieldurchlauf von Reversegam

Der Quellcode von Reversegam

Module importieren und Konstanten einrichten

Die Datenstruktur für das Spielbrett

Die Datenstruktur für das Spielbrett auf dem Bildschirm ausgeben

Eine neue Datenstruktur für das Brett erstellen

Züge auf Gültigkeit prüfen

Die acht Richtungen prüfen

Prüfen, ob Steine gedreht werden müssen

Prüfen auf gültige Koordinaten

Eine Liste mit allen gültigen Zügen bekommen

Die Funktion bool() aufrufen

Die Punktzahl des Spielbretts ermitteln

Die Steinwahl des Spielers abfragen

Entscheiden, wer beginnt

Einen Spielstein auf dem Brett platzieren

Die Datenstruktur des Spielbretts kopieren

Bestimmen, was eine Ecke ist

Den Spielzug abfragen

Der Zug des Computers

Strategische Züge in Ecken

Eine Liste der besten Züge erstellen

Die Punkte auf dem Bildschirm ausgeben

Das Spiel starten

Ein Patt erkennen

Der Spieler ist am Zug

Der Spielzug des Computers

Die Spielschleife

Fragen, ob der Spieler erneut spielen möchte

Zusammenfassung

16 Reversegam-KI-Simulation

Der Computer spielt gegen sich selbst

Ein Beispieldurchlauf von Simulation 1

Der Quellcode für Simulation 1

Die Spielereingaben entfernen und einen Computerspieler hinzufügen

Den Computer mehrfach gegen sich selbst spielen lassen

Ein Beispieldurchlauf von Simulation 2

Quellcode für Simulation 2

Den Überblick über mehrere Spiele behalten

Die Funktionsaufrufe print() auskommentieren

Die KI mit Prozentsätzen bewerten

Die verschiedenen KI-Algorithmen vergleichen

Quellcode für Simulation 3

Wie die KI in Simulation 3 funktioniert

Die KI miteinander vergleichen

Zusammenfassung

17 Grafik einsetzen

pygame installieren

Hello World in pygame

Beispieldurchlauf des pygame Hello World

Quellcode für pygame Hello World

Das Modul pygame importieren

pygame initialisieren

Das pygame-Fenster einrichten

Tupel

Surface-Objekte

Farb-Variablen einrichten

Im pygame-Fenster Text ausgeben

Text mit Schriftarten formatieren

Ein Font-Objekt ausgeben

Die Textposition mit Rect-Attributen festlegen

Ein Surface-Objekt mit Farbe füllen

Die Zeichenfunktionen von pygame

Ein Polygon zeichnen

Eine Linie zeichnen

Einen Kreis zeichnen

Eine Ellipse zeichnen

Ein Rechteck zeichnen

Pixel färben

Die blit()-Methode für Surface-Objekte

Das Surface-Objekt auf dem Bildschirm ausgeben

Ereignisse und die Game-Schleife

Ereignis-Objekte erhalten

Das Programm beenden

Zusammenfassung

18 Grafiken animieren

Beispieldurchlauf des Animationsprogramms

Der Quellcode für das Animationsprogramm

Kästen bewegen und abprallen lassen

Die Konstanten einrichten

Konstanten für die Richtung

Konstanten für die Farbe

Datenstrukturen für die Kästen einrichten

Die Game-Schleife

Wenn der Spieler aufhören möchte

Die Kästen bewegen

Einen Kasten abprallen lassen

Kästen an ihren neuen Positionen im Fenster zeichnen

Das Fenster auf den Bildschirm zeichnen

Zusammenfassung

19 Kollisionserkennung

Beispieldurchlauf der Kollisionserkennung

Der Quellcode für die Kollisionserkennung

Die Module importieren

Das Programm mit einem Zeitgeber steuern

Das Fenster und die Datenstrukturen einrichten

Variablen zur Bewegungsverfolgung einrichten

Ereignisse verarbeiten

Das KEYDOWN-Ereignis

Das Ereignis KEYUP

Den Spieler teleportieren

Neue Nahrungsquadrate hinzufügen

Den Spieler im Fenster bewegen

Den Spieler im Fenster zeichnen

Auf Kollisionen prüfen

Die Nahrungsquadrate im Fenster zeichnen

Zusammenfassung

20 Toneffekte und Bilder

Bilder mit Sprites hinzufügen

Ton-und Bilddateien

Beispieldurchlauf des Sprites- und Sound-Programms

Der Code für das Sprites- und Sounds-Programm

Das Fenster und die Datenstruktur einrichten

Ein Sprite hinzufügen

Die Größe eines Sprites verändern

Die Musik und die Toneffekte einrichten

Sound-Dateien hinzufügen

Den Ton ein- und ausschalten

Den Spieler im Fenster zeichnen

Auf Kollisionen prüfen

Die Kirschen im Fenster zeichnen

Zusammenfassung

21 Dodger mit Ton und Grafik

Wiederholung: Die grundlegenden Datentypen in pygame

Ein Beispieldurchlauf von Dodger

Der Quellcode von Dodger

Die Module importieren

Die Konstanten einrichten

Funktionen definieren

Das Spiel beenden und unterbrechen

Kollisionen mit Gegnern feststellen

Text in das Fenster zeichnen

pygame initialisieren und das Fenster einrichten

Schrift-, Klang- und Bildobjekte einrichten

Den Startbildschirm anzeigen

Das Spiel starten

Die Spielschleife

Tastaturereignisse

Mausbewegungen

Neue Gegner hinzufügen

Die Figur des Spielers und die Gegner bewegen

Die Cheats

Gegner entfernen

Das Fenster zeichnen

Den Punktestand ausgeben

Die Spielerfigur und die Gegner zeichnen

Auf Kollisionen prüfen

Game Over

Das Spiel abwandeln

Zusammenfassung

Stichwortverzeichnis

Für Caro

Der Autor

Al Sweigart ist Softwareentwickler, Fachbuchautor und ein echter Frood, der weiß, wo sein Handtuch ist. Er hat mehrere Programmierbücher für Einsteiger geschrieben, darunter Routineaufgaben mit Python automatisieren und Coole Spiele mit Scratch, die ebenfalls beim dpunkt.verlag erschienen sind. Auf seiner Website https://inventwithpython.com/ stehen seine Bücher unter einer Creative-Commons-Lizenz auch kostenlos zur Verfügung.

Die Fachgutachterin der amerikanischen Ausgabe

Ari Lacenski ist Entwicklerin für Android-Anwendungen und Python-Software. Sie lebt in Bay Area, wo sie auf http://gradlewhy.ghost.io/ über Android-Programmierung schreibt und als Mentorin für Women Who Code dient.

Danksagung

image

Ohne die herausragende Arbeit des Teams von No Starch Press wäre dieses Buch nicht möglich gewesen. Ich danke meinem Herausgeber Bill Pollock und meinen Lektoren Laurel Chun, Jan Cash und Tyler Ortman für ihre unglaubliche Hilfe während des gesamten Vorgangs, meiner Fachgutachterin Ari Lacenski für ihre gründliche Durchsicht und Josh Ellingson für ein weiteres hervorragendes Titelbild.

Einleitung

image

Die ersten Videospiele, die ich im Kindesalter spielte, machten mich süchtig. Ich wollte sie nicht nur spielen, ich wollte selbst so etwas gestalten. Damals fand ich ein Buch, das mir zeigte, wie ich eigene erste Programme und Spiele schreiben konnte. Das machte Spaß und war ganz einfach. Die ersten Spiele, die ich entwickelte, waren ähnlich wie diejenigen in diesem Buch. Sie waren nicht so ausgefeilt wie die Nintendo-Spiele, die meine Eltern für mich kauften, aber sie waren mein eigenes Werk.

Jetzt, als Erwachsener, habe ich immer noch Spaß am Programmieren und werde sogar dafür bezahlt. Doch auch wenn Sie nicht vorhaben, Programmierer zu werden, ist Programmierung eine nützliche und unterhaltsame Fähigkeit. Sie schulen sich dabei, logisch zu denken, planvoll vorzugehen und ihre Ideen kritisch zu betrachten, wenn Sie Fehler in Ihrem Code gefunden haben.

Viele Programmierbücher für Einsteiger fallen in eine von zwei verschiedenen Kategorien. Die erste Art von Büchern konzentriert sich so sehr auf »Spielentwicklungssoftware« oder stark vereinfachende Sprachen, dass man das, was da gelehrt wird, gar nicht mehr als »Programmieren« bezeichnen kann. Die zweite Kategorie umfasst Bücher, die Programmierung in der Art eines Mathebuchs abhandeln: lauter Lehrsätze und Begriffe, aber nur wenige praktische Anwendungen für die Leser. Das vorliegende Buch verfolgt einen anderen Ansatz und bringt Ihnen das Programmieren am Beispiel von Videospielen bei. Ich stelle Ihnen den Quellcode der Spiele jeweils zu Anfang vor und erkläre dann die Programmierprinzipien anhand dieser Beispiele. Diese Vorgehensweise war für mich selbst von entscheidender Bedeutung, als ich Programmieren lernte. Je mehr ich darüber erfuhr, wie die Programme anderer Leute funktionierten, umso mehr Ideen bekam ich für meine eigenen.

Sie brauchen nicht mehr als einen Computer, den Python-Interpreter (eine kostenlose Software) und dieses Buch. Wenn Sie gelernt haben, wie Sie die Spiele in diesem programmieren, können Sie auch Ihre eigenen entwickeln.

Computer sind unglaubliche Maschinen. Zu lernen, wie man sie programmiert, ist gar nicht so schwer, wie die meisten Leute glauben. Ein Computer-programm ist eine Folge von Anweisungen, die ein Computer verstehen kann, ähnlich wie ein Buch eine Folge von Sätzen ist, die der Leser verstehen kann. Um einen Computer anzuweisen, etwas zu tun, müssen Sie ein Programm in einer Sprache schreiben, die er versteht. In diesem Buch lernen Sie die Programmiersprache Python kennen. Es gibt noch viele andere Programmiersprachen, die Sie lernen können, z. B. BASIC, Java, JavaScript, PHP oder C++.

Als Kind habe ich BASIC gelernt, aber neuere Programmiersprachen wie Python lassen sich noch einfacher lernen. Python wird auch von professionellen Programmierern sowohl bei der Arbeit als auch für Hobbyprojekte verwendet. Installation und Verwendung sind außerdem völlig kostenlos. Sie brauchen lediglich eine Internetverbindung, um die Sprache herunterzuladen.

Da Videospiele nichts anderes sind als Computerprogramme, bestehen sie ebenfalls aus Anweisungen. Im Vergleich zu den Spielen für die Xbox, die Play-Station oder den Nintendo wirken diejenigen, die Sie in diesem Buch erstellen werden, ziemlich simpel. Sie weisen keine anspruchsvolle Grafik auf, sondern sind absichtlich einfach gehalten, sodass Sie sich drauf konzentrieren können, Programmieren zu lernen. Außerdem müssen Spiele nicht kompliziert sein, um Spaß zu machen.

Zielgruppe

Programmieren an sich ist nicht schwer. Dagegen kann es durchaus schwer sein, Anleitungen zu finden, die einem sagen, wie man interessante Dinge programmiert. Andere Computerbücher behandeln viele Themen, die Neulinge gar nicht brauchen. Dieses Buch zeigt Ihnen, wie Sie Ihre eigenen Spiele programmieren. Damit erwerben Sie eine nützliche Fähigkeit und haben außerdem unterhaltsame Spiele, die Sie stolz vorstellen können. Dieses Buch richtet sich an folgende Leser:

Der Aufbau dieses Buches

In den meisten Kapiteln dieses Buches wird jeweils ein neues Spielprojekt vorgestellt und erläutert. Einige wenige Kapitel sind zusätzlichen interessanten Themen gewidmet, z. B. dem Debugging. Neue Programmierprinzipien werden jeweils dann vorgestellt, wenn sie in den Spielen vorkommen. Die Kapitel sollten in der vorliegenden Reihenfolge gelesen werden. Die folgende kurze Aufstellung zeigt, was Sie in den einzelnen Kapiteln erwartet:

Die Codebeispiele

Die meisten Kapitel dieses Buches beginnen mit einem Beispieldurchlauf des Programms, das in dem Kapitel vorgestellt wird. Dieser Durchlauf zeigt, wie das Programm aussieht, wenn Sie es ausführen. Die Eingaben des Benutzers sind durch Fettdruck gekennzeichnet.

Ich rate Ihnen, den Code der einzelnen Programme jeweils selbst in den IDLE-Dateieditor einzugeben, anstatt ihn einfach nur herunterzuladen und zu kopieren. Wenn Sie sich die Zeit nehmen, den Code abzutippen, werden Sie mehr davon im Kopf behalten.

Zeilennummern und Einrückungen

Beim Abtippen des Quellcodes aus dem Buch dürfen Sie die Nummern zu Beginn der einzelnen Zeilen nicht mit eingeben! Nehmen wir an, Sie sehen die folgende Codezeile:

9. number = random.randint(1, 20)

Hier dürfen Sie weder 9. noch das darauffolgende Leerzeichen eingeben, sondern nur Folgendes:

number = random.randint(1, 20)

Die Zeilennummern stehen hier nur, um in den Erklärungen auf die einzelnen Zeilen verweisen zu können. Sie gehören nicht zum Quellcode des Programms.

Abgesehen von diesen Zeilennummern jedoch müssen Sie den Code genau so eingeben, wie er in dem Buch erscheint. Einige Zeilen sind mit vier, acht oder mehr Leerzeichen eingerückt. Diese Leerzeichen zu Anfang einer Zeile wirken sich darauf aus, wie Python die Anweisungen deutet, weshalb es sehr wichtig ist, sie einzuschließen.

Betrachten Sie dazu das folgende Beispiel. Die Leerzeichen sind durch dicke Punkte (•) dargestellt, sodass Sie sie sehen können:

while guesses < 10:

····if number == 42:

········print('Hello')

Die erste Zeile ist nicht eingerückt, die zweite um vier und die dritte um acht Leerzeichen. In den tatsächlichen Beispielen in dem Buch sind die Leerzeichen zwar nicht durch solche Punkte gekennzeichnet, aber da alle Zeichen in IDLE die gleiche Breite aufweisen, können Sie die Anzahl der Leerzeichen einfach dadurch bestimmen, dass Sie die Anzahl der Zeichen in der darüber- oder darunterliegenden Zeile zählen.

Lange Codezeilen

Manche Codeanweisungen sind so lang, dass sie nicht mehr in eine Buchzeile passen und daher in die nächste Codezeile umbrechen. Allerdings passt die Zeile auf den Computerbildschirm. Geben Sie sie dort in einer einzigen Zeile ein, ohne zwischendurch die Eingabetaste zu drücken. Ob eine Anweisung einfach nur fortgesetzt wird oder ob tatsächlich eine neue Anweisung beginnt, können Sie anhand der Zeilennummern auf der linken Seite erkennen. Das folgende Beispiel zeigt nur zwei Anweisungen:

1. print('This is the first instruction!xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

xxxxxxxxxxxx')

2. print('This is the second instruction, not the third instruction.')

Die erste Anweisung bricht in die zweite Buchzeile um. Da die zweite Buchzeile keine Zeilennummer trägt, können Sie erkennen, dass es sich immer noch um die erste Codezeile handelt.

Python herunterladen und installieren

Um die Programme eingeben und ausprobieren zu können, Sie müssen eine Software installieren, die als Python-Interpreter bezeichnet wird und die Anweisungen versteht, die Sie in der Sprache Python geschrieben habe. Den Python-Interpreter werde ich im Folgenden der Einfachheit halber auch einfach als Python bezeichnen.

In diesem Abschnitt zeige ich Ihnen, wie Sie Python 3 – genauer gesagt, Python 3.4 – für Windows, OS X und Ubuntu herunterladen. Es gibt schon neuere Versionen als 3.4, aber das Modul pygame, das wir in den Kapiteln 17 bis 21 verwenden, unterstützt zurzeit nur die Versionen bis 3.4.

Beachten Sie auch, dass es erhebliche Unterschiede zwischen Python 2 und Python 3 gibt. Die Programme in diesem Buch verwenden Python 3. Wenn Sie versuchen, Sie mit Python 2 auszuführen, erhalten Sie Fehlermeldungen. Das ist so wichtig, dass ich bei jedem Programm den kleinen Pinguin hinzugefügt habe, um Sie darauf aufmerksam zu machen.

image

Wenn Sie mit Windows arbeiten, laden Sie den MSI-Installer für Windows x86-64 von https://www.python.org/downloads/release/python-344/ herunter und doppelklicken darauf. Möglicherweise müssen Sie das Administratorkennwort für Ihren Computer eingeben.

Folgen Sie den Anweisungen, die der Installer anzeigt, um Python zu installieren. Die Vorgehensweise ist wie folgt:

  1. Wählen Sie Install for All Users und klicken Sie auf Weiter.
  2. Bestätigen Sie die Installation im Ordner C:\Python34, indem Sie auf Weiter klicken.
  3. Klicken Sie auf Weiter, um den Abschnitt Customize Python zu überspringen.

Wenn Sie mit OS X arbeiten, laden Sie den MSI-Installer für Mac OS X 64 Bit/32 Bit von https://www.python.org/downloads/release/python-344/ herunter und doppelklicken darauf. Möglicherweise müssen Sie das Administratorkennwort für Ihren Computer eingeben.

Folgen Sie den Anweisungen, die der Installer anzeigt, um Python zu installieren. Die Vorgehensweise ist wie folgt:

  1. Wenn Sie eine Warnung der Art »Python.mpkg kann nicht geöffnet werden, da es von einem nicht verifizierten Entwickler stammt« erhalten, klicken Sie bei gedrückter image-Taste auf die Datei Python.mpkg und wählen Öffnen aus dem dann angezeigten Menü. Möglicherweise müssen Sie das Administratorpasswort für Ihren Computer eingeben.
  2. Klicken Sie im Willkommensabschnitt auf Continue und dann auf Agree, um die Lizenzverarbeitung zu akzeptieren.
  3. Wählen Sie Macintosh HD (bzw. den Namen Ihrer Festplatte) aus und klicken Sie auf Install.

Wenn Sie Ubuntu verwenden, könne Sie Python wie folgt aus dem Ubuntu Software Center heraus installieren:

  1. Öffnen Sie das Ubuntu Software Center.
  2. Geben Sie in das Suchfeld oben rechts in dem Fenster Python ein.
  3. Wählen Sie IDLE (Python 3.4 GUI 64 bit) aus.
  4. Klicken Sie auf Install. Möglicherweise müssen Sie das Administratorpasswort Computer eingeben, um die Installation abzuschließen.

Sollten die angegebenen Vorgehensweisen nicht funktionieren, finden Sie alternative Installationsanweisungen für Python 3.4 auf https://www.nostarch.com/inventwithpython/.

IDLE starten

IDLE steht für Interactive Development Enrivonment, also »interaktive Entwicklungsumgebung«. Es handelt sich dabei um eine Art Textverarbeitungssystem zum Schreiben von Python-Programmen. Je nach Betriebssystem müssen Sie zum Starten dieser Software jeweils unterschiedlich vorgehen:

Das Fenster, das Sie beim Start von IDLE sehen, ist die interaktive Shell (siehe Abbildung). Wenn Sie hinter der Eingabeaufforderung >>> Python-Anweisungen in die Shell eingeben, führt Python sie aus. Anschließend erscheint wieder die Eingabeaufforderung >>>, um auf Ihre nächste Anweisung zu warten.

image

Abb. E–1Die interaktive Shell von IDLE

Online Hilfe finden

Die Quellcodedateien und andere Materialien zu diesem Buch finden Sie auf https://www.nostarch.com/inventwithpython/. Wenn Sie Fragen zur Programmierung im Zusammenhang mit diesem Buch haben, können Sie auf https://reddit.com/r/inventwithpython/ nachschauen oder sich über al@inventwithpython.com an mich wenden (in englischer Sprache).

Bevor Sie Ihre Fragen stellen, sollten Sie aber Folgendes unternehmen:

Je besser Sie Ihre Programmierfragen formulieren, umso besser können andere Ihnen helfen. Gehen Sie daher in solchen Fällen immer wie folgt vor:

Nun sind Sie bereit zu lernen, wie Sie Ihre eigenen Computerspiele programmieren!

1

Die interaktive Shell

image

Bevor Sie Spiele entwickeln können, müssen Sie erst einige elementare Programmierprinzipien lernen. In diesem Kapitel erfahren Sie daher, wie Sie die interaktive Shell von Python nutzen und grundlegende Rechenoperationen durchführen.

Themen in diesem Kapitel

Einfaches Rechnen

Starten Sie IDLE nach der Anleitung im Abschnitt »IDLE starten« in der Einleitung. Als Erstes wollen wir Python nutzen, um einige einfache Rechenaufgaben zu lösen. Die interaktive Shell lässt sich wie ein Taschenrechner benutzen. Geben Sie 2 + 2 an der Eingabeaufforderung >>> der Shell ein und drücken Sie die Eingabetaste (die je nach Tastatur image oder image heißen kann). Abbildung 1–1 zeigt, wie die Rechenaufgabe in der interaktiven Shell angezeigt wird. Wie Sie sehen, antwortet die Shell mit der Zahl 4.

image

Abb. 1–1Eingabe von 2 + 2 in die aktive Shell

Diese Rechenaufgabe ist ein einfacher Programmbefehl. Das Pluszeichen weist den Computer an, die beiden Zahlen 2 und 2 zu addieren. Der Computer erledigt diese Aufgabe und gibt in der folgenden Zeile die Zahl 4 aus. Tabelle 1–1 nennt weitere mathematische Symbole, die in Python zur Verfügung stehen.

Operator

Operation

+

Addition

Subtraktion

*

Multiplikation

/

Division

Tab. 1–1Mathematische Operatoren

Das Minuszeichen subtrahiert Zahlen, das Sternchen multipliziert sie und der Schrägstrich teilt sie. Bei der Verwendung auf diese Weise werden +, –, * und / als Operatoren bezeichnet. Sie weisen Python an, was es mit den Zahlen auf beiden Seiten tun soll.

Integer und Fließkommazahlen

Integer sind ganze Zahlen wie 4, 99 oder 0. Bei Fließkommazahlen dagegen handelt es sich um Dezimalbrüche wie 3.5, 42.1 oder 5.0 (wobei in Programmiersprachen statt des im Deutschen üblichen Kommas ein Punkt verwendet wird). In Python ist 5 ein Integer und 5.0 eine Fließkommazahl.

Diese Zahlen werden als Werte bezeichnet. (Wir werden später noch andere Arten von Werten kennenlernen.) In der Rechenaufgabe, die Sie in die Shell eingegeben haben, sind 2 und 2 Integerwerte.

Ausdrücke

Die Rechenaufgabe 2 + 2 ist ein Beispiel für einen Ausdruck. Wie Abbildung 1–2 zeigt, bestehen Ausdrücke aus Werten (den Zahlen), die durch Operatoren (die Rechenzeichen) verbunden sind, um daraus einen neuen Wert zu bilden, der im Code verwendet werden kann. Computer können Millionen von Ausdrücken in Sekundenschnelle berechnen.

image

Abb. 1–2Ausdrücke bestehen aus Werten und Operatoren

Versuchen Sie, einige Ausdrücke in die interaktive Shell einzugeben. Drücken Sie nach jedem dieser Ausdrücke image:

>>> 2+2+2+2+2

10

>>> 8*6

48

>>> 10-5+6

11

>>> 2 + 2

4

Diese Ausdrücke sehen alle wie ganz normale Rechenaufgaben aus. Beachten Sie aber die Leerzeichen in dem Beispiel 2 +2. In Python können Sie beliebig viele Leerzeichen zwischen Werte und Operatoren schreiben. Eingaben in die aktive Shell müssen jedoch immer am Anfang der Zeile beginnen (ohne Leerzeichen davor).

Ausdrücke auswerten

Wenn ein Computer den Ausdruck 10 + 5 verarbeitet und den Wert 15 zurückgibt, so spricht man davon, dass er den Ausdruck auswertet. Das bedeutet, dass der Ausdruck auf einen einzigen Wert reduziert wird. Wenn Sie eine Rechenaufgabe lösen, reduzieren Sie sie damit auch auf einen einzigen Wert, nämlich das Ergebnis. Die Ausdrücke 10 + 5 und 10 + 3 + 2 werden beide zu 15 ausgewertet.

Wenn Python einen Ausdruck auswertet, führt es die Operationen in der gleichen Reihenfolge aus, wie Sie es beim Rechnen tun. Dabei gelten die folgenden Regeln:

Der Ausdruck 1 + 2 * 3 + 4 ergibt daher 11 und nicht 13, da zuerst 2 * 3 berechnet wird. Lautete die Aufgabe stattdessen (1 + 2) * (3 + 4), würde sich 21 ergeben, da (1 + 2) und (3 + 4) in Klammern sehen und daher vor der Multiplikation ausgewertet werden.

Ausdrücke können eine beliebige Größe aufweisen, werden aber stets zu einem einzigen Wert ausgewertet. Auch einzelne Werte können Ausdrücke sein. So wird beispielsweise der Ausdruck 15 zu dem Wert 15 ausgewertet. Der Ausdruck 8 * 3 / 2 + 2 + 7 - 9 ergibt 21. Dabei erfolgt die Berechnung in den folgenden Schritten:

image

Der Computer führt zwar alle diese Schritte durch, doch in der interaktiven Shell sehen Sie nichts davon, sondern nur das Ergebnis:

>>> 8 * 3 / 2 + 2 + 7 - 9

12.0

Ausdrücke mit dem Divisionsoperator / werden stets zu einer Fließkommazahl ausgewertet, hier beispielsweise 24 / 2 zu 12.0. Mathematische Operationen, an denen auch nur ein Fließkommawert beteiligt ist, ergeben wiederum Fließkommawerte. In unserem Beispiel wird deshalb 12.0 + 2 zu 14.0 ausgewertet.

Syntaxfehler

Wenn Sie 5 + in die interaktive Shell eingeben, erhalten Sie die folgende Fehlermeldung:

>>> 5 +

SyntaxError: invalid syntax

Das liegt daran, dass 5 + kein Ausdruck ist. Ausdrücke bestehen aus Werten, die durch Operatoren verbunden sind, und der Operator + erwartet einen Wert davor und dahinter. Wenn ein erwarteter Wert fehlt, wird eine Fehlermeldung angezeigt.

SyntaxError