Ich habe mit Qualxis Tutorial angefangen mein erstes grafisches Spiel zu schreiben und hab schon während des "mitmachens" einiges verändert, vor allem was den Aufbau angeht.
Es geht mir um einen Sidescroller, so ähnlich wie das Spiel im Tutorial, nur dass es verschiedene Gegner / Level und so weiter geben soll. Wer das Tutorial kennt wird sich jetzt vielleicht eher auskennen, was ich meine, aber ich werd versuchen das möglichst neutral zu erklären.
Der Umfang ist erstmal nur ganz klein und soll halt irgendwie ein Level sein. Aber mit dem Hintergedanken, dass der Aufbau auch mehr erlauben soll (speichern, laden, > zumindest solang man das Spiel nicht als ganzes schließt, ein Menü, Lvl Auswahl stehen bisher auf meinem Plan). Umsetzung dann bis inkl. nächstes Leben, aber Stück für Stück mehr.
Meine Frage betrifft eben den Aufbau eines Spiels (recht generell):
Bisher gibts ein GamePanel mit Spielschleife, Tastaturabfrage, ein Started Boolean (der die Spielschleife am Laufen hält) , ein Vektor mit meinen Actors<Sprite> (der wird übergeben) und eine "Engine".
Die Klasse/Objekt, dass vom Panel erzeugt wird, Engine wiederum ruft jegliche Logik auf, bewegt die Acteure und lädt für sich wieder Bibliotheken für Sound und Bildmaterial. Und gibt den Vektor mit den Sprites zurück an das Panel, dass es zeichnet.
Am wichtigsten erstmal ist: wie mach ich am besten "Welten"? Wobei es eigentlich nur darum geht, dass diese Welt (wo im Code soll das sein?) verschiedene Gegner aufruft. Ich hab mir das so gedacht, dass immer bei Logik (in der SpielSchleife) oder so die Zeit an das Lvl Objekt übergeben wird, und dann nach x Sekunden der und der Gegner spawnt. Aber dann weiß ich nicht genau, wie ich eine unterscheidung treffe, welche lvl jetzt gespielt wird.. Also dass ich einen Wert mit übergeben kann ja, aber soll ich dann für jede Lvl eine Klasse schreiben?
Im Sinne von
Zum Menü: wie macht Ihr das? Dass man von einem "Fenster" sag ich jetzt mal auf die SpielFläche mit dem eigentlichen Lvl darauf kommt? Sollte die Spielschleife wo anders hin?! Oder passt das schon so, dass das mein Spielfenster ist, auf dem jedes Lvl kommt, und ansonsten komme ich ohne aus?
Bin da sehr am Anfang - ist mein erstes grafisches Spiel und ich suche keine Bibel, sondern Vorschläge, oder Pseudo-Code, wies "schön" programmiert ist. Also wofür man eine Klasse aufmacht und was durchaus auch mit anderen Dingen in einen Topf geschmissen werden kann.
Danke
Es geht mir um einen Sidescroller, so ähnlich wie das Spiel im Tutorial, nur dass es verschiedene Gegner / Level und so weiter geben soll. Wer das Tutorial kennt wird sich jetzt vielleicht eher auskennen, was ich meine, aber ich werd versuchen das möglichst neutral zu erklären.
Der Umfang ist erstmal nur ganz klein und soll halt irgendwie ein Level sein. Aber mit dem Hintergedanken, dass der Aufbau auch mehr erlauben soll (speichern, laden, > zumindest solang man das Spiel nicht als ganzes schließt, ein Menü, Lvl Auswahl stehen bisher auf meinem Plan). Umsetzung dann bis inkl. nächstes Leben, aber Stück für Stück mehr.
Meine Frage betrifft eben den Aufbau eines Spiels (recht generell):
Bisher gibts ein GamePanel mit Spielschleife, Tastaturabfrage, ein Started Boolean (der die Spielschleife am Laufen hält) , ein Vektor mit meinen Actors<Sprite> (der wird übergeben) und eine "Engine".
Die Klasse/Objekt, dass vom Panel erzeugt wird, Engine wiederum ruft jegliche Logik auf, bewegt die Acteure und lädt für sich wieder Bibliotheken für Sound und Bildmaterial. Und gibt den Vektor mit den Sprites zurück an das Panel, dass es zeichnet.
Am wichtigsten erstmal ist: wie mach ich am besten "Welten"? Wobei es eigentlich nur darum geht, dass diese Welt (wo im Code soll das sein?) verschiedene Gegner aufruft. Ich hab mir das so gedacht, dass immer bei Logik (in der SpielSchleife) oder so die Zeit an das Lvl Objekt übergeben wird, und dann nach x Sekunden der und der Gegner spawnt. Aber dann weiß ich nicht genau, wie ich eine unterscheidung treffe, welche lvl jetzt gespielt wird.. Also dass ich einen Wert mit übergeben kann ja, aber soll ich dann für jede Lvl eine Klasse schreiben?
Im Sinne von
Java:
//GamePanel->
while (spielschleife){
engine.doLogic();
..
}
//Engine
void doLogic(){
updateLvl();
..
}
Class Level{
Engine parent;
int Spielzeit
void updateLvl(){
switch(spielZeit){
case 1: this.parent.addGegner();
case 15: this.parent.add.Gegner2();
spielzeit = System.getMillis() / 10e3;
}
}
}
Zum Menü: wie macht Ihr das? Dass man von einem "Fenster" sag ich jetzt mal auf die SpielFläche mit dem eigentlichen Lvl darauf kommt? Sollte die Spielschleife wo anders hin?! Oder passt das schon so, dass das mein Spielfenster ist, auf dem jedes Lvl kommt, und ansonsten komme ich ohne aus?
Bin da sehr am Anfang - ist mein erstes grafisches Spiel und ich suche keine Bibel, sondern Vorschläge, oder Pseudo-Code, wies "schön" programmiert ist. Also wofür man eine Klasse aufmacht und was durchaus auch mit anderen Dingen in einen Topf geschmissen werden kann.
Danke
Zuletzt bearbeitet: