hi
habe in zeile 25 die variable map als public deklariert
in der klasse loadmap kann ich der variable map auch problemlos werte zuweisen.
allerdings enthaelt die variable in der klasse init dann keine werte mehr.
was habe ich falsch gemacht?
habe in zeile 25 die variable map als public deklariert
in der klasse loadmap kann ich der variable map auch problemlos werte zuweisen.
allerdings enthaelt die variable in der klasse init dann keine werte mehr.
was habe ich falsch gemacht?
Code:
import java.applet.*;
import java.awt.*;
import java.io.*;
public class castleislands extends Applet implements Runnable {
private static final long serialVersionUID = 1L;
private Image dbImage;
private Graphics dbg;
Image tile10;
Image tile11;
int radius = 15;
int xmappos = -50;
int ymappos = -25;
int xtile = 0;
int ytile = 0;
boolean walknorth = false;
boolean walksouth = false;
boolean walkeast = false;
boolean walkwest = false;
Image mapImages[][] = new Image[240][80];
public String[][] map;
public void init() {
try {
loadmap("map.txt");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(map[0][0]);
System.out.println(map[0][1]);
System.out.println(map[1][1]);
setSize(800, 600);
tile10 = getImage(getCodeBase(), "10.gif");
tile11 = getImage(getCodeBase(), "11.gif");
for (int iy = 0; iy < 240; iy++) {
for (int ix = 0; ix < 80; ix++) {
System.out.println(iy);
System.out.println(ix);
if (map[iy][ix] == "10")
mapImages[iy][ix] = tile10;
if (map[iy][ix] == "11")
mapImages[iy][ix] = tile11;
}
}
}
public void start() {
Thread th = new Thread(this);
th.start();
}
public void run() {
while (true) {
if (walkwest == true && xmappos != -50) {
xmappos += 5;
}
if (walkeast == true && xmappos != -600) {
xmappos -= 5;
}
if (walknorth == true && ymappos != -25) {
ymappos += 5;
}
if (walksouth == true && ymappos != -150) {
ymappos -= 5;
}
repaint();
try {
Thread.sleep(40);
} catch (InterruptedException ex) {
}
}
}
public void loadmap(String filename) throws IOException {
String[][] map = new String[240][80];
BufferedReader reader = new BufferedReader(new FileReader(new File(filename)));
String line;
for (int i = 0; i < 240; i++) {
if ((line = reader.readLine()) != null) {
if (line.length() == 239) {
map[i] = line.split(";");
} else {
System.out.println("Zeilenlaengen passen nicht :(");
break;
}
} else {
System.out.println("Die map-datei enthaelt zu wenige zeilen :(");
break;
}
}
System.out.println(map[0][0]);
System.out.println(map[0][1]);
System.out.println(map[1][1]);
}
public boolean keyDown(Event e, int key) {
if (key == Event.LEFT) {
walkwest = true;
} else if (key == Event.RIGHT) {
walkeast = true;
} else if (key == Event.UP) {
walknorth = true;
} else if (key == Event.DOWN) {
walksouth = true;
} else if (key == 32) {
System.out.println("BUMM!");
} else {
System.out.println(key);
}
return true;
}
public boolean keyUp(Event e, int key) {
if (key == Event.LEFT) {
walkwest = false;
} else if (key == Event.RIGHT) {
walkeast = false;
} else if (key == Event.UP) {
walknorth = false;
} else if (key == Event.DOWN) {
walksouth = false;
}
return true;
}
public void paint(Graphics g) {
for (int iy = 0; iy < 240; iy++) {
for (int ix = 0; ix < 80; ix++) {
if (ytile % 2 == 0) {
g.drawImage(mapImages[xtile][ytile], xtile * 100 + xmappos, ytile * 25 + ymappos, this);
} else {
g.drawImage(mapImages[xtile][ytile], xtile * 100 + xmappos + 50, ytile * 25 + ymappos, this);
}
xtile++;
}
xtile = 0;
ytile++;
}
xtile = 0;
ytile = 0;
g.setColor(Color.red);
g.fillOval(385, 285, 2 * radius, 2 * radius);
}
public void update(Graphics g) {
if (dbImage == null) {
dbImage = createImage(this.getSize().width, this.getSize().height);
dbg = dbImage.getGraphics();
}
dbg.setColor(getBackground());
dbg.fillRect(0, 0, this.getSize().width, this.getSize().height);
dbg.setColor(getForeground());
paint(dbg);
g.drawImage(dbImage, 0, 0, this);
}
public void stop() {
}
public void destroy() {
}
}