@Override
  public void speichern(String filename, Object o) {
    PrintStream ps = new PrintStream(baos);
    PrintStream old = System.out;
    System.setOut(ps);

    this.s = (SpielBean) o;

    try {
      br = new BufferedWriter(new FileWriter(filename + ".csv"));
    } catch (IOException e2) {
      e2.printStackTrace();
    }
    try {
      Spieler sp1 = s.getSpieler1();
      Spieler sp2 = s.getSpieler2();
      // Spieler 1 wird gespeichert
      if ((sp1.getKi() == null)) {
        if (sp1.getFarbe().equals(FarbEnum.WEISS)) {
          br.write("Spieler: " + sp1.getName() + ";" + "Weiss" + ";" + "Mensch");
          br.newLine();
        }
      } else if (sp1.getKi() instanceof KI_Dame) {
        if (sp1.getFarbe().equals(FarbEnum.WEISS)) {
          br.write("Spieler: " + sp1.getName() + ";" + "Weiss" + ";" + "KI");
          br.newLine();
        }
      }
      // Spieler 2 wird gespeichert
      if ((sp2.getKi() == null)) {
        if (sp2.getFarbe().equals(FarbEnum.SCHWARZ)) {
          br.write("Spieler: " + sp2.getName() + ";" + "Schwarz" + ";" + "Mensch");
          br.newLine();
        }
      } else if (sp2.getKi() instanceof KI_Dame) {
        if (sp2.getFarbe().equals(FarbEnum.SCHWARZ)) {
          br.write("Spieler: " + sp2.getName() + ";" + "Schwarz" + ";" + "KI");
          br.newLine();
        }
      }
      br.write(
          "SpielerAmZug: "
              + s.getSpielerAmZug().getName()
              + ";"
              + s.getSpielerAmZug().getFarbe()
              + ";"
              + "null");
      br.newLine();

      // Felder werden gespeichert
      for (int i = 0; i < s.getSpielbrett().getFelder().length; i++) {
        for (int j = 0; j < s.getSpielbrett().getFelder()[i].length; j++) {
          if (s.getSpielbrett().getFelder()[i][j].getFigur() == null) {
            br.write(
                s.getSpielbrett().getFelder()[i][j].getId()
                    + ";"
                    + s.getSpielbrett().getFelder()[i][j].getFarbeFeld()
                    + ";"
                    + "null"
                    + ";"
                    + "null"
                    + ";"
                    + "false");
            br.newLine();
          } else if (s.getSpielbrett().getFelder()[i][j].getFigur() != null) {
            br.write(
                s.getSpielbrett().getFelder()[i][j].getId()
                    + ";"
                    + s.getSpielbrett().getFelder()[i][j].getFarbeFeld()
                    + ";"
                    + s.getSpielbrett().getFelder()[i][j].getFigur().getId()
                    + ";"
                    + s.getSpielbrett().getFelder()[i][j].getFigur().getFarbe()
                    + ";"
                    + s.getSpielbrett().getFelder()[i][j].getFigur().isIstDame());
            br.newLine();
          }
        }
      }

      System.out.println("SPIEL CSV WURDE ERFOLGREICH GESPEICHERT !!!");
    } catch (IOException e1) {
      e1.printStackTrace();
    } finally {
      try {
        br.close();
      } catch (IOException e1) {
        e1.printStackTrace();
      }
    }

    System.out.flush();
    System.setOut(old);
  }
  @Override
  public Object laden(String filename) {
    try {

      rd = new BufferedReader(new FileReader(filename));
      String line = null;
      int k = 1;
      int l = 1;

      while ((line = rd.readLine()) != null) {
        if (line.startsWith("Spieler")) {

          String[] F = line.split(";");
          String name = F[0];
          String farbe = F[1];
          String KI = F[2];

          if (KI.equals("Mensch")) {
            this.s.addSpieler(
                name.substring(9), this.bestimmeFarbeSpieler(farbe), s.bestimmeKI(KI));
          } else if (KI.equals("KI")) {
            this.s.addSpieler(
                name.substring(9), this.bestimmeFarbeSpieler(farbe), s.bestimmeKI(KI));

          } else {
            if (this.s.getSpieler1().getFarbe().equals(this.bestimmeFarbeFigur(farbe))) {
              this.s.setSpielerAmZug(this.s.getSpieler1());
            }
            if (this.s.getSpieler2().getFarbe().equals(this.bestimmeFarbeFigur(farbe))) {
              this.s.setSpielerAmZug(this.s.getSpieler2());
            }
          }
        }
        // ------------Weg------------
        else {
          String[] F = line.split(";");
          String feldId = F[0];
          String feldFarbe = F[1];
          String figurId = F[2];
          String figurFarbe = F[3];
          String istDame = F[4];

          if ((!figurId.equals("null"))) {
            for (int i = 0; i < s.getSpielbrett().getFelder().length; i++) {
              for (int j = 0; j < s.getSpielbrett().getFelder()[i].length; j++) {
                if (s.getSpielbrett().getFelder()[i][j].getId().equals(feldId)
                    && (!figurId.equals("null"))) {
                  Spielfigur x =
                      new Spielfigur(
                          s.getSpielbrett().getFelder()[i][j],
                          this.bestimmeFarbeFigur(figurFarbe),
                          this.istDameCSV(istDame));
                  s.getSpielbrett().getFelder()[i][j].setFigur(x);
                  if (s.getSpieler1().getFarbe().equals(this.bestimmeFarbeFigur(figurFarbe))) {
                    if (k <= 31) {
                      x.setId(figurId);
                      s.getFigurWeiss()[k] = x;
                      s.getSpieler1().getFigurArray()[k] = x;
                    }
                    s.getSpieler1()
                        .getFigurArray()[k]
                        .setSpielfeld(s.getSpielbrett().getFelder()[i][j]);
                    s.getSpielbrett()
                        .getFelder()[i][j]
                        .setFigur(s.getSpieler1().getFigurArray()[k]);
                    k++;
                  }
                  if (s.getSpieler2().getFarbe().equals(this.bestimmeFarbeFigur(figurFarbe))) {
                    if (l <= 31) {
                      x.setId(figurId);
                      s.getFigurSchwarz()[l] = x;
                      s.getSpieler2().getFigurArray()[l] = x;
                    }
                    s.getSpieler2()
                        .getFigurArray()[l]
                        .setSpielfeld(s.getSpielbrett().getFelder()[i][j]);
                    s.getSpielbrett()
                        .getFelder()[i][j]
                        .setFigur(s.getSpieler2().getFigurArray()[l]);
                    l++;
                  }
                }
              }
            }
          }
        }
      }

      s.putArray();
    } catch (IOException e) {
      try {
        throw new IOException("not found ");
      } catch (IOException e1) {
        e1.printStackTrace();
      }
    }
    return s;
  }