Modellierung von Karteneffekten ähnlich YUGIOH

smirk_mirkin

Mitglied
Hallo,

ich möchte ein Kartenspiel ähnlich YUGIOH modellieren.
Es gibt also mehrere Kartentypen, d.h. Unterklassen abgeleitet von einer Klasse "Card".
Für die Karten, die lediglich irgendwelche Werte haben sollen, sind die Werte in einer großen Datei gespeichert. Im Programm wird dann nach Bedarf der Datensatz ausgelesen und die Karte wird eine Instanz von einer der Kartenklassen.
Allerdings sollen einige Karten auch individuelle Effekte haben. Wie könnte man sowas umsetzen? Meine Ansätze sind:

1. Für jede Karte eine eigene kleine Klasse schreiben mit einer anderen effect-Methode.
2. Eine Klasse EffectCard mit einer effect-Methode machen und in dieser halt eine große Verzweigung.

Beides ist allerdings nicht sehr elegant. Fällt euch vllt. noch was ein?
 

Ruzmanz

Top Contributor
1. Für jede Karte eine eigene kleine Klasse schreiben mit einer anderen effect-Methode.

So ähnlich. Du machst für jeden Effekt eine Klasse. In deiner Datei steht
Code:
1;Drache;2,4,Diese Karte macht xyu,...,FEUER_EFFEKT
.

Java:
public class Karte {
    Effekt effekt;

    public void load() {
        // werte aus Datenbank auslesen...
        effekt = Effekt.getByName("FEUER_EFFEKT");
    }

    public void karteWirdAktiviert() {
        effekt.aktivieren(this);
    }
}

Java:
public abstract class Effekt {

    public static Effekt getByName(String name) {
        if("FEUER_EFFEKT") {
            return new FeuerEffekt();
        }
        return new NoEffekt();
    }
    public abstract void aktivieren(Karte karte);
}

Java:
public class FeuerEffekt extends Effekt {
    public void aktivieren(Karte karte) {
        karte.imKreisDrehen()
        // Flammen um die Karte erzeugen und von ihr wegschießen ...
    }
}

Lässt sich selbstverständlich noch viel weiter ausbauen. Aber für den Anfang reicht das so aus.
 
Zuletzt bearbeitet:

smirk_mirkin

Mitglied
@ Ruzmanz
Danke für deine ausführliche Antwort :)
Das ist eine echt elegante Lösung in dem Sinne, dass ich so auch die Effektkarten mit ihrem zugeordneten Effekt in die Datei bringen kann.

Was ich allerdings irgendwie vermeiden wollte war, für jede Effektkarte - oder eben für jeden Effekt - eine neue Klasse schreiben zu müssen. Gut nach etwas Nachdenken kann man das wohl nicht wirklich vermeiden. Evt. kann man mit Vererbung zumindest bei ähnlichen Effekten etwas Schreibarbeit sparen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
I Arbeitszeit / Zeiterfassung - Gedanken und Modellierung Java Basics - Anfänger-Themen 122
L Modellierung Widerstandsnetzwerk Java Basics - Anfänger-Themen 15
M Problem in der Modellierung Java Basics - Anfänger-Themen 20
N Modellierung, vererbung, Java Basics - Anfänger-Themen 163
D Verständnisfrage zur Modellierung einer HDD Java Basics - Anfänger-Themen 17
F OO - Modellierung Java Basics - Anfänger-Themen 24
1 Modellierung eines Bankkunden Java Basics - Anfänger-Themen 6
N Modellierung eines Programms in UML (Klassendiagramm) Java Basics - Anfänger-Themen 2
B Klassen Modellierung einer Kneipe Java Basics - Anfänger-Themen 86
A Modellierung Java Basics - Anfänger-Themen 8
M Modellierung eines trivialen Web-Shops Java Basics - Anfänger-Themen 12
M Access Modifier oder so ähnlich Java Basics - Anfänger-Themen 6
F Auto String mit Array Name aus Datei... oder so ähnlich Java Basics - Anfänger-Themen 4
O Basisklassen als Methoden-Parameter ähnlich, wie in C++ ? Java Basics - Anfänger-Themen 6
J So ähnlich wie HashSet Java Basics - Anfänger-Themen 2
N Name zu sehr ähnlich??? Java Basics - Anfänger-Themen 12
J Gibt es eine möglichkeit ähnlich wie .equals(bedingung1 ||bedingung ..n) ? Java Basics - Anfänger-Themen 5
I Strukturfrage: Navigation und Content ähnlich wie HP Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben