Guten Abend,
vielleicht kann mir ja hier jemand helfen. Ich probiere schon seit 10 Stunden das Problem zu lösen:
Ich will eine txt-datei einlesen was auch geklappt hat. Diese habe ich mit einem 2D-char-Array eingelesen. Jetzt will ich dieses Array verwenden und die Variablen verschieben. Ich hab versucht das Array zu kopieren, damit es die Veränderungen anzeigt und nicht immer wieder aus der Datei ausliest. Ich bekomme es jedoch einfach nicht hin. Mein Code-Ausschnitt bisher:
vielleicht kann mir ja hier jemand helfen. Ich probiere schon seit 10 Stunden das Problem zu lösen:
Ich will eine txt-datei einlesen was auch geklappt hat. Diese habe ich mit einem 2D-char-Array eingelesen. Jetzt will ich dieses Array verwenden und die Variablen verschieben. Ich hab versucht das Array zu kopieren, damit es die Veränderungen anzeigt und nicht immer wieder aus der Datei ausliest. Ich bekomme es jedoch einfach nicht hin. Mein Code-Ausschnitt bisher:
Java:
public static void main(String[] args) throws IOException {
File f = new File("datei.txt");
System.out.println(f.getAbsolutePath());
String fileName = "C:\\Users\\Tiger\\Desktop\\datei.txt";
File file = new File(fileName);
FileReader fr = new FileReader(file);
br = new BufferedReader(fr);
for (int code = br.read(); code >= 0; code = br.read()) {
char ch = (char) code;
chars++; // Gesamtanzahl der Chars
if (ch == '\n') {
lines++; // Zeilenanzahl
}
}
System.out.println(lines + " " + chars);
zeile = lines + 1;
spalte = chars / lines;
System.out.println(zeile + " " + spalte);
String fileName2 = "C:\\Users\\Tiger\\Desktop\\datei.txt";
File file2 = new File(fileName2);
FileReader fr2 = new FileReader(file2);
br = new BufferedReader(fr2);
char[] read;
char[][] room = new char[spalte][zeile]; // Array erstellen
while ((text = br.readLine()) != null) {
read = text.toCharArray();
for (z = 0; z < read.length; z++) {
room[z][s] = read[z];
if (room[z][s] == 40) { // ASCII-Code hex für@
spieler = '@';
} else if (room[z][s] == ' ') {
feld = ' ';
} else if (room[z][s] == 24) { // ASCII-Code hex für$
kiste = '$';
} else if (room[z][s] == '.') {
zielfeld = '.';
} else if (room[z][s] == '#') {
wand = '#';
}
System.out.print(room[z][s]);
}
System.out.print("\n");
}
while (beendet == !true) {
String eingabe;
eingabe = scan.next();
for (int i = 0; i < room.length; i++) {
for (int j = 0; j < room[z][s].length; j++) {
System.out.println(room[z][s]);
}
System.out.print("\n");
}
if (room[z][s] == kiste && room[z][s] == zielfeld) {
beendet = true;
System.out.println("JA");
}
switch (eingabe) {
case "up":
/*
* um eine Stelle höher zu gehen muss die Zeilen-Höhe 1
* abgezogen werden
*/
spieler = room[z][s];
if (room[z - 1][s] == feld) {
room[z - 1][s] = feld;
spieler = room[z];
room[z][s] = room[z--];
room[z][s] = spieler;
room[z + 1] = feld;
} else if (room[z - 1][s] == zielfeld) {
room[z - 1][s] = zielfeld;
spieler = room[z - 1][s];
room[z - 1][s] = spaufzf;
room[z + 1][s] = feld;
room[z--][s] = spieler;
} else if (room[z - 1][s] == kiste) {
room[z - 1][s] = kiste;
room[z][s] = room[z--][s];
room[z - 1][s] = kiste;
room[z][s] = spieler;
room[z + 1][s] = feld;
} else if (room[z - 1][s] == wand) {
room[z - 1][s] = wand;
spieler = room[z][s];
}
break;
case "down":
/*
* um eine Stelle höher zu gehen muss die Zeilen-Höhe um 1
* addiert werden
*/
spieler = room[z][s];
if (room[z + 1][s] == feld) {
room[z + 1][s] = feld;
spieler = room[z][s];
room[z][s] = room[z++][s];
room[z][s] = spieler;
room[z - 1][s] = feld;
} else if (room[z + 1][s] == kiste) {
room[z + 1][s] = kiste;
room[z][s] = room[z++][s];
room[z + 1][s] = kiste;
room[z][s] = spieler;
room[z - 1][s] = feld;
} else if (room[z + 1][s] == wand) {
room[z + 1][s] = wand;
spieler = room[z][s];
}
break;
case "left":
/*
* um eine Stelle nach links zu gehen muss die Spalten-Höhe um 1
* abgezogen werden
*/
spieler = room[z][s];
if (room[z][s - 1] == feld) {
room[z][s - 1] = feld;
spieler = room[z][s];
room[z][s] = room[z][s--];
room[z][s] = spieler;
room[z][s + 1] = feld;
} else if (room[z][s - 1] == kiste) {
room[z][s - 1] = kiste;
room[z][s] = room[z][s--];
room[z][s - 1] = kiste;
room[z][s] = spieler;
room[z][s + 1] = feld;
} else if (room[z][s - 1] == '#') {
room[z][s - 1] = wand;
spieler = room[z][s];
}
break;
case "right":
/*
* um eine Stelle nach rechts zu gehen muss die Spalten-Höhe um
* 1 addiert werden
*/
spieler = room[z][s];
if (room[z][s + 1] == feld) {
room[z][s + 1] = feld;
spieler = room[z][s];
room[z][s] = room[z][s++];
room[z][s] = spieler;
room[z][s - 1] = feld;
} else if (room[z][s + 1] == kiste) {
room[z][s + 1] = kiste;
room[z][s] = room[z][s++];
room[z][s + 1] = kiste;
room[z][s] = spieler;
room[z][s - 1] = feld;
} else if (room[z][s + 1] == wand) {
room[z][s + 1] = wand;
spieler = room[z][s];
}
break;
case "exit":
/*
* um das Programm zu beenden wird der boolean-Wert auf
* beendet:true gesetzt und somit die while-Schleife geschlossen
*/
System.out.print("Spielende!");
beendet = true;
break;
default:
System.out.println("Falsche Eingabe!");
/*
* sollte etwas eingegeben werden was keinem Befehl entspricht
* wird dies ausgegeben
*/
}
}
}
Zuletzt bearbeitet von einem Moderator: