Hey Jungs,
kleine Warnung: Es folgt recht viel Text, und um antworten zu können muss man sich wahrscheinlich ziemlich viele Gedanken machen, also wer auf sowas grad keine Lust hat, sollte jetzt besser den Zurück-Button des Browser verwenden
...ich bastel gerade an einem Spielchen, und sitze schon seit mehreren Tagen mit einen großem Fragezeichen über dem Kopf vor meinem Code. Ich weiss nicht, wie ich die Klassenstruktur bzw. Aufgabenverteilung gestalten soll, um mein Vorhaben umsetzen zu können, ohne dass es in dilletantischem Code-Chaos endet.
Das Game ist Tetris-/Puzzle-ähnlichs, und mein Problem liegt darin dass ich nicht weiß wie ich die Spielsteine implementieren soll.
Grundsätzlich fallen im Spiel 2-elementige Bausteine herunter, die man bewegen und drehen kann. Die einzelnen Elemente haben verschiedene Farben und es geht natürlich darum das ganze möglichst gut zusammenzubauen. Soweit ist das ja eig. nur Tetris, aber jetzt gibt es halt ein paar Unterschiede.
So ein "Element" ist entweder ein "normales" Element oder eine Bombe. Für den Fall, dass es eine Bombe ist, löst es beim Aufsetzen ein Event aus. (es sprengt alle Elemente, die die gleiche Farbe haben und über einen Weg im Spielbrett mit der Bombe verbunden sind).
Ein steuerbarer Stein besteht eben aus 2 solcher Elemente, das ist zufällig. Es können also 2 normale Elemente sein, 2 Bomben oder 1 Bombe und ein normales Element. Die Farben sind auch random.
Soweit wäre das noch gar nicht so wild, abgesehen vom Event, aber das ist jetzt noch gar nicht mal das Problem. Es kann im Spiel nämlich auch passieren, dass mal NICHT ein solch 2-elementiges Teil droppt, sondern nur ein einziger Stein, der sich auch nicht steuern lässt, und mit hoher Geschwindigkeit einfach ins Spielfeld fällt. Ist er aufgesetzt, wird er für eine gewisse Zeit eine Art "Sperre", d.h. es lässt sich nicht wegsprengen mit einer gleichfarbigen Bombe. Erst nach Ablauf der Zeit verwandelt er sich wieder in einen normalen Stein. Eine Bombe wird übrigens auch ein normaler Stein falls man sie nicht so platziert, dass sie Kontakt zur entsprechenden Farbe hat.
Also das ganze birgt für mich jetzt folgende Probleme:
1) Elemente müssen zur Laufzeit ihren Typ ändern können (von Sperre/Bombe zu normalem Element zB). D.h. ich brauche Komposition. Ich glaube das "Decorator Pattern" wäre hier angesagt?
2) Wie bau ich möglichst schlau zB das Verhalten beim Absetzen eines Elementes ein? ein normaler Stein macht nix weiter beim Absetzen, eine Bombe sprengt etwas..
3) Große Sorgen hab ich auch wenn ich an den GameLoop denke. Man sollte ja die Logik und Animation entsprechend der vergangenen Zeit berechnen, damit es flüssig läuft. Siehe Quaxli's Spiele-Tutorial, da wird ein "delta" benutzt, was einfach die verstrichene Zeit seit dem letzten Loop ist. Jetzt fallen die Elemente ja unterschiedlich schnell, ihre Animation ist verschieden und auch unterschiedlich schnell. Und wie steuer ich wann ein neuer Spielstein kommt? zB wenn gerade etwas explodiert, soll keiner kommen, erst wenn das zu Ende ist.
Also alles in allem hab ich keine Ahnung, wie ich das alles designen soll, sodass ich nicht hunderte von booleans und if-else/switches im Code hab, wo man dann sehr schnell überhaupt nix mehr blickt. So will ich es auch auf keinen Fall machen, weil das bringt ja nix außer hunderte Stunden "vergeudete" Zeit. (Es geht mir im Endeffekt ja nicht ums Spiel, sondern um die Programmier-Erfahrung).
Ich will auch nicht dass es rüberkommt wie "Programmiert mir bitte mein Spiel", es ist ein eigenes Projekt und ich will das ja selber machen. Aber hier versagt einfach mein Design-Wissen / meine Design-Erfahrung.
Ich hab auch das Buch "Design-Pattern von Kopf bis Fuss", also ich würde mich schon riesig freuen wenn ihr mir sagen könnt welche Pattern man hier überhaupt anwenden kann.
...Falls hier irgendjemand eine grobe Struktur im Kopf hat, was für Klassen ich da erstellen könnte, welche abstrakt sind, wo ich Interfaces einsetzen sollte usw.. Das wäre prima.
Ich hock halt echt seit Stunden nur da und starr meinen Code an, und schreibe nicht 1 einzige Zeile, weil ich schon bei jedem Ansatz nach 10 Sekunden überlegen merke, dass das so absoluter Schwachsinn wird :bahnhof:
Danke!!
kleine Warnung: Es folgt recht viel Text, und um antworten zu können muss man sich wahrscheinlich ziemlich viele Gedanken machen, also wer auf sowas grad keine Lust hat, sollte jetzt besser den Zurück-Button des Browser verwenden
...ich bastel gerade an einem Spielchen, und sitze schon seit mehreren Tagen mit einen großem Fragezeichen über dem Kopf vor meinem Code. Ich weiss nicht, wie ich die Klassenstruktur bzw. Aufgabenverteilung gestalten soll, um mein Vorhaben umsetzen zu können, ohne dass es in dilletantischem Code-Chaos endet.
Das Game ist Tetris-/Puzzle-ähnlichs, und mein Problem liegt darin dass ich nicht weiß wie ich die Spielsteine implementieren soll.
Grundsätzlich fallen im Spiel 2-elementige Bausteine herunter, die man bewegen und drehen kann. Die einzelnen Elemente haben verschiedene Farben und es geht natürlich darum das ganze möglichst gut zusammenzubauen. Soweit ist das ja eig. nur Tetris, aber jetzt gibt es halt ein paar Unterschiede.
So ein "Element" ist entweder ein "normales" Element oder eine Bombe. Für den Fall, dass es eine Bombe ist, löst es beim Aufsetzen ein Event aus. (es sprengt alle Elemente, die die gleiche Farbe haben und über einen Weg im Spielbrett mit der Bombe verbunden sind).
Ein steuerbarer Stein besteht eben aus 2 solcher Elemente, das ist zufällig. Es können also 2 normale Elemente sein, 2 Bomben oder 1 Bombe und ein normales Element. Die Farben sind auch random.
Soweit wäre das noch gar nicht so wild, abgesehen vom Event, aber das ist jetzt noch gar nicht mal das Problem. Es kann im Spiel nämlich auch passieren, dass mal NICHT ein solch 2-elementiges Teil droppt, sondern nur ein einziger Stein, der sich auch nicht steuern lässt, und mit hoher Geschwindigkeit einfach ins Spielfeld fällt. Ist er aufgesetzt, wird er für eine gewisse Zeit eine Art "Sperre", d.h. es lässt sich nicht wegsprengen mit einer gleichfarbigen Bombe. Erst nach Ablauf der Zeit verwandelt er sich wieder in einen normalen Stein. Eine Bombe wird übrigens auch ein normaler Stein falls man sie nicht so platziert, dass sie Kontakt zur entsprechenden Farbe hat.
Also das ganze birgt für mich jetzt folgende Probleme:
1) Elemente müssen zur Laufzeit ihren Typ ändern können (von Sperre/Bombe zu normalem Element zB). D.h. ich brauche Komposition. Ich glaube das "Decorator Pattern" wäre hier angesagt?
2) Wie bau ich möglichst schlau zB das Verhalten beim Absetzen eines Elementes ein? ein normaler Stein macht nix weiter beim Absetzen, eine Bombe sprengt etwas..
3) Große Sorgen hab ich auch wenn ich an den GameLoop denke. Man sollte ja die Logik und Animation entsprechend der vergangenen Zeit berechnen, damit es flüssig läuft. Siehe Quaxli's Spiele-Tutorial, da wird ein "delta" benutzt, was einfach die verstrichene Zeit seit dem letzten Loop ist. Jetzt fallen die Elemente ja unterschiedlich schnell, ihre Animation ist verschieden und auch unterschiedlich schnell. Und wie steuer ich wann ein neuer Spielstein kommt? zB wenn gerade etwas explodiert, soll keiner kommen, erst wenn das zu Ende ist.
Also alles in allem hab ich keine Ahnung, wie ich das alles designen soll, sodass ich nicht hunderte von booleans und if-else/switches im Code hab, wo man dann sehr schnell überhaupt nix mehr blickt. So will ich es auch auf keinen Fall machen, weil das bringt ja nix außer hunderte Stunden "vergeudete" Zeit. (Es geht mir im Endeffekt ja nicht ums Spiel, sondern um die Programmier-Erfahrung).
Ich will auch nicht dass es rüberkommt wie "Programmiert mir bitte mein Spiel", es ist ein eigenes Projekt und ich will das ja selber machen. Aber hier versagt einfach mein Design-Wissen / meine Design-Erfahrung.
Ich hab auch das Buch "Design-Pattern von Kopf bis Fuss", also ich würde mich schon riesig freuen wenn ihr mir sagen könnt welche Pattern man hier überhaupt anwenden kann.
...Falls hier irgendjemand eine grobe Struktur im Kopf hat, was für Klassen ich da erstellen könnte, welche abstrakt sind, wo ich Interfaces einsetzen sollte usw.. Das wäre prima.
Ich hock halt echt seit Stunden nur da und starr meinen Code an, und schreibe nicht 1 einzige Zeile, weil ich schon bei jedem Ansatz nach 10 Sekunden überlegen merke, dass das so absoluter Schwachsinn wird :bahnhof:
Danke!!