示例#1
0
 /**
  * ******************************************************************************************************
  * log lodi
  *
  * @param l lod
  * @param den aktualni den
  */
 private void logLod(Lod l, int den) {
   if (l.getCil().size() > 0) {
     int cas = 0;
     int vzdalenost = (int) (l.getCil().get(l.getCil().size() - 1).getVzdalenost() / 25);
     cas = vzdalenost + l.getCil().size() + den;
     int casB = cas + vzdalenost;
     Soubor.getLogger()
         .log(
             Level.INFO,
             "Lod č. "
                 + l.getId()
                 + " veze "
                 + l.getNaklad()
                 + " léků na "
                 + l.getCil().size()
                 + " planet. Loď je naplněna z "
                 + (int) (l.getNaklad() / 50000.0)
                 + "%."
                 + " Lod č."
                 + l.getId()
                 + " doručí svůj celý náklad "
                 + cas
                 + " den. A vrátí se "
                 + casB
                 + " den.");
   } else {
     Soubor.getLogger().log(Level.FINE, "Lod č." + l.getId() + " se vrací do Stanice.");
   }
 }
示例#2
0
 /** ******************************************************************** vyšle naložené lodě */
 private void vysliNalozeneLode() {
   for (int i = 0; i < lode.size(); i++) {
     if (lode.get(i).getStav() == 1) {
       lode.get(i).setStav(0);
       Soubor.getLogger()
           .log(Level.FINE, "Lod č." + lode.get(i).getId() + " byla vyslána na cestu.");
     }
   }
 }
示例#3
0
  /**
   * **************************************************************** stará se o chod druhého
   * vlákna, každý tik představuje jeden den.
   */
  public void run() {
    Soubor.initLogger();
    synchronized (this) {
      while (true) {

        try {
          if (den % 361 == 360) {
            gui.getObjednat().setDisable(true);
            this.wait();
          }
        } catch (InterruptedException e) {
          e.printStackTrace();
        }
        setPopulace();
        //////////////// ZACATEK MESICE
        vytvorObjednavky();
        for (int i = 0; i < 30; i++) {
          ////////////// ZACATEK DNE
          Soubor.getLogger().log(Level.SEVERE, "Začíná den " + (den + 1) + ", měsíc " + (mesic));
          obsluzVsechnyObjednavky();
          posunVsechnyLode();
          den++;
          prekresliPlatno();
          Soubor.getLogger().log(Level.SEVERE, "Den " + den + " skončil");
          zacniVykladatLode();
          vysliNalozeneLode();
          if (den % 30 == 0) {
            zabijLidi();
            if (nadvyrobenoLeku() != 0) {
              throw new RuntimeException("Byly vyrobeny léky, které jsme nestihli dodat.");
            }
          }
        }
        setPouzitiLodi();
        nastavPouzitiLodi(false);
        mesic++;
      }
    }
  }
示例#4
0
 /**
  * *************************************************************** vrátí loď, krerá je v zásobníku
  * na vrchlu
  *
  * @param s výchozí stanice
  * @return instance třídy {@code Lod}
  */
 private Lod getLod(Stanice s) {
   if (s.getDok().size() == 0) {
     Lod l = new Lod(s, counter);
     counter++;
     l.setPouzita(true);
     lode.add(l);
     Soubor.getLogger()
         .log(
             Level.INFO,
             "Proběhla výroba nové lodi č." + counter + " v doku Stanice " + (s.getId() - 5000));
     return l;
   } else {
     s.getDok().peek().setPouzita(true);
     return s.getDok().peek();
   }
 }
示例#5
0
  /**
   * **************************************************************** vrátí seznam objednávek
   *
   * @return seznam objednávek
   */
  private List<Objednavka> getObjednavky() {
    ArrayList<Objednavka> objednavky = new ArrayList<Objednavka>();

    for (int i = 0; i < g.getPlanety().size() - 5; i++) {
      Planeta a = g.getPlanety().get(i);
      if (!a.isMrtva()) {
        int objednavka = a.getPop() - a.vyrobLeky();
        Stanice sc = (Stanice) a.getCesta().get(a.getCesta().size() - 1);
        Objednavka ob = new Objednavka(a, sc, objednavka, a.getVzdalenost());
        objednavky.add(ob);
        Soubor.getLogger()
            .log(
                Level.INFO,
                "Planeta " + a.getJmeno() + " poslala objednávku na " + objednavka + " léků.");
        a.setObjednavka(ob);
      }
    }
    statistikaObjednavek.add(objednavky);
    return objednavky;
  }
示例#6
0
  /**
   * ********************************************************************* vyloží náklad lodi na
   * planetě
   *
   * @param l vykládající loď
   */
  private void vylozLod(Lod l) {
    if (l.getStav() == 3) {

      Planeta a = l.getCil().pop();
      int naklad = l.getRozpis().pop();
      Soubor.getLogger()
          .log(
              Level.FINE,
              "Lod č."
                  + l.getId()
                  + " vyložila na "
                  + a.toString()
                  + " náklad "
                  + naklad
                  + " léků.");
      a.getDoruceno().add(new Doruceni(naklad, l, den));
      l.setNaklad(l.getNaklad() - naklad);
      a.getObjednavka().setKolik(a.getObjednavka().getKolik() - naklad);
      a.getObjednavka().setPotencial(a.getObjednavka().getPotencial() - naklad);
      l.setStav(0);
    }
  }