Hallo,
ich möchte ein kleines Rollenspiel als Applet programmieren. Dazu habe ich zunächst 3 Klassen
erzeugt. Eine, welches das Applet initialisiert und die Methoden überschreibt, eine, welches das Spielfeld erzeugt(Maze-Methode) und die dritte, welche das Spielfeld zeichnen(Draw-Methode) soll.
Die Maze-Methode erzeugt zunächst eine 2400*1800-Matrix, befüllt sie mit 0en und dann einen Bereich in der Matrix mit 1en. Die 1en sollen einen Raum darstellen. Nun soll die Draw-Methode die Matrix an jeder 20. Stelle überprüfen (die PNG-Dateien haben eine Größe von 20*20px) und bei jeder 0 ein Image zeichnen, die 1en sollen frei bleiben.
Wenn ich das direkt in die Paintmethode des Applets schreibe, klappt es, wenn ich es ind die Draw-Methode auslagern möchte allerdings nicht. Ich vermute, die Matrix wird nicht korrekt übergeben.
Hier mal die wichtigsten Zeilen Code, Paint-Methode nicht ausgelagtert
Applet
Maze
Und hier der Code, ausgelagert
Applet
Draw
Für Hilfe wäre ich sehr dankbar,
Christian
ich möchte ein kleines Rollenspiel als Applet programmieren. Dazu habe ich zunächst 3 Klassen
erzeugt. Eine, welches das Applet initialisiert und die Methoden überschreibt, eine, welches das Spielfeld erzeugt(Maze-Methode) und die dritte, welche das Spielfeld zeichnen(Draw-Methode) soll.
Die Maze-Methode erzeugt zunächst eine 2400*1800-Matrix, befüllt sie mit 0en und dann einen Bereich in der Matrix mit 1en. Die 1en sollen einen Raum darstellen. Nun soll die Draw-Methode die Matrix an jeder 20. Stelle überprüfen (die PNG-Dateien haben eine Größe von 20*20px) und bei jeder 0 ein Image zeichnen, die 1en sollen frei bleiben.
Wenn ich das direkt in die Paintmethode des Applets schreibe, klappt es, wenn ich es ind die Draw-Methode auslagern möchte allerdings nicht. Ich vermute, die Matrix wird nicht korrekt übergeben.
Hier mal die wichtigsten Zeilen Code, Paint-Methode nicht ausgelagtert
Applet
Java:
private int[][] createdMaze = new int[2400][1800];
Maze maze = new Maze();
@Override
public final void init() {
setSize(800, 600);
setBackground(Color.BLACK);
maze.createMaze();
[...]
setMaze();
}
public void setMaze() {
createdMaze = maze.returnMaze();
}
@Override
public final void paint(Graphics g) {
g.drawImage(background, -800, -600, this);
for (int i = 0; i < 2400; i+=20) {
for (int j = 0; j < 1800; j+=20) {
if (createdMaze[i][j] == 0) {
g.drawImage(wall, i - 800, j - 600, this);
}
}
}
}
Maze
Java:
public int[][] maze = new int[2400][1800];
public void fillMaze() {
for (int i = 0; i < 2400; i++) {
for (int j = 0; j < 1800; j++) {
maze[i][j] = 0;
}
}
}
public void createRoom(int x1, int x2, int y1, int y2) {
for (int i = x1; i < x2; i++) {
for (int j = y1; j < y2; j++) {
maze[i][j] = 1;
}
}
}
public void createMaze() {
fillMaze();
createRoom(840, 1200, 640, 1000);
}
public int[][] returnMaze() {
return maze;
}
Und hier der Code, ausgelagert
Applet
Java:
@Override
public final void paint(Graphics g) {
drawMaze.setMaze();
drawMaze.drawMaze(background, wall, bar, g);
}
Draw
Java:
Maze maze = new Maze();
private int[][] createdMaze = new int[2400][1800];
public void setMaze() {
createdMaze = maze.returnMaze();
}
public void drawMaze(Image background, Image wall, Image bar, Graphics g) {
g.drawImage(background, -800, -600, null);
for (int i = 0; i < 2400; i+=20) {
for (int j = 0; j < 1800; j+=20) {
if (maze.returnMaze()[i][j] == 0) {
g.drawImage(wall, i - 800, j - 600, null);
}
}
}
}
Für Hilfe wäre ich sehr dankbar,
Christian