public void zeichneFelder(ArrayList<D> daten) {
   if (daten == null) return;
   int spielfeldGroesse = frontend.getSpielfeldGroesse();
   int zoomfaktor = frontend.getZoomfaktor();
   int offset = spielfeldGroesse * zoomfaktor / 100;
   setPreferredSize(new Dimension(getGroesseX() * offset, getGroesseY() * offset));
   for (D datenwert : daten) {
     if (datenwert instanceof D_Feld) {
       D_Feld datenFeld = (D_Feld) datenwert;
       int x = datenFeld.getInt("x");
       int y = datenFeld.getInt("y");
       Feld f = felder[x][y];
       f.setBounds(new Rectangle(offset, offset));
       f.setLocation((f.getPosX() - 1) * offset, (f.getPosY() - 1) * offset);
       f.setDaten(datenFeld);
     } else if (datenwert instanceof D_Einheit) {
       D_Einheit datenEinheit = (D_Einheit) datenwert;
       int x = datenEinheit.getInt("x");
       int y = datenEinheit.getInt("y");
       Feld f = felder[x][y];
       f.setEinheit(datenEinheit);
     } else if (datenwert instanceof D_Stadt) {
       D_Stadt datenStadt = (D_Stadt) datenwert;
       int x = datenStadt.getInt("x");
       int y = datenStadt.getInt("y");
       Feld f = felder[x][y];
       f.setStadt(datenStadt);
     }
   }
   for (int i = 1; i <= this.daten.getInt("x"); i++) {
     for (int j = 1; j <= this.daten.getInt("y"); j++) {
       felder[i][j].zeichnen();
     }
   }
 }
  public Karte(Frontend frontend, D_Karte daten) {
    this.frontend = frontend;
    this.daten = daten;
    String pfadBild = "daten//felder";
    String pfadRessource = "daten//ressourcen";
    String pfadEinheit = "daten//einheiten";
    String pfadStadt = "daten//stadt";
    try {
      bildFeldGewaehlt = ImageIO.read(new File(pfadBild, "gewaehlt.png"));
      bildFeldMarkiert = ImageIO.read(new File(pfadBild, "markiert.png"));
    } catch (IOException e) {
      e.printStackTrace();
      System.exit(-1);
    }
    dateienEinlesen(pfadBild, bildFeld);
    dateienEinlesen(pfadRessource, bildRessource);
    dateienEinlesen(pfadEinheit, bildEinheit);
    dateienEinlesen(pfadStadt, bildStadt);

    int spielfeldGroesse = frontend.getSpielfeldGroesse();
    int zoomfaktor = frontend.getZoomfaktor();
    int offset = spielfeldGroesse * zoomfaktor / 100;
    setLayout(null);
    setPreferredSize(new Dimension(getGroesseX() * offset, getGroesseY() * offset));
    felder = new Feld[getGroesseX() + 1][getGroesseY() + 1];
    for (int i = 1; i <= getGroesseX(); i++) {
      for (int j = 1; j <= getGroesseY(); j++) {
        Feld f = new Feld(frontend, i, j);
        felder[i][j] = f;
        add(f);
      }
    }
  }
 public Image getBildFeldLeer() {
   int zoomfaktor = frontend.getZoomfaktor();
   BufferedImage original = bildFeld.get("leer");
   if (zoomfaktor == 100) return original;
   Image kopie =
       original.getScaledInstance(
           original.getWidth() * zoomfaktor / 100,
           original.getHeight() * zoomfaktor / 100,
           Image.SCALE_FAST);
   return kopie;
 }