Pygame-Tutorial

Aus Spieleprogrammierer-Wiki
(Unterschied zwischen Versionen)
Wechseln zu: Navigation, Suche
[gesichtete Version][unmarkierte Version]
K
(Die Klasse Tileset)
Zeile 311: Zeile 311:
 
Zuletzt wird noch ein Dictionary für die Tile-Typen angelegt, das aber erst einmal leer bleibt.
 
Zuletzt wird noch ein Dictionary für die Tile-Typen angelegt, das aber erst einmal leer bleibt.
  
<sourcecode lang=python line start=23>
+
<sourcecode lang=python line start=8>
 +
# Verwaltet die Tileset Grafik und eine Liste mit Tile-Typen.
 
class Tileset(object):
 
class Tileset(object):
 +
    # Im Konstruktor laden wir die Grafik
 +
    # und erstellen ein leeres Dictionary für die Tile-Typen.
 
     def __init__(self, image, colorkey, tileWidth, tileHeight):
 
     def __init__(self, image, colorkey, tileWidth, tileHeight):
         self.__image = loadImage(image, colorkey)
+
         self.__image = Utils.loadImage(image, colorkey)
 
         self.__tileWidth = tileWidth
 
         self.__tileWidth = tileWidth
 
         self.__tileHeight = tileHeight
 
         self.__tileHeight = tileHeight
Zeile 320: Zeile 323:
 
         self.__tileTypes = dict()
 
         self.__tileTypes = dict()
 
</sourcecode>
 
</sourcecode>
 +
 +
Die <tt>loadImage</tt>-Funktion haben wir in das Modul <tt>Utils</tt> ausgelagert. Also das <tt>import Utils</tt> am Anfang des Moduls nicht vergessen.
  
 
Um das Bild anzeigen zu können, bzw. Ausschnitte daraus, erstellen wir eine Funktion <tt>getImage</tt>, die das Bild zurückliefert. Außerdem ermöglichen wir es, das Bild gegen eine neues auszutauschen. Wenn während des Spiels so ein Tausch des Tileset-Bildes öfter vorkommen soll, ist es aber ratsamer, alle Bilder zum Beispiel in einer Liste zu speichern und nicht jedes Mal neu zu laden.
 
Um das Bild anzeigen zu können, bzw. Ausschnitte daraus, erstellen wir eine Funktion <tt>getImage</tt>, die das Bild zurückliefert. Außerdem ermöglichen wir es, das Bild gegen eine neues auszutauschen. Wenn während des Spiels so ein Tausch des Tileset-Bildes öfter vorkommen soll, ist es aber ratsamer, alle Bilder zum Beispiel in einer Liste zu speichern und nicht jedes Mal neu zu laden.
  
<sourcecode lang=python line start=31>
+
<sourcecode lang=python line start=19>
 
     def getImage(self):
 
     def getImage(self):
 
         return self.__image
 
         return self.__image
  
 
     def setImage(self, image, colorkey):
 
     def setImage(self, image, colorkey):
         self.__image = loadImage(image, colorkey)
+
         self.__image = Utils.loadImage(image, colorkey)
 
</sourcecode>
 
</sourcecode>
  
 
Ebenfalls sehr einfach sind die drei Funktionen, um die Größe der Tiles zu bekommen:
 
Ebenfalls sehr einfach sind die drei Funktionen, um die Größe der Tiles zu bekommen:
  
<sourcecode lang=python line start=37>
+
<sourcecode lang=python line start=25>
 
     def getTileWidth(self):
 
     def getTileWidth(self):
 
         return self.__tileWidth
 
         return self.__tileWidth
Zeile 346: Zeile 351:
 
Kommen wir zur wichtigsten Funktion: Das Hinzufügen eines Tile-Typen. Das ist im Grunde auch nicht sonderlich kompliziert. Wir fügen einfach eine neue Instanz der <tt>TileType</tt>-Klasse in unser Dictionary ein, mit passenden Parametern:
 
Kommen wir zur wichtigsten Funktion: Das Hinzufügen eines Tile-Typen. Das ist im Grunde auch nicht sonderlich kompliziert. Wir fügen einfach eine neue Instanz der <tt>TileType</tt>-Klasse in unser Dictionary ein, mit passenden Parametern:
  
<sourcecode lang=python line start=46>
+
<sourcecode lang=python line start=34>
 +
    # Neuen Tile-Typ hinzufügen.
 
     def addTile(self, name, startX, startY):
 
     def addTile(self, name, startX, startY):
 
         self.__tileTypes[name] = TileType.TileType(name, startX, startY, self.__tileWidth, self.__tileHeight)
 
         self.__tileTypes[name] = TileType.TileType(name, startX, startY, self.__tileWidth, self.__tileHeight)
Zeile 353: Zeile 359:
 
Auch das Abfragen eines Types ist leicht, einfach über den Key den passenden Wert zurückliefern:
 
Auch das Abfragen eines Types ist leicht, einfach über den Key den passenden Wert zurückliefern:
  
<sourcecode lang=python line start=49>
+
<sourcecode lang=python line start=38>
 +
    # Versuchen, einen Tile-Type per Name in der Liste zu finden.
 +
    # Falls der Name nicht existiert geben wir None zurück.
 
     def getTile(self, name):
 
     def getTile(self, name):
 
         try:
 
         try:

Version vom 28. Oktober 2011, 16:49 Uhr

Klicke hier, um diese Version anzusehen.

Meine Werkzeuge
Namensräume
Varianten
Aktionen
Navigation
Werkzeuge