Besonders interessant ist hier die Klasse dataFile (Listing 6), die dazu dient, die darzustellenden Daten aus einer CSV-Datei einzulesen. Dazu erzeugen Sie eine Instanz der Klasse und rufen deren Methode loadFile auf, der Sie als Argumente den Namen der zu ladenden Datei sowie den verwendeten Separator (hier das Komma) mitgeben:
df = dataFile() df.loadFile ( "tempdata.csv", "," )
Nach dem Laden der Datei liest getColumn eine angeforderte Spalte aus. Möchten Sie die Daten im Programm als Ganzzahl- oder Fließkomma-Wert behandeln, teilen Sie der Funktion dies über das entsprechende Argument mit. Standardmäßig liefert sie Zeichenketten zurück. Eine Prüfung, die feststellt, ob sich der enthaltene Wert tatsächlich im vorgegebenen Datentyp zurückgeben lässt, findet nicht statt.
Die Klasse dataFile enthält mit printTable eine für Debugging-Zwecke gedachte Funktion, die die ersten 25 Zeilen der Datentabelle im Terminal ausgibt.
Listing 6
class dataFile:
columns = list()
def __init__ ( self ):
pass
def loadFile ( self, fileName, separator ):
dataFile = file ( fileName, "r" )
firstTime = True
for line in dataFile.readlines():
lineParts = line.split ( separator )
if firstTime == True:
for index, cell in enumerate ( lineParts ):
self.columns.append ( list() )
self.columns [ index ].append ( cell.strip ( "\r\n" ) )
firstTime = False
else:
for index, cell in enumerate ( lineParts ):
self.columns [ index ].append ( cell.strip ( "\r\n" ) )
def getColumn ( self, column, columnType = None ):
if columnType == None:
return self.columns [ column ]
elif columnType == "INT":
output = list()
for value in self.columns [ column ]:
output.append ( int ( value ) )
return output
elif columnType == "FLOAT":
output = list()
for value in self.columns [ column ]:
output.append ( float ( value ) )
return output
def printTable ( self ):
columnIndex = 0
for i in range ( 25 ):
text = ""
for column in self.columns:
text += column [ i ] + "\t"
print text
Fazit
Sie haben im Verlauf dieses Artikels die meisten Grafik- und Zeichenfunktionen von Pygame kennengelernt. Dabei lag der Fokus durchweg auf den grafischen Aspekten – ein Dame-Spiel lässt sich sicherlich intelligenter programmieren als in checkers.py dargestellt. Die Beispiele können aber trotzdem als Ausgangspunkt dafür dienen, eigene Programme mit ansprechenden Grafiken anzureichern.
Darüber hinaus stehen Python und Pygame ja nicht nur für den Raspberry Pi im Speziellen oder Linux im Allgemeinen zur Verfügung, sondern lassen sich auf allen gängigen und etlichen weniger bekannten Betriebssystemen einsetzen. Was Sie mit diesen Werkzeugen entwickeln, lässt sich daher mit wenig Aufwand auf andere Hard- und Software-Plattformen portieren.
Der Autor
Scott Sumner arbeitet als Producer/Educator am Mayborn Science Theater (http://www.starsatnight.org), dem Planetarium des Central Texas College in Killeen. Mit Python and Pygame erstellt er Visualisierungen und Ausstellungsstücke. In seiner Freizeit bastelt der passionierte Modellbahner gerne mit elektronischen Komponenten herum.
Bildnachweis
Für Abbildung 1 und Abbildung 2 kamen folgende Grafiken zum Einsatz:
network.png– ddpavumba, FreeDigitalPhotos.netlaptop.png– jannoon028, FreeDigitalPhotos.netpresentation.png– Stuart Miles, FreeDigitalPhotos.net
Glossar
- Surface
-
Im Pygame-Kontext eine Variable, die grafische Informationen repräsentiert.
- Screen
-
Bezeichnet in Pygame die für den Benutzer sichtbare Surface.
- blitten
-
Das Kopieren einer Surface oder eines Rects auf ein anderes Objekt desselben Typs.





