ich schreibe gerade mit python /pygame ein kleines Jump and run Spiel.
Nun zum Problem:
Ich habe mir eine Art "ressourceLoader"-Klasse geschrieben. diese verwaltet ein dictionary indem alle Graphiken mit Filename abgelegt sind. Will ich nun irgendwo im Programm eine Graphik laden führe ich eine methode dieser ressource-loader klasse aus, die mir die entsprechende graphik aus dem dict zurückgibt.
Sieht folgendermaßen aus:
Code: Alles auswählen
import pygame
import os
class RessourceLoader():
def __init__(self):
self.graphicDict = {}
def load_graphic(self, filename):
path = os.path.join('..', 'data', 'gfx', filename)
try:
if not path in self.graphicDict:
self.graphicDict[filename] = pygame.image.load(path).convert_alpha()
except:
print("Error while loading graphic: ", path)
return self.graphicDict[filename]
Klar, ich könnte es immer weiter durchgeben als Parameter, doch das macht mir das ganze ein wenig zu unübersichtlich.
Game -> Levelmanager -> Level -> Map -> Sprite -> Animation -> Image(hier wird die methode erst aufgerufen)
Ihr seht das ganze ist ziemlich verzweigt. Und um Hintergrundbilder o.ä. zu laden kann ich ähnliche ketten aufstellen.
So müssten 75% meiner Klassen im gesamten Spiel diesen ressourceLoader als Parameter haben. gefällt mir rigendwie nicht:/
Gibt es eine "schöne" Möglichkeit wie ich bei programmstart ein Objekt erstelle und immer und überall darauf zugreifen kann?
Wie würdet ihr das ganze implementieren?
greetings