Engines

Network

Top Contributor
Hi,

Ich habe ein Spiel für 1-4 Personen geschrieben, bzw. bin noch am schreiben.

Ich habe einen Teil in meinem Programmcode, den ich jetzt einfach mal als "Grafik-Engine" bezeichnen würde.
Leider ist sie noch nicht selbstständig. Sondern in der selben Klasse definiert wie meine Hauptklasse.

Das würde ich jetzt gerne Ändern.
Und zwar würde ich die Grafik-Engine in eine eigene Klasse schreiben.

Der Programmcode, bekommt Werte zugeteilt (beim Aufruf) und soll anhand der Daten errechnen, welche Bereiche mit Bildern ausgefüllt werden müssen. Oder welche Bereiche(Koordinaten) sich bspw. in einem Kreis befinden, und die jeweiligen Bereiche dann grafisch darstellen/anmahlen/hervorheben etc...

Das macht dieser Programmteil auch alles bereits und auch perfekt.
Nur wie mach ich das jetzt, dass ich diese "neue" Klasse dazu bringe, auf den JFrame (in der anderen Klasse) und seine bereits vorhandenen JPanels, Bilder beispielsweise zu setzen?

Also das Problem nochmal: Wie kann ich mit der einen Klasse, die andere Klasse beeinflussen?

-----------
PS: Wie übergebe ich eig. Werte an eine neue Klasse? Ich dachte mir das geht genauso wie, wenn ich ein "void X" aufrufe, und in den Klammern ihm Werte mitgebe.


Danke
 

Aldimann

Bekanntes Mitglied
Also erstmal ist nichts perfekt ;).

Ansonsten weiß ich nicht inwiefern das mit Swing geht, aber du könntest die Klasse vom JPanel erben lassen und dann eine Instanz der Klasse auf das JFrame legen.

Ansonsten beim Konstruktor der neuen Klasse das JFrame mitgeben und dann hinzufügen.

Sonst fällt mir grad nichts ein.

Ggf. mal n Code Beispiel...
 

Bierhumpen

Bekanntes Mitglied
Also das Problem nochmal: Wie kann ich mit der einen Klasse, die andere Klasse beeinflussen?

-----------
PS: Wie übergebe ich eig. Werte an eine neue Klasse? Ich dachte mir das geht genauso wie, wenn ich ein "void X" aufrufe, und in den Klammern ihm Werte mitgebe.

Wenn ich sowas schon lese...
Da frag ich mich warum du überhaupt Grafik programmierst, wenn dir solche Grundlagen fehlen.
Was für eine Antwort erwartest du denn dann hier im Thread?
 

Landei

Top Contributor
Also erstmal ist nichts perfekt ;).

Ansonsten weiß ich nicht inwiefern das mit Swing geht, aber du könntest die Klasse vom JPanel erben lassen und dann eine Instanz der Klasse auf das JFrame legen.

Ansonsten beim Konstruktor der neuen Klasse das JFrame mitgeben und dann hinzufügen.

Sonst fällt mir grad nichts ein.

Ggf. mal n Code Beispiel...

Ich würde den Panel und die Engine auch trennen

Java:
public class EnginePanel extends JComponent {

   private final Engine engine;

   public EnginePanel(Engine engine) {
      this.engine = engine;
   }

   public void paintComponent(Graphics g) {
      engine.paint((Graphics2d) g);
   }
}

public class Engine {
   public void paint(Graphics2D g2) {
       //do the magick!
   }  
   ...
}

Der Vorteil ist, dass man mit der Engine irgendwohin malen kann, z.B. kann die Graphics-Instanz auch von einem BufferedImage stammen, dass man damit ganz einfach bepinseln kann. Natürlich braucht man noch zusätzlichen Code zur "Steuerung" der Engine, aber der sollte vom Hauptprogramm, nicht vom Panel kommen.
 

Network

Top Contributor
Also erstmal ist nichts perfekt ;).
Also erstmal: Ich weiß, dass ich Nichts weiß. Und deshalb ist es perfekt... ;)

Wenn ich sowas schon lese...
Da frag ich mich warum du überhaupt Grafik programmierst, wenn dir solche Grundlagen fehlen.
Was für eine Antwort erwartest du denn dann hier im Thread?

Auf jedenfall keine Antwort von dir.

Ich bin sehr fortgeschritten mit Java. Grundlagen fehlen mir in keinster Weise.
"DEINE" Definition von Grundlagen scheinen mir dann wohl doch zu fehlen!

Wenn einem ein Einzelthema nicht mehr ganz geläufig ist, oder man es nicht kapiert, ist dass doch ein Grund mal im Anfängerforum wieder danach zu Fragen, oder?

Vielemehr ist es so, dass ich hier ein paar Java (auch C++) Programme habe, die für eigene Verwendungszwecke freigegeben wurden. Ich wundere mich jedoch, dass wirklich fast jedes Einzel"thema", von jenen, in eine eigene Klasse geschrieben wurden. Und ich finde in keiner einzigen Klasse auch nur einen Bezugspunkt zueinander.

Was ich als Antwort ungefähr erwarte: Landei

@Landei
Danke an diesem Punkt ;)
Ich hatte mal wieder zu kompliziert gedacht ;)
 

Neue Themen


Oben