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 1
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:
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: