Hamster im Labyrinth

wendy

Mitglied
Hallo!!! kann jemand mir sagen wo mein Fehler ist???
********* *
* *
******** *
******** *
*******E *
* *
*H********
**** *
* *
**********
das ist mein Labyrinth und die programm dafür ist:
Java:
import java.io.*;

public class Laby {

static boolean[][] resultField= new boolean[12][12];
static int exitX ;
static int exitY ;

static int hamsterX;
static int hamsterY;


	static void readLaby(String fileName, char[][] board) {
		FileReader file;
		char ch;
		try {
			file= new FileReader(fileName);
			for(int i= 1; i<11; i++) {
				for(int j= 1; j<11; j++) {
					if((ch= (char)file.read())!=-1) {
						board[i][j] = ch;
					}
				}

				ch= (char)file.read();

			}
			file.close();
		}
		catch (IOException ex) {
			System.out.println(ex.toString());
		}

		

	}
	
	private static void initField(char[][] board){
		
		for(int i= 1; i<11; i++) {
			for(int j= 1; j<11; j++) {
				
				char ch = board[i][j];
				
				switch (ch) {
				case '*': resultField[i][j] = false; break;
				case ' ': resultField[i][j] = true; break;
				case 'E': exitX =  i; exitY = j; break;
				case 'H': hamsterX = i; hamsterY= j; break;

				}
				
			}
		}
		
		
		
	}
	
	
	static void goHamster(char[][] board) {
		if(board[hamsterX][hamsterY] == 'E'){
			System.out.println("zielerreicht");
			
			//print solution
			
			
			return;
		}
		
		int countChoices = 0; 
		//above
		if (resultField[hamsterX][hamsterY - 1 ] && board[hamsterX][hamsterY - 1 ] != 'v'){
			countChoices++;
			board[hamsterX][hamsterY - 1 ] = 'v';
			hamsterX -= 1;
			goHamster(board);
		}
		//down
		if (resultField[hamsterX][hamsterY + 1 ] && board[hamsterX][hamsterY + 1 ] != 'v'){
			countChoices++;
			board[hamsterX][hamsterY + 1 ] = 'v';
			hamsterX += 1;
			goHamster(board);
		}	
		//left
		if (resultField[hamsterX - 1][hamsterY] && board[hamsterX - 1 ][hamsterY] != 'v'){
			countChoices++;
			board[hamsterX - 1][hamsterY] = 'v';
			hamsterY -= 1;
			goHamster(board);	
		}
		//right
		if (resultField[hamsterX + 1][hamsterY] && board[hamsterX + 1 ][hamsterY] != 'v'){
			countChoices++;
			board[hamsterX + 1][hamsterY] = 'v';
			hamsterY += 1;
			goHamster(board);
		
		//dead end???
		if(countChoices == 0)
			
			
			return;
		}
	}
	
	static void printLaby(char[][] board) {
		for(int i= 0; i<10; i++) {
			for(int j= 0; j<10; j++) {
				System.out.print(board[i][j] );}
		}
		System.out.println();

	}

	public static void main(String[] args) {
		char[][] board= new char[12][12];
		String path= "Labyrinth1.txt";
		readLaby(path, board);
		printLaby(board);
		initField(board);
	}

}

Danke für eure Hilfe
 
Zuletzt bearbeitet:
G

Gonzo17

Gast
1. Mach den Code doch bitte in Java-Tags, dann wird er deutlich übersichtlicher hier im Forum.
2. Sag doch mal, was nicht klappt. Debuggen kannst du nämlich auch selbst, das muss niemand hier im Forum für dich machen.
 
S

SlaterB

Gast
[c]System.out.print(board[j] ); [/c]
statt
[c]System.out.print(board[j] ); [/c]
könnte schon was bewirken, wobei du auch die Schleifen umstellen solltest, sonst gibts Ärger wenn es mal kein Quadrat ist,

das
[c]System.out.println();[/c]
der Ausgabe sollte auch in eine der Schleifen rein, sonst stehen doch alle 144 Zeichen hintereinander?
 

Ähnliche Java Themen

Neue Themen


Oben