Stránka sa načítava, prosím čakajte…
© 2005 – 2024 Roman Horváth, všetky práva vyhradené. Dnes je 20. 4. 2024.
Dátum: 4. 8. 2018, pred niekoľkými rokmi, aktualizované: 2. 12. 2019, pred piatimi rokmi
Tento projekt súvisí s projektom hry na život. Tiež ide o bunkový automat, ale pravidlá jeho fungovania sú odlišné, čím sa mení výsledný efekt projektu.
~
import knižnica.Bod; import knižnica.GRobot; import static knižnica.Svet.*; import static java.lang.Math.*; public class LesnýPožiar extends GRobot { private final static char OHEŇ = 'w'; private final static char STROM = 'Y'; private final static char ZEM = '.'; private double KEDY_OHEŇ = 0.01; private double KEDY_STROM = 0.05; private double HUSTOTA_LESA = 0.0; private int šírka, výška; private char les[][][]; private int k = 0; private int l = 1; private void inicializuj(int nováŠírka, int nováVýška) { if (nováŠírka > 3) šírka = nováŠírka; else šírka = 3; if (nováVýška > 3) výška = nováVýška; else výška = 3; les = new char[2][výška][šírka]; for (int i = 0; i < výška; ++i) { for (int j = 0; j < šírka; ++j) { if (random() < HUSTOTA_LESA) les[k][i][j] = STROM; else les[k][i][j] = ZEM; } } } private LesnýPožiar() { skry(); nekresli(); farbaPozadia(antracitová); inicializuj(300, 300); vypĺňajTvary(); veľkosť(2.0); spustiČasovač(0.050); aktivuj(); } private boolean horí(int a, int b) { int c = a > 0 ? a - 1 : a; int d = a < (výška - 1) ? a + 1 : a; int e = b > 0 ? b - 1 : b; int f = b < (šírka - 1) ? b + 1 : b; for (int i = c; i <= d; ++i) for (int j = e; j <= f; ++j) if (OHEŇ == les[k][i][j]) return true; return false; } @Override public void aktivita() { vymaž(); Bod poloha = poloha(); preskoč(šírka * (veľkosť() / 2.0), výška * (veľkosť() / 2.0)); for (int i = 0; i < výška; ++i) { for (int j = 0; j < šírka; ++j) { switch (les[k][i][j]) { case OHEŇ: les[l][i][j] = ZEM; break; case STROM: if (horí(i, j)) les[l][i][j] = OHEŇ; else les[l][i][j] = random() < KEDY_OHEŇ ? OHEŇ : STROM; break; default: les[l][i][j] = random() < KEDY_STROM ? STROM : ZEM; break; } switch (les[l][i][j]) { case OHEŇ: farba(svetložltá); break; case STROM: farba(zelená); break; default: farba(čierna); } štvorec(); preskočVľavo(); } odskoč(); preskočVpravo(veľkosť() * šírka); } poloha(poloha); if (0 == k) { k = 1; l = 0; } else { k = 0; l = 1; } prekresli(); } public static void main(String[] args) { použiKonfiguráciu("LesnýPožiar.cfg"); new LesnýPožiar(); } }