/** 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()); }
/** * 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); } }