Android Wie mache ich eine App mit verschiedenen Leveln?

Robat

Top Contributor
Guten Abend alle zusammen,

ich bin seit einigen Tagen dabei, eine Spieleapp für Android zu programmieren. Ich komm auch recht gut voran, allerdings stellt sich mir so langsam die Frage: "Wie macht man das eigentlich mit den verschiedenen Leveln?". Habe mir da schon ein paar Gedanken gemacht und auch gegoogelt, nur bevor ich wirklich Anfange hätte ich gern gewusst ob das so überhaupt möglich ist.

Im Prinzip sind mir "nur" 2 Möglichkeiten eingefallen:

1)

Man macht für jedes Level eine eigene Java-Klasse. Die jeweilige Klasse wird dann durch ein dynamisches Intent in [sagen wir der Menu-Klasse] aufgerufen, je nach dem wie weit der Spieler bereits ist. Das Level kann man ja in einer SharedPreferences-Klasse speichern. Soweit ich weiß, kann man ein Intent ja folgendermaßen aufbauen:
Java:
level = preferences.get...
className = "mein.super.tolles.spiel.levels." + level;
intent = new Intent(getApplicationContext(), Class.forName(className);
startActivity(intent);

2)
Die Zweite Methode die mir [als Anfänger in der Spieleentwicklung] eingefallen ist, ist das man eine Klasse für alle Level schreibt und man mittels paramter im Constructor nur die Werte zb. von der Geschwindigkeit ändert. Ob das realisirbar ist weiß ich auch hier leider nicht.

So auch wenn es nicht viel ist, hoffe ich das mir jemand weiter helfen kann. Ich bin ehrlich gesagt wirklich ratlos, da ich sowas noch nie gemacht habe 🙁

Ich bedanke mich schon mal im voraus für eure Mühe

Grüße Robat
 
Guten Tag,

da gibt es viele Möglichkeiten soetwas zu realisieren.

Eine Möglichkeit wäre ein einfaches Attribut, welches das Level als Integer enthält und mach erfolgreichen absolvieren eines Levels hoch gezählt wird.

Anhand des Wertes kannst Du dann die Abläufe Steuern.

Eine weitere Möglichkeit wäre ne Level Elternklasse mit den nötigen Methoden und für jedes Level dann eine eigene Klasse welche von der Elternklasse erbt und in deren Methoden und Attribute dann für jedes Level dann seine eigenen Eigenschaften und Abläufe steuert.

LG
 
Okay so In etwa habe ich mir das auch gedacht.

Aber wird es nicht dann extrem unübersichtlich, wenn ich bspw. die 100level in eine Datei bringe / mehrere Dateien mache.

Ich danke dir erstmal für deine Hilfe

LG Robat
 
Also wenn Du 100 Level als Bespiel planst, dann würde ich das auch nicht über eine Klasse pro Level realisieren. Es kommt natürlich drauf an, was es an Änderungen pro Level gibt. Wenns nur um z.B. einen kürzeren Countdown, höhere Punkte oder wenn es Gegner gibt, welche von Level zu Level stärker werden soll, dann kann man das Wunderbar über Level Integer Attribut löschen.

Man könnte dann einfach den Countdown - Level rechnen oä.
 
Also, wenn Du 100 Level als Bespiel planst, dann würde ich das auch nicht über eine Klasse pro Level realisieren. Es kommt natürlich drauf an, was es an Änderungen pro Level gibt. Wenns nur um z.B. einen kürzeren Countdown, höhere Punkte oder wenn es Gegner gibt, welche von Level zu Level stärker werden soll, dann kann man das Wunderbar über ein Level Integer Attribut lösen.

Man könnte dann einfach den Countdown - Level rechnen oä.
 
Also machen wir es einfach mal am Beispiel "Countdown".

Nehmen wir an er würde jedes Level schneller werden.

Dann würde ich also eine klasse Game.java machen. Dort wird erstmal der gesamte Ablauf implementiert. Und das Level frage ich dann mit einer Abfrage ab und ändern die Geschwindigkeit je nach Level ab? Hätte dann also dem nach eine 100-stufige IF-Abfrage bzw switch case?

Oder habe ich das jetzt komplett falsch verstanden?
 
Nein, das wäre noch unübersichtlicher. Ich würde den Spielablauf in eine Methode packen und nach jedem erfolgreichen Durchlauf eines Levels den Integer um 1 hochzählen. So könntest Du dann ohne eine If-Abfrage einfach den Countdown anhand des Levels berechnen.

Countdown -= Level; als Bsp.

Wenn der Levelablauf durchgelaufen ist würde ich die Methode am Ende erneut aufrufen und praktisch den Ablauf erneut durchlaufen, halt nur mit einem neuen Countdown (Countdown-Level).
 
Also camelCase90,

ich danke dir erstmal für deine Mühe. Habe jetzt (denke ich mal) eine ganz guten Einblick bekommen und eine Idee habe ich auch schon. Werde das aber denke ich doch mit einer abstrakten Klasse realisieren, da das andere für meinen Fall zu aufwändig wäre.

Falls noch Fragen aufkommen, werde ich mich noch mal melden.
 

Neue Themen


Zurück
Oben