Ich programmiere gerade ein einfaches Jump n Run Spiel.
Ziel des Spiels ist es, als Spieler gewisse Hindernise zu überwinden. Hindernise können Steine, Kisten usw sein.
Mein Klassendiagramm sieht also wie folgt aus:
in der Klasse Spielanzeige lege ich alle Spielobjekte an.
d.h.
1x Spieler, 20x Stein, 120x Kiste.
Das Spiel wurde so konzipiert, dass ein neues Hindernis relativ schnell implementiert wird.
Soll heißen in der Klasse Stein wird mittels Konstruktor eine Position übergeben. In der Basisklasse Hindernis wird die paint() Methode aufgerufen.
Ich lege also für jedes Kiste-Objekt ein Image "kiste.png" an. Wäre es nicht Ressourcenschonender wenn man in der Klasse SpielObjekt jede Grafik nur einmal anlegt und diese im Konstruktor übergibt?
Wenn ich bei meiner Variante 120 Kisten anlege, habe ich auch 120 mal die gleiche Grafik im Speicher. Das ist doch nicht sinnvoll oder ist mir ein Denkfehler unterlaufen. Bitte klärt mich auf.
PS. Wie überprüft man ob ein Image richtig angelegt wurde? Auch wenn die Grafik "kiste.png" nicht existiert, ist mein image!=null. Ich habe gesehen die Width und Height sind -1. Sollte man ein Image immer mit getWidth()>-1 prüfen?
Ziel des Spiels ist es, als Spieler gewisse Hindernise zu überwinden. Hindernise können Steine, Kisten usw sein.
Mein Klassendiagramm sieht also wie folgt aus:

in der Klasse Spielanzeige lege ich alle Spielobjekte an.
d.h.
1x Spieler, 20x Stein, 120x Kiste.
Das Spiel wurde so konzipiert, dass ein neues Hindernis relativ schnell implementiert wird.
Soll heißen in der Klasse Stein wird mittels Konstruktor eine Position übergeben. In der Basisklasse Hindernis wird die paint() Methode aufgerufen.
Java:
public SpielObjekt(Spielanzeige spielAnzeige, String Filename, int x, int y)
{
this.spielAnzeige = spielAnzeige;
java.net.URL imageFilename = getClass().getResource(Filename);
try
imageGameObject = getToolkit().getImage(imageFilename);
catch (Exception e)
System.err.println(e.getMessage());
if (imageGameObject == null)
System.err.println("cant find image");
pointPos = new Point(x, y);
}
@Override
public void paintComponent(Graphics g)
{
g.drawImage(imageSpielObjekt, x, y, spielAnzeige);
}
Java:
public Kiste(Spielanzeige spielAnzeige, int x, int y)
{
super(spielAnzeige, "kiste.png", x, y);
}
Ich lege also für jedes Kiste-Objekt ein Image "kiste.png" an. Wäre es nicht Ressourcenschonender wenn man in der Klasse SpielObjekt jede Grafik nur einmal anlegt und diese im Konstruktor übergibt?
Wenn ich bei meiner Variante 120 Kisten anlege, habe ich auch 120 mal die gleiche Grafik im Speicher. Das ist doch nicht sinnvoll oder ist mir ein Denkfehler unterlaufen. Bitte klärt mich auf.
PS. Wie überprüft man ob ein Image richtig angelegt wurde? Auch wenn die Grafik "kiste.png" nicht existiert, ist mein image!=null. Ich habe gesehen die Width und Height sind -1. Sollte man ein Image immer mit getWidth()>-1 prüfen?
Zuletzt bearbeitet: