Pygame-Tutorial
Aus Spieleprogrammierer-Wiki
(Unterschied zwischen Versionen)
[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= | + | <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= | + | <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= | + | <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= | + | <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= | + | <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.