Ich spiele grad ein wenig mit den Graphics Objekten herum und habe hier glaube ich einen Denkfehler den ich übersehe , also ich habe eine map in form einer Map Datei
Map1-1.map
	
	
	
	
	
		
	
Die erste Zeile repräsentiert Zeilen , die zweite die Spalten ab der 3ten wird die map gemapped ^^
Die map wird dann im Konstruktor über den Pfad direkt eingelesen:
	
	
		
			
	
	
	
	
	
		
	
		
	
das klappt wunderbar, auch die ausgabe in der Konsole über diese Methode habe ich erfolgreich implementiert :
	
	
	
	
	
		
	
nun möchte ich die Map optisch darstellen, und habe hierzu folgende methode implementiert :
	
	
	
	
	
		
	
funktioniert auch soweit nur das er mir die map dann vollkommen spiegelverkehrt, wie man hier schön erkennen kann
	 
abbildet, es muss also ein Denkfehler mit dem 2dim array sein ich sehe ihn nur grade nicht
vielleicht erblickt es ja jemand auf Anhieb
hier noch die main Methode, die ja eigentlich irrelevant sein sollte :
	
	
	
	
	
		
	
			
			Map1-1.map
		Code:
	
	10
10
1 1 1 1 1 1 1 1 1 1 
1 0 0 1 1 1 0 0 0 1
1 1 1 1 0 0 0 0 0 1
1 0 0 0 0 0 1 1 1 1
1 0 0 0 1 1 0 0 0 1
1 1 1 0 0 0 0 0 0 1
1 0 0 0 0 0 1 1 1 1
1 1 1 0 0 0 0 1 1 1
1 0 0 0 0 0 0 0 0 1 
1 1 1 1 1 1 1 1 1 1Die erste Zeile repräsentiert Zeilen , die zweite die Spalten ab der 3ten wird die map gemapped ^^
Die map wird dann im Konstruktor über den Pfad direkt eingelesen:
		Java:
	
		public SimpleMapTest(String s) {
		
		InputStreamReader in;
		BufferedReader reader;
		
		try {
			in = new InputStreamReader(getClass().getResourceAsStream(s));
			reader = new BufferedReader(in);
			
			numRows = Integer.parseInt(reader.readLine());
			numCols = Integer.parseInt(reader.readLine());
			
			map = new int[numRows][numCols];
			String delimiter = "\\s+";
			for (int row = 0; row < numRows; row++) {
				String line = reader.readLine(); // read line
				String[] tokens = line.split(delimiter); // split line
				for (int col = 0; col < numCols; col++) {
					map[row][col] = Integer.parseInt(tokens[col]);
				}
			}
			
		} catch (Exception ex) {
			ex.printStackTrace();
		}
		
	}das klappt wunderbar, auch die ausgabe in der Konsole über diese Methode habe ich erfolgreich implementiert :
		Java:
	
	public void printMap(){
		for (int row = 0; row < numRows; row++) {
			for (int col = 0; col < numCols; col++) {
				System.out.print(map[row][col]);
			}
			System.out.println();
		}
	}nun möchte ich die Map optisch darstellen, und habe hierzu folgende methode implementiert :
		Java:
	
		public void drawMap(Graphics g){
		
		for (int row = 0; row < numRows; row++) {
			for (int col = 0; col < numCols; col++) {
				if (map[row][col] == 0) {
					g.setColor(Color.WHITE);
				}
				if (map[row][col] == 1) {
					g.setColor(Color.BLACK);
				}
				
				g.fillRect(row * 30, col * 30, 50, 50);
			}
		}
		
		
	}funktioniert auch soweit nur das er mir die map dann vollkommen spiegelverkehrt, wie man hier schön erkennen kann
 
abbildet, es muss also ein Denkfehler mit dem 2dim array sein ich sehe ihn nur grade nicht
vielleicht erblickt es ja jemand auf Anhieb
hier noch die main Methode, die ja eigentlich irrelevant sein sollte :
		Java:
	
	public class Foo {
	public static void main(String[] args) {
		final SimpleMapTest t = new SimpleMapTest("Map1-1.map");
		
		JPanel panel = new JPanel(){
			
			@Override
			public void paintComponent(Graphics g){
				super.paintComponent(g);
				t.drawMap(g);
			}
		};
		
		JFrame f = FrameUtil.createFrame("test", 2, null, panel);
		f.setSize(250,50);
		f.setVisible(true);
	}
	
}
			
				Zuletzt bearbeitet: 
			
		
	
								
								
									
	
								
							
							 
				 
 
		 
 
		