Hallo!
Ich habe hier etwas geschrieben, was aus einer Textdatei folgendes liest:
0000000000000000
0111611100000300
0100101111101610
0000100000101110
0011100000100010
0000100100100010
0111100100111110
0100000100000000
0100000111110000
0100000100520040
0100000100000010
0111110111111110
0100000100000010
0100100111111110
0111111100050000
0000000000000000
Die Zahlen sind hierbei Objekten zugeordnet. Zum Beispiel steht die 1 für "Boden", welchen ich so geschrieben habe:
Die Lesende Klasse sieht so aus:
Am Ende soll so eine Map entstehen, die auf einem JFrame bespielbar ist. Ein bewegbarer Spieler und besagtes Frame existieren schon, genauso andere Objekte wie Wand, Monster, usw.
Mein Problem:
Ich komme nicht drauf, wie ich jetzt die Objekte genau an der Stelle der entsprechenden Zahl auf das Frame zeichnen kann. Dazu brauche ich doch sicher zunächst eine Klasse Spielfeld, die so aussehen könnte:
Mein Frame hat die Größe 800x600, ich brauche also auch Rectangles der Größe 10x10, die dann mit der Grafik des Objektes gefüllt wird.
Weiß jemand, wie man das Umsetzen kann?
@ Saheeda: Ich hatte versehentlich auf Thema erstellen statt auf Vorschau geklickt, sorry
Ich habe hier etwas geschrieben, was aus einer Textdatei folgendes liest:
0000000000000000
0111611100000300
0100101111101610
0000100000101110
0011100000100010
0000100100100010
0111100100111110
0100000100000000
0100000111110000
0100000100520040
0100000100000010
0111110111111110
0100000100000010
0100100111111110
0111111100050000
0000000000000000
Die Zahlen sind hierbei Objekten zugeordnet. Zum Beispiel steht die 1 für "Boden", welchen ich so geschrieben habe:
Java:
import java.awt.Rectangle;
import java.awt.image.BufferedImage;
import java.io.IOException;
import javax.imageio.ImageIO;
public class Boden {
private float posx;
private float posy;
private Rectangle bounding;
private BufferedImage look;
public Boden(int x, int y){
try {
look = ImageIO.read(getClass().getClassLoader().getResourceAsStream("gfx/boden.png"));
} catch (IOException e) {
e.printStackTrace();
}
bounding = new Rectangle(x, y);
posx = x;
posy = y;
}
public void update(boolean up, boolean down, boolean left, boolean right){
if(up)posy -= 0;
if(down)posy += 0;
if(right)posx += 0;
if(left)posx -= 0;
bounding.x = (int)posx;
bounding.y = (int)posy;
}
public BufferedImage getLook(){
return look;
}
public Rectangle getBounding(){
return bounding;
}
}
Die Lesende Klasse sieht so aus:
Java:
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class LevelLeser {
public static void main(String[] args) throws IOException{
FileReader f = new FileReader("C:/Users/Lukas/Workspace2/MyProject/src/txt/level3.txt");
BufferedReader b = new BufferedReader(f);
int n = 0;
String level = b.readLine();
while(level != null){
n++;
level = b.readLine();
}
f.close();
String[] content = new String[n];
f = new FileReader("C:/Users/Lukas/Workspace2/MyProject/src/txt/level3.txt");
b = new BufferedReader(f);
for(int i = 0; i < n; i++){
content[i] = b.readLine();
}
f.close();
for(String x : content){
System.out.println(x);
}
}
}
Am Ende soll so eine Map entstehen, die auf einem JFrame bespielbar ist. Ein bewegbarer Spieler und besagtes Frame existieren schon, genauso andere Objekte wie Wand, Monster, usw.
Mein Problem:
Ich komme nicht drauf, wie ich jetzt die Objekte genau an der Stelle der entsprechenden Zahl auf das Frame zeichnen kann. Dazu brauche ich doch sicher zunächst eine Klasse Spielfeld, die so aussehen könnte:
Java:
Spielfeld[][] spielfeld = new Spielfeld[80][60]
Weiß jemand, wie man das Umsetzen kann?
@ Saheeda: Ich hatte versehentlich auf Thema erstellen statt auf Vorschau geklickt, sorry
Zuletzt bearbeitet: