Python / Pygame frage

Hier werden alle anderen GUI-Toolkits sowie Spezial-Toolkits wie Spiele-Engines behandelt.
Antworten
MLS
User
Beiträge: 2
Registriert: Mittwoch 3. Dezember 2014, 22:10

Hallo, versuche immoment mir Python beizubringen, bin dabei über dieses Tutorial gestossen https://www.spieleprogrammierer.de/wiki/Pygame-Tutorial.

Was ich gerne verstehen möchte ist, folgender code:

Code: Alles auswählen

 def __init__(self):
        self.__tileset = Tileset.Tileset("tileset.png", (255, 0, 255), 32, 32)
        self.__tileset.addTile("grass", 0, 0)
        self.__tileset.addTile("mud", 32, 0)
        self.__tileset.addTile("water", 64, 0)
        self.__tileset.addTile("block", 0, 32)
Dazu gehört dieses Bild https://www.spieleprogrammierer.de/w/im ... ileset.png

Woher weiss der Code das 0, 0 grass ist? Für mich ist 0, 0 nur die Ecke ganz oben links, das Tile jedoch ist grösser.
Habe auch keine Schleife oder so gefunden, welche das ganze Tile abgeht.

Danke für die Hilfe / Erklärung schonmla im Vorraus!
BlackJack

@MLS: Der Code weiss gar nichts, der Programmierer weiss das. Wenn die Grafik nicht von ihm selber ist, dann sieht er zumindest dass das Tile in der Grafik nach Grass aussieht und/oder das er es halt unter dem Namen benutzen möchte. Und ja 0, 0 beschreibt die linke obere Ecke des Tiles was natürlich grösser als ein einzelner Punkt ist. Die Tiles sind alle gleich gross und die Grösse wird woanders *einmal* eben für *alle* Tiles des Sets angegeben. Dazu schaust Du Dir am besten die Implementierung von `Tileset` an.

Schön ist der Code übrigens nicht, das sieht teilweise mehr nach Java als nach Python aus mit den vielen missbräuchlichen doppelten führenden Unterstrichen für ”private” Namen und trivialen Getter- und Setter-Methoden dafür. Die Namenschreibweisen entsrpechen auch den Java- und nicht den Python-Konventionen.

Edit: Ach Du meine Güte, und eine Datei pro supersimpler Klasse benutzen die da auch noch. :roll:
MLS
User
Beiträge: 2
Registriert: Mittwoch 3. Dezember 2014, 22:10

Danke für die schnelle Antwort! :)
Sollte ich mir da besser nichts abgucken? Gibt es andere Tutorials? Schaue mir auch Sachen bei Codeacademy an, sind die besser geeignet?

Also gibt es eine Schleife die eine Tile 32x32 gross macht, und mit den Werten sagt man dann nur, wo die schleife beginnt?


Edit:

Code: Alles auswählen

def addTile(self, name, startX, startY):
        self.__tileTypes[name] = TileType.TileType(name, startX, startY, self.__tileWidth, self.__tileHeight)

Von der schleife werden die Tiles gelesen, und in der __init__ funktion von Tilemap wird die grösse übergeben?
BlackJack

@MLS: Es gibt da keine Schleife die ein Tile 32×32 Pixel gross macht. Wozu bräuchte man da eine Schleife? Das sind doch nur Daten die das Rechteck beschreiben.
Antworten