Hallo,
hab ne Frage hinsichtlich der Code Organisation für ein Spiel.
Ich hab ein MainMenü das aufn JLabel liegt, funktioniert wird auch fein angezeigt.
Dann hab ich noch das Game mit einheiten map collisionen usw. das wiederum aufm jlabel liegt und für sich auch funzt.
So. Ich hab mir gedacht ich pack die beiden JLabels aufn JPanel und zeig mir je nach Status GameState das entsprechende label an. Zum einen hab ich das versucht mit setvisible und zum anderen mit remove und add der componenten. Beides hat hinsichtlich der organistation zu Problemen geführt. Doch dazu komme ich noch.
Dann hab ich versucht das mainmenu und das game jeweils als eigenen thread in einem weiteren mainthread laufen zu lassen, was zu laufzeitproblemen geführt hat, Also dreithreads ineinander, wobei im ganzen Programm dann immer mindestens 2 threads gleichzeitig laufen. Ich hab dann versucht zwischen den beiden labels ( mainmenu, game) hin und herzuswitchen via statischen boolean statusvariablen also sowas wie if(GameState.MainMenu==true) dann zeig das mainmenu and etc. . Das Problem war dann wo werden die Änderungen erkannt? Mit 3 threads kams zu laufzeitproblemen, was natürlich irgendwie klar ist. Wenn ich nur einen Thread nahm und den dann in der main direkt über die statusvariablen steuern wollte kam es natürlich nie zu einer Änderung der variable in der main selbst was ich aber nicht wirklich genau verstehe. Hab dann provisorische einfach ne simple while(true) endlos schleife genommen und die statusvariablen dort aufgerufen, ABER irgendwas sagt mir das man das so nun wirklich nicht machen sollte vor allem hinsichtlich dem sauberen beenden des Programms.
Also hier meine Frage wie organisiert man hier besser?
hab ne Frage hinsichtlich der Code Organisation für ein Spiel.
Ich hab ein MainMenü das aufn JLabel liegt, funktioniert wird auch fein angezeigt.
Dann hab ich noch das Game mit einheiten map collisionen usw. das wiederum aufm jlabel liegt und für sich auch funzt.
So. Ich hab mir gedacht ich pack die beiden JLabels aufn JPanel und zeig mir je nach Status GameState das entsprechende label an. Zum einen hab ich das versucht mit setvisible und zum anderen mit remove und add der componenten. Beides hat hinsichtlich der organistation zu Problemen geführt. Doch dazu komme ich noch.
Dann hab ich versucht das mainmenu und das game jeweils als eigenen thread in einem weiteren mainthread laufen zu lassen, was zu laufzeitproblemen geführt hat, Also dreithreads ineinander, wobei im ganzen Programm dann immer mindestens 2 threads gleichzeitig laufen. Ich hab dann versucht zwischen den beiden labels ( mainmenu, game) hin und herzuswitchen via statischen boolean statusvariablen also sowas wie if(GameState.MainMenu==true) dann zeig das mainmenu and etc. . Das Problem war dann wo werden die Änderungen erkannt? Mit 3 threads kams zu laufzeitproblemen, was natürlich irgendwie klar ist. Wenn ich nur einen Thread nahm und den dann in der main direkt über die statusvariablen steuern wollte kam es natürlich nie zu einer Änderung der variable in der main selbst was ich aber nicht wirklich genau verstehe. Hab dann provisorische einfach ne simple while(true) endlos schleife genommen und die statusvariablen dort aufgerufen, ABER irgendwas sagt mir das man das so nun wirklich nicht machen sollte vor allem hinsichtlich dem sauberen beenden des Programms.
Also hier meine Frage wie organisiert man hier besser?