Ejemplo n.º 1
0
  /** Tulostetaan lyhin polku jota pitkin päästiin alkupisteestä maaliin. */
  public void tulostaPolku() {
    if (!saavutettiinkoMaali()) return;

    System.out.println("Lyhin polku maalista lähtien:");
    Piste edellinen = getMaalipiste();
    while (edellinen.getEdellinen() != null) {
      System.out.print(edellinen.getX() + "," + edellinen.getY() + "...");
      edellinen = edellinen.getEdellinen();
    }
    System.out.println(
        edellinen.getX() + "," + edellinen.getY() + " \nPituus: " + getMaalipiste().getDist());
  }
Ejemplo n.º 2
0
  /**
   * Metodi lisää kuplia maailmaan joka kymmenennen ampumiskerran jälkeen. Aluksi pudotetaan kaikkia
   * maailman kuplia ja pisteitä yhden rivin verran alaspäin. Sitten luodaan yläriviin uudet kuplat
   * ja pisteet joka toisella kerralla limittäin ja joka toisella suoraan. Uudet pisteet täytyy
   * luoda, jotta kuplat asettuisivat oikein, kun niitä ammutaan uuteen yläriviin.
   */
  public void lisaaKuplia() {

    this.tutkiEhjat();

    /* Kuplia lisätään vain, jos maailmassa on ehjiä kuplia.*/
    if (!this.ehjat.isEmpty() && !this.onVainPutoavia()) {

      /* Kuplia lisätään tiettyjen ampumiskertojen välein. */
      if (this.ampumiskerrat % 10 == 0) {

        /*
         * Käydään läpi maailman pisteet ja pudotetaan niitä yhden
         * rivin verran alaspäin.
         */

        Iterator<Piste> iteraattori = this.pisteiteraattori();
        while (iteraattori.hasNext()) {
          Piste pudotettava = iteraattori.next();
          pudotettava.asetaSijainti(pudotettava.annaX(), pudotettava.annaY() + 45);
        }

        /* Pudotetaan myös kuplia yhden rivin verran alaspäin. */

        for (int i = 0; i < this.kuplat.size(); i++) {
          Kupla pudotettava = this.kuplat.get(i);
          pudotettava.asetaSijainti(pudotettava.annaX(), pudotettava.annaY() + 45);

          /*
           * Jos pudotettavat kuplat putoavat maailman alareunan
           * yli (tai siis ali hehheh), niin peli hävitään.
           */

          if (pudotettava.onEhja() && pudotettava.annaY() >= 450) {

            this.pelimaailma.lopetaPeli(false);
          }
        }

        /*
         * Joka toisella kerralla kuplat luodaan limittäin ja joka
         * toisella "suoraan". Aloitetaan limittäin luomisesta, koska
         * alempi rivi on tehty "suoraan".
         *
         */

        if (this.lisaamiskerrat % 2 == 0) {

          /* Luodaan uudet pisteet (8) yläreunaan. */
          for (int a = 0; a < 8; a++) {
            Piste uusi = new Piste(this.alkupiste_x + 45 + (a * 45), this.alkupiste_y + 22.5);
            this.pisteet.add(uusi);
          }

          /* Luodaan rivin verran (8) kuplia yläreunaan. */
          for (int b = 0; b < 8; b++) {
            Kupla uusi = new Kupla(this.alkupiste_x + 22.5 + (b * 45), this.alkupiste_y, this);
            this.kuplat.push(uusi);
          }
          this.lisaamiskerrat++;

          /* Nyt luodaan uudet pisteet ja kuplat "suoraan". */
        } else {

          /* Luodaan uudet pisteet (9) yläreunaan. */
          for (int a = 0; a < 9; a++) {
            Piste uusi = new Piste(this.alkupiste_x + 22.5 + (a * 45), this.alkupiste_y + 22.5);
            this.pisteet.add(uusi);
          }

          /* Luodaan rivin verran (9) kuplia yläreunaan. */
          for (int b = 0; b < 9; b++) {
            Kupla uusi = new Kupla(this.alkupiste_x + (b * 45), this.alkupiste_y, this);
            this.kuplat.push(uusi);
          }
          this.lisaamiskerrat++;
        }
      }

      /* Jos maailmassa ei ole enää ehjiä kuplia, peli on voitettu. */
    } else {
      this.peliLoppunut = true;
      this.pelimaailma.lopetaPeli(true);
    }
  }