Aus Raspberry Pi Geek 04/2014

Grafikausgaben mit Python und Pygame (Seite 4)

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.net
  • laptop.png – jannoon028, FreeDigitalPhotos.net
  • presentation.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.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: HeftseitenPreis €0,99
(inkl. 19% MwSt.)
RASPBERRY PI GEEK KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Raspberry Pi Geek bei Google Play Readly Logo
Nach oben