Hallo Leute,

irgendwas treibt mich hier zur Verzweiflung:

Ausgangspunkt:

Main sagt, welches Objekt gerade das Sagen hat.

gameplay steuert das Spiel von neu bis gameover, bedient sich dazu an Sprites.
Das Ganze hat einen Teil, der Befehle von Main empfängt, sowie eine Zeitschleife für Animationen (50ms).

gamepanel kümmert sich um die Darstellung der ganzen Klamotte im 50ms-Takt.

gameplay und gamepanel bekommen vom Konstruktor Pointer auf Main (mama) mit, um schneller zu kommunizieren.

So schnappt sich gamepanel z.B. via mama.pgame.maxsprites die Anzahl der Sprites, die es darstellen soll.

So weit, so gut.

Problem: Ändere ich im Quelltext von gameplay die Anzahl maxsprites (final int maxsprites=15), bekommt gamepanel das irgendwie nicht mit und arbeitet mit dem vorher kompilierten Daten (maxsprites=9).

Bisheriger Versuch:
"Clean and Build main Project"
Ergebnis: wie ein Blinker: geht, geht nicht...

1.Compilerlauf danach: Blinker

in gamepanel mit System.out.println mal maxsprites ausgeben lassen:
sofort korrekte Anzahl Sprites bekommen, und alle laufen!

Quelltexte

Main:
Code:
...
  static Main mama = new Main();
  static gamepanel gamep;
  static gameplay my_game;
...
  public static void main(String[] args) 
 {  javax.swing.SwingUtilities.invokeLater(new Runnable()
    {  public void run()
       { load_config(); // hier nur Sprache und Sound on/off
          hsc = new hiscore(hscfile, langdef.get("EINTRAG"), langdef.get("ZU_WENIG"), maxhsc);
          gamep=new gamepanel(mama); 
          gamep.addMouseListener(mausdap);
          gamep.addMouseMotionListener(mausdapm);
          my_game=new gameplay(mama);
          init_gui();
          set_options();
        }
      }
    );
  }
gameplay:
Code:
public class gameplay implements Runnable
{ final int maxpatt=16;
  final int timetic=50;
  final int maxsprites=12;
  ...
gamepanel:
Code:
  public gamepanel(Main parent)
  { mama=parent;
    init_data();
    thread0=new Thread(this);
    thread0.start();
  }

...

  void zeige_spiel(Graphics g)
  { int i,j,k,ix,iy;
    String t;
    if (game==null) game=mama.my_game;
...

System.out.println(game.maxsprites); // ist der drin, funktioniert's sofort

for (i=0; i<game.maxsprites; i++) if (game.sprit[i].typ>0)
    g.drawImage(ima[game.sprit[i].typ],game.sprit[i].x,game.sprit[i].y,null);
}
Frage: muss ich eine Schraube am Code oder in der Netzbohne drehen, damit er beim nächsten Compilerlauf die Änderung der maxsprites mitbekommt?

Bin Netzbohnenneuling, vorher habe ich einfach manuell die Klassen und Jars weggeputzt, das hat immer geholfen.

so long,
BlueJay