Konstruktor für eine Map-Datei/Map-Datei einlesen

Diskutiere Konstruktor für eine Map-Datei/Map-Datei einlesen im Java Basics - Anfänger-Themen Bereich.
L

LucaToni

Ich möchte einen Konstruktor erstellen, der Konstruktor dient der Anfangskonfiguration eines Spielfeldes...
Beispielsweise ein Fußballfeld... mit der Formation: 4-4-3

Die Map-Datei sieht so aus:
010101010
010101010
001010100

Die einsen sind Spieler und die Nullen sind leere Positionen.

Wie würde mein Konstruktor zum einlesen aussehen... beziehunsweise wie kann ich diese Datei so einlesen damit mein Feld entsprechend gefüllt wird?
file wird übergeben, das ist eine .map-Datei.
Ich habe jetzt keine Java-Klasse gefunden die mir helfen würde eine Map-Datei einzulesen.
Code:
public Feld(final String file)
{

}
 
J

JustNobody

Die Datei ist doch eine einfache Textdatei, also kannst Du diese Zeile für Zeile einlesen.
Und dann kannst Du doch jede Zeile auswerten, z.B. in dem du von Zeichen zu Zeichen gehst und jedes Zeichen einzeln auswertest.

Wie Du damit Dein Feld füllst, musst Du wissen. Wir wissen von Deiner Klasse ja bisher nichts, außer dass der Konstruktor ein String namens file übergeben bekommt.
 
L

LucaToni

Die Datei ist doch eine einfache Textdatei, also kannst Du diese Zeile für Zeile einlesen.
Und dann kannst Du doch jede Zeile auswerten, z.B. in dem du von Zeichen zu Zeichen gehst und jedes Zeichen einzeln auswertest.

Wie Du damit Dein Feld füllst, musst Du wissen. Wir wissen von Deiner Klasse ja bisher nichts, außer dass der Konstruktor ein String namens file übergeben bekommt.
Am Ende will ich ein 2D-Array mit den Spielerpositionen.

Muss ich vorher die Text datei in eine ArrayList packen und danach mit .asArray in das Array?
 
F

fhoffmann

Am Ende will ich ein 2D-Array mit den Spielerpositionen.
Muss ich vorher die Text datei in eine ArrayList packen und danach mit .asArray in das Array?
1. Eine ArrayList kann nicht zweidimensional sein (sie kann höchstens als Elemente weitere ArrayLists enthalten). Deshalb funktioniert das nicht so.
2. Wenn dein zweidimensionales Array immer die gleiche Größe hat (z.B. 3x9) kannst du es auch gleich so anlegen und füllen.
3. Schau dir doch deine .map-Datei mal in einem Text-Editor an (nicht in einem speziellen MAP-Editor). Wie sieht sie denn da aus? (Es gibt offensichtlich unterschiedliche "MAP-Formate")
 
MoxxiManagarm

MoxxiManagarm

Am Ende will ich ein 2D-Array mit den Spielerpositionen.

Muss ich vorher die Text datei in eine ArrayList packen und danach mit .asArray in das Array?
Du versuchst 2 Sachen auf einmal. Du musst dir vorher im Klaren sein wie dein Datenmodell aussieht. Du hast 2 Möglichkeiten:
1. Du hast eine Liste von Spieler, welche alle ihre Position kennen. Ein 2D-Array gibt es hier nicht
Java:
class Spieler {
  private int posX, posY;
}
2. Du hast ein 2D-Array von Spieler, bei denen einige Felder null oder ein alternatives Feldelement sind. Die Position des Spieler sind dann die Indexes im 2D-Array.
 
T

TM69

@fhoffmann: Ergänzung. Oder ein Objekt, welches zwei Werte
1. Eine ArrayList kann nicht zweidimensional sein (sie kann höchstens als Elemente weitere ArrayLists enthalten). Deshalb funktioniert das nicht so.
ArrayList nimmt Objekte auf, dieses könnten weitere ArrayLists sein, sofern du einen Baum erstellen willst. Und nach einem Baum sieht mir seine Angaben nicht aus.

Ich möchte einen Konstruktor erstellen, der Konstruktor dient der Anfangskonfiguration eines Spielfeldes...
Beispielsweise ein Fußballfeld... mit der Formation: 4-4-3

Die Map-Datei sieht so aus:
010101010
010101010
001010100

Die einsen sind Spieler und die Nullen sind leere Positionen.

Wie würde mein Konstruktor zum einlesen aussehen... beziehunsweise wie kann ich diese Datei so einlesen damit mein Feld entsprechend gefüllt wird?
file wird übergeben, das ist eine .map-Datei.
Ich habe jetzt keine Java-Klasse gefunden die mir helfen würde eine Map-Datei einzulesen.
Code:
public Feld(final String file)
{
}
Da eine ArrayList https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html das Interface Serializable besitzt kannst du, es wie eine, ganz normale Datei lesen und Schreiben.
Code:
    /**
     * save object to File
     */
    public static void writeObjectToFile(File path, Object object) throws FileNotFoundException, IOException {
        ObjectOutputStream write= new ObjectOutputStream (new FileOutputStream(path));
        write.writeObject(object);
    }

    /*
     * read object from File
     */
    public static Object readFromFile(File path) throws FileNotFoundException, IOException, ClassNotFoundException {
        Object data = null;

        ObjectInputStream inFile = new ObjectInputStream(new FileInputStream(path));
        data = inFile.readObject();
       
        return data;
}
Es sei denn, deine Anforderung ist, dass es in in eine Textdatei geschrieben / gelesen werden soll.
 
Thema: 

Konstruktor für eine Map-Datei/Map-Datei einlesen

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben