aus Text Datei Instanzen erzeugen, so richtig?

Scarabol

Mitglied
Hi Leute,

ich habe in einer Textdatei die Informationen für ein "Level" gespeichert. Unter anderem sind dort auch die Gegner mit einer eindeutigen ID aufgezählt. Nun möchte ich im Programm mit Hilfe der ID eine Instanz von einer abgeleiteten Klasse von meiner Klasse "Enemy" erzeugen.

Meine Klassen:
Enemy
+------> Skeleton (ID = 1)
+------> Boomer (ID = 2)
+------> Maneater (ID = 3)

Mein Lösungsansatz:
Beim Laden des Levels schaue ich nach welche Klasse zu der gelesenen ID gehört und speicher das Class Object in einer Liste.
Java:
LinkedList<Class> enemies = new LinkedList<Class>();
if (ID == 1) {
enemies.add(Skeleton.class);
}

Wenn das Level dann "läuft", schaue ich in der Liste nach welches das nächste Element ist und lasse mir mit getConstructor(...).newInstance(...) ein neues Enemy Object erzeugen.
Java:
try {
Enemy p = (Enemy) enemies.getFirst().getConstructor(Frame.class).newInstance(this);
} catch (.... // jede Menge Exceptions


Macht der Lösungsansatz Sinn, in eurem Augen? Oder seh ich den Wald vor lauter Bäumen nicht und es geht viel einfacher???

Danke im Voraus
Scarabol
 

c_sidi90

Top Contributor
Wieso vergibst du jedem Gegner nicht ein festen Wert in der Textdatei und schreibst eine Methode welche die gelesenen Daten sortiert

Angenommen deine Datei sieht so aus:



000010002000000
101000200200304
000010002000000
101000200200304
000010002000000
101000200200304

Jede Zahl hat eine feste Bedeutung in deinem Programm.

Java:
 public enum EnemyTyp{
                 SKELETON(1), MANEATER(2);

                 public final int index;

                 EnemyTyp(int index){
                        this.index = index;
 
                }
}


Pseudocode

Methode:

Java:
 public void addEnemy(int index){  //Symbol aus TXT DAtei

   if(index == SKELETON.index){
        entities.add(new Skeleton())
   }
    if(index == SKELETON.index){
        entities.add(new MANEATER())
   }
   //usw


}

Dafür muss deine Enemyklasse im Konstruktor auch ein Parameter für den Typ enthalten z.B.

Java:
 public Enemy (int x, int y, EnemyTyp typ){
        
}

somit kannst du dann auch immer gleich prüfen, um was für ein Objekt es sich handelt:

Java:
 public int checkObjectAt(int index){
 
    return enemies.get(index).index // oder get(index).name()
}
 
Zuletzt bearbeitet:

HimBromBeere

Top Contributor
Warum genau musst du erst die Klasse herausfinden und erzeugst die Instanz dann so umständlich? Du kannst dch den Fein auch gleich erstellen, oihne diesen Umweg zu gehen, oder hab ich da was missverstanden?
 

Scarabol

Mitglied
Danke für die Antworten.

Zu Antwort 1:
Ich wandel also die ID in ein Enum um und wenn ich dann eine Instanz haben will check ich wieder das Enum Feld? Außerdem muss ich dann für jede Klasse die ich erstelle auch einen Enum Wert hinterlegen.
Klingt ok, muss ich mir aber nochmal durch den Kopf gehen lassen :)

Zu Antwort 2:
Meine Enemy Klasse is nicht klonbar. Wenn das Level im Survival Modus ist, werden aber permanent Kopien der eigentlichen Gegner Typen gebraucht.

Gruß
Scarabol
 

c_sidi90

Top Contributor
Ja hast du schon richtig verstanden, glaub so löst man das am einfachsten ohne großen Aufwand. Wie schon in meinem Post steht, muss der Konstruktor der Enemyklassen den Typ übergeben bekommen, nur so ist eine Identifizierung möglich. Da Enums numeriert sind, kannst du ja auch nur Zahlen übergeben, z.B. mit Math.random() zufallsgesteuert. Würd ich gut für den Survival Mode finden, da es immer unterschiedlich sein kann, welcher Gegner zunächst kommt.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
P Aus Text Datei nur Zahlen übernehmen Java Basics - Anfänger-Themen 13
berserkerdq2 An selbst ersteller txt Datei immer Text dranhängen, ohne den vorherign Text zu löschen Java Basics - Anfänger-Themen 8
M Text in Datei schreiben Java Basics - Anfänger-Themen 9
T208 Text Datei individuell benennen. Java Basics - Anfänger-Themen 5
S Zufällige ungerade Zeile aus Text-Datei lesen Java Basics - Anfänger-Themen 5
B Text-Datei nur in Stream speichern und dann ausgeben Java Basics - Anfänger-Themen 3
M Java: BufferedReader liest nur die Hälfte der Text-Datei. Java Basics - Anfänger-Themen 4
I Nur auf Abfrage von einer Text Datei einlesen Java Basics - Anfänger-Themen 11
P Text Datei einlesen und übertragen Java Basics - Anfänger-Themen 15
MaximilianTM Input/Output Einlesen und bearbeiten einer text Datei / Zeile Java Basics - Anfänger-Themen 5
S Text aus einer HTML Datei auslesen Java Basics - Anfänger-Themen 1
J Text Datei einlesen Java Basics - Anfänger-Themen 6
L Java Text datei nur bis zu einem Punkt auslesen? Java Basics - Anfänger-Themen 3
S Erste Schritte Sprachermittler - Datei öffnen, Text in TextArea, Bereinigen, Auswerten Java Basics - Anfänger-Themen 14
I BufferedReader Text-Datei einlesen??? Java Basics - Anfänger-Themen 1
T csv datei in text datei speichern Java Basics - Anfänger-Themen 3
H Text Datei öffnen Java Basics - Anfänger-Themen 7
E Text Datei Daten Auslesen und Schreiben Java Basics - Anfänger-Themen 3
R Array in Text Datei schreiben Java Basics - Anfänger-Themen 2
C Text-Datei fortsetzen Java Basics - Anfänger-Themen 10
Strahlungsleck Input/Output Zahlen aus Text-Datei auslesen Java Basics - Anfänger-Themen 6
S Datenströne - Text in eine Datei einlesen, umwandeln und in eine neue Datei schreiben Java Basics - Anfänger-Themen 6
B Änderung an Text-Datei Java Basics - Anfänger-Themen 5
R Text in Datei finden Java Basics - Anfänger-Themen 2
P mit java text-datei auslesen und weiter bearbeiten Java Basics - Anfänger-Themen 3
S Text aus HTML Datei in TXT Datei Java Basics - Anfänger-Themen 19
K Ein text Datei komplet ausgeben lassen. Java Basics - Anfänger-Themen 2
K Text aus einem Datei lesen , und im JTextArea ausgeben. Java Basics - Anfänger-Themen 3
K Daten in eine Text datei schreiben !!!! Java Basics - Anfänger-Themen 6
W .jar datei liest text datei nicht Java Basics - Anfänger-Themen 11
W Objecte in (Text)Datei speichern Java Basics - Anfänger-Themen 3
Z Text aus externer Datei in TextArea einlesen Java Basics - Anfänger-Themen 5
bambi0815 Text Datei Stream to Char[][] Java Basics - Anfänger-Themen 7
M HTML Datei als Text rausspeichern Java Basics - Anfänger-Themen 3
W Strings in Text-Datei schreiben Java Basics - Anfänger-Themen 5
J An das Ende einer Datei Text anhängen Java Basics - Anfänger-Themen 2
H Objekte aus Text-Datei wieder in ArrayList laden Java Basics - Anfänger-Themen 8
O Text von Homepage via Java auslesen und in Text Datei speich Java Basics - Anfänger-Themen 1
D Auf einem USB-Stick gespeicherte Text-Datei öffnen Java Basics - Anfänger-Themen 11
M bunter text in datei schreiben Java Basics - Anfänger-Themen 6
L Eclipse text datei schreiben! Java Basics - Anfänger-Themen 3
S Text datei auslesen Java Basics - Anfänger-Themen 20
P Text vor und nach dem Inhalt einer Datei einfügen Java Basics - Anfänger-Themen 3
T Text in Datei schreiben Java Basics - Anfänger-Themen 4
K Text von Eingabefeld in eine txt Datei speichern Java Basics - Anfänger-Themen 2
roflomfg Text in eine lokale "*.txt-Datei" speichern Java Basics - Anfänger-Themen 9
G zeilen aus text datei löschen Java Basics - Anfänger-Themen 6
ARadauer zeilen einer text datei ermitteln Java Basics - Anfänger-Themen 6
P jar programm zeigt den text eingelesen aus datei nicht an Java Basics - Anfänger-Themen 3
L Ist eine Datei binary oder text encoded Java Basics - Anfänger-Themen 8
F Drucken einer Text Datei Java Basics - Anfänger-Themen 2
F text datei weiterschreiben Java Basics - Anfänger-Themen 8
J Große *.Text Datei zum verschicken in viele kleine Java Basics - Anfänger-Themen 7
D Text aus JTextField in *.txt Datei Grundlage Java Basics - Anfänger-Themen 4
E text in datei Java Basics - Anfänger-Themen 4
D Datei - Text einfügen Java Basics - Anfänger-Themen 2
D Text-Datei(en) mit der Methode read(bytes[] b) auslesen Java Basics - Anfänger-Themen 4
R Url aus einer Text Datei auslesen. Java Basics - Anfänger-Themen 4
T Text an Datei anhängen Java Basics - Anfänger-Themen 4
M Text-Datei in einem Package ausgeben lassen Java Basics - Anfänger-Themen 4
richis-fragen JTable effektiv angezeigter Text ausgeben nicht Inhalt vom Model Java Basics - Anfänger-Themen 9
A Edit Text Negative Decimalzahlen Java Basics - Anfänger-Themen 18
T Text einlesen code was kommt dahin? Java Basics - Anfänger-Themen 1
R Text in der DB abspeichern, und danach bearbeiten Java Basics - Anfänger-Themen 5
A JTextArea entfernen und durch neuen Text ersetzen Java Basics - Anfänger-Themen 8
JavaBeginner22 Button Text verändern Java Basics - Anfänger-Themen 1
GoenntHack Java Text von JLabel verändert sich nicht Java Basics - Anfänger-Themen 1
A Text zu Morsecode Java Basics - Anfänger-Themen 8
O Java Text Area Zeilenausgabe Java Basics - Anfänger-Themen 7
M Text wird in der Console nicht ausgegeben. Java Basics - Anfänger-Themen 11
A Werten aus dem Text ausliesten Java Basics - Anfänger-Themen 6
K Jlabel mit itemlistevent Text gegeben, wird nicht angezeigt Java Basics - Anfänger-Themen 5
Kiki01 Wie würde eine geeignete Schleife aussehen, die die relative Häufigkeit für jeden Charakter in einem Text bestimmt? Java Basics - Anfänger-Themen 3
O Text mit Regex trennen und wieder zusammenbauen Java Basics - Anfänger-Themen 5
xFlozen Text mehrspaltig ausgeben Java Basics - Anfänger-Themen 3
K Rekursiver Vergleich von Textmuster und Text Java Basics - Anfänger-Themen 2
C Variablen Provided text for message may not be null Java Basics - Anfänger-Themen 9
H Klassen Die Länge einer Text-Node bestimmen Java Basics - Anfänger-Themen 2
F Erste Schritte java.util.Scanner: Beliebig langen Text per Paste in Console eingeben ? Java Basics - Anfänger-Themen 14
GermanPie Discord Text Channel erstellen? Java Basics - Anfänger-Themen 1
C JButton Text 2 Mal ändern funktioniert nicht Java Basics - Anfänger-Themen 8
yoskaem Text Color durch Klicken eines Buttons in anderer Activity ändern Java Basics - Anfänger-Themen 2
B Alle Links in einem Text suchen und ersetzen mit einem neuen Link Java Basics - Anfänger-Themen 18
J Java TextArea Text bei hinzufügen makieren Java Basics - Anfänger-Themen 1
T Text-Ausgabe für Textadventure - Organisation Java Basics - Anfänger-Themen 5
G Anklickbaren Text erzeugen Java Basics - Anfänger-Themen 2
M Apache POI PPT - Vertikales Alignment von Text im XSLFAutoShape Java Basics - Anfänger-Themen 2
P Taschenrechner Text übertragung Java Basics - Anfänger-Themen 3
J java.text.DecimalFormat Java Basics - Anfänger-Themen 5
AnnaBauer21 GridBagLayout JLabel weightx: Unterschiedliche Breite mit & ohne Text Java Basics - Anfänger-Themen 6
K Durch eine Text eingabe etwas Ausführen Java Basics - Anfänger-Themen 5
S Text-To-Speech mit Java Java Basics - Anfänger-Themen 2
L Text-Adventure Java Basics - Anfänger-Themen 3
M Input/Output Java Swing: Prüft ob Text aus JTextField ausschließlich Integer enthält Java Basics - Anfänger-Themen 15
ruutaiokwu Ausgegebene Zeile ersetzen mit neuem Text Java Basics - Anfänger-Themen 3
tsom Erste Schritte itext Text als Block auf neue Seite Java Basics - Anfänger-Themen 0
Dimax Programme ,als Text in MySql speichern Java Basics - Anfänger-Themen 7
CptK Datentypen Text Dateien einlesen Java Basics - Anfänger-Themen 3
Harlequin Compiler-Fehler Text Adventure - "Long Output" Fehler Java Basics - Anfänger-Themen 3
S Zeichen zählen kopierter Text Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben