Frage von LadySamara1710, 75

Wie Charakterauseahl mit Java programmieren?

Hallo,

ich muss für meinen Informatikunterricht ein Spiel programmieren. Unser Lehrer lässt uns dabei viel Spielraum, hat dafür aber auch nicht viel erklärt, da wir selbst "rumprobieren" sollen.

Ich habe nun das Problem, dass ich gerne eine Charakterauswahl zwischen einem Vampir und einem Werwolf am Anfang des Spiels möchte aber keine Ahnung habe wie ich das machen soll. Hat jemand eine Idee? Wir benutzen BlueJ.

Antwort
von karinili, 50

Kommt drauf an, was für eine Auswirkung die Charakterwahl im Spiel hat und vor allem von der Art des Spiels.

Die simpelste, aber nicht die sauberste Lösung, die mir einfällt, ist das ganze über einen Boolean zu speichern und an den entsprechenden Stellen if-Anweisungen setzen.

Alternativ: Über ein Interface charakter, und eine Klasse Werwolf und eine für Vampir, die charakter implementieren.

Kommentar von GoodbyeKitty1 ,

No way, kein boolean - so teuer ist Arbeitsspeicher auch wieder nicht :))))

Kommentar von karinili ,

Aha, und warum nicht oder wie würdest du es sonst lösen?

Kommentar von Azasel ,

Vieleicht mit einer switch(Nummer) {
case(1). Werwolf
case(2). Vampir
}

Kommentar von karinili ,

Das kommt im Prinzip auf den Boolean raus, nur dass es generischer ist, als ein Boolean, da auf beliebig viele Anzahl der Rassen erweiterbar. Wären es aber mehr Rassen verliert man so noch schneller den Überblick, was was ist und die Interfaces wären auf jeden Fall zu bevorzugen.

Kommentar von nintendoluk ,

Das ganze über Klassen (+ Interface) zu realisieren ist auf jeden Fall die schönste Lösung und wird beim Lehrer (falls der Quelcode bewertet wird) wahrscheinlich die bessere Note bringen ;-)

Kommentar von karinili ,

Das hängt meiner Ansicht nach vom Code und der Auswirkung im Spiel ab. Es gibt für alles seine Anwendungsbereiche.

Sobald mehr als vielleicht ein Bild des Charakters dranhängt, aber auf jeden Fall die zu bevorzugende Variante, da bin ich bei dir :)

Antwort
von Unkreatiiiev, 19
Player:
- int x, y, w, h
- AbstractCharacter character
+ jump()
+ walk()
+ attack()
AbstractCharacter:
o String name
o int health
o float speed
o onJump()
o onWalk()
o onAttack()
Werewolf extends AbstractCharacter:
+ Werewolf("Werwolf G\u00fcnther", 100, 3.5f)
o onAttack() {Gegner zurückschlagen}

Eine mögliche Lösung, welche besondere Fähigkeiten der Charaktere berücksichtigt.

Expertenantwort
von KnusperPudding, Community-Experte für Java, 19

Du könntest folgendes machen:

Eine abstrakte Klasse: GameCharacter, die die Eigenschaften eines Spielers besitzt.

Danach: zwei Klassen, Werwolf und Vampir, die beide von GameCharacter erben.

Wie die Auswahl dann direkt aussieht: Da gibt es viele Optionen, eine wäre es, dass z.B. wenn die Klasse GameCharacter abstrakt den Namen der Klasse voraussetzt, was in den End-Klassen: Werwolf und Vampir dann implementiert wurde. somit kannst du dann z.B. folgendes machen:

private GameCharacter selectedCharacter;

private void selectCharacter(String character) {
    if ("Werwolf".equalsIgnoreCase(character)) {
        selectedCharacter = new Werwolf();
    }
    ....
}

Keine passende Antwort gefunden?

Fragen Sie die Community