TlačiťTlačiť Slovenčina English Hľadať RSS

© 2005 – 2024 Roman Horváth, všetky práva vyhradené. Dnes je 20. 4. 2024.

Stránka sa načítava, prosím čakajte…

Dátum: 12. 8. 2021, pred tromi rokmi

~

import knižnica.*;

public class Dážď extends GRobot
{
	public class Kvapka extends Častica
	{
		public double rýchlosť = 0;
	}

	public class MiniLCG
	{
		private int x = 13;
		public int daj() { return x = (31 * x + 19) % 50; }
		public void nech(int x0) { x = x0; }
		public MiniLCG(int x0) { x = x0; }
		public MiniLCG() {}
	}

	private int x0 = 1;
	private int y0 = 2;
	private int r0 = 4;

	private MiniLCG xLCG = new MiniLCG(x0);
	private MiniLCG yLCG = new MiniLCG(y0);
	private MiniLCG rLCG = new MiniLCG(r0);

	private Kvapka[] kvapky = new Kvapka[50];

	private final Tlačidlo xp, yp, rp;
	private final Tlačidlo xm, ym, rm;

	private boolean spustené = false;

	private Dážď()
	{
		super(400, 400);
		ohranič();
		skry();
		smer(240);
		spôsobKreslenia(KRESLI_NA_STRED);

		inicializuj();

		xp = new Tlačidlo("x+");
		xm = new Tlačidlo("x−");

		yp = new Tlačidlo("y+");
		ym = new Tlačidlo("y−");

		rp = new Tlačidlo("r+");
		rm = new Tlačidlo("r−");

		xp.šírka(46);
		xm.šírka(46);

		yp.šírka(46);
		ym.šírka(46);

		rp.šírka(46);
		rm.šírka(46);

		xp.skoč(-123, 180);
		xm.skoč(-173, 180);

		yp.skoč(173, 180);
		ym.skoč(123, 180);

		rp.skoč( 25, -180);
		rm.skoč(-25, -180);

		Svet.spustiČasovač(0.080);
	}

	@Override public void voľbaTlačidla()
	{
		if (xp.aktivované())
		{
			if (++x0 > 49) x0 = 0;
			inicializuj();
		}
		else if (yp.aktivované())
		{
			if (++y0 > 49) y0 = 0;
			inicializuj();
		}
		else if (rp.aktivované())
		{
			if (++r0 > 49) r0 = 0;
			inicializuj();
		}
		else if (xm.aktivované())
		{
			if (--x0 < 0) x0 = 49;
			inicializuj();
		}
		else if (ym.aktivované())
		{
			if (--y0 < 0) y0 = 49;
			inicializuj();
		}
		else if (rm.aktivované())
		{
			if (--r0 < 0) r0 = 49;
			inicializuj();
		}
	}

	private void inicializuj()
	{
		xLCG.nech(x0);
		yLCG.nech(y0);
		rLCG.nech(r0);

		for (int i = 0; i < kvapky.length; ++i)
		{
			Kvapka kvapka = new Kvapka();
			kvapka.x = 8 * (25 - xLCG.daj());
			kvapka.y = 8 * (-25 + yLCG.daj());
			kvapka.uhol = smer();
			kvapka.rýchlosť = 10 + rLCG.daj();
			kvapky[i] = kvapka;
		}

		prekresli();
	}

	private void pohni()
	{
		Svet.nekresli();
		for (int i = 0; i < kvapky.length; ++i)
		{
			Kvapka kvapka = kvapky[i];
			skočNa(kvapka);
			uhol(kvapka);
			skoč(kvapka.rýchlosť);
			kvapka.poloha(this);
		}
		Svet.kresli();

		prekresli();
	}

	private void prekresli()
	{
		Svet.nekresli();
		Svet.vymaž();

		for (int i = 0; i < kvapky.length; ++i)
		{
			Kvapka kvapka = kvapky[i];
			skočNa(kvapka);
			uhol(kvapka);
			vpred(kvapka.rýchlosť);
		}

		skočNa(0, 180);
		text("x0: " + x0 + "; y0: " + y0 + "; r0: " + r0);
		Svet.kresli();
	}

	@Override public void tik()
	{
		if (spustené) pohni();
	}

	@Override public void klik()
	{
		spustené = !spustené;
	}

	public static void main(String[] args)
	{
		Svet.použiKonfiguráciu("Dážď.cfg");
		new Dážď();
	}
}

  
obrázok 
Ukážka vzhľadu po spustení.