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

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

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

Dátum: 25. 4. 2019, pred piatimi rokmi

~

import knižnica.*;

public class Uhýbač extends GRobot
{
	private final static Zoznam<Prekážka> prekážky = new Zoznam<>();

	private Uhýbač()
	{
		veľkosť(15);
		hrúbkaČiary(10);
		nováPrekážka();
	}

	public static void nováPrekážka()
	{
		if (prekážky.veľkosť() < 10)
			prekážky.pridaj(new Prekážka());
	}

	@Override public void kresliTvar()
	{
		krúžok();
	}

	@Override public void pohybMyši()
	{
		skočNa(ÚdajeUdalostí.polohaMyšiX(), Svet.najmenšieY());
	}

	@Override public void tik()
	{
		for (Prekážka prekážka : prekážky)
		{
			if (prekážka.koliduje(this))
			{
				farba(červená);
				return;
			}
		}

		farba(čierna);
	}

	public static void main(String[] args)
	{
		Svet.použiKonfiguráciu("Uhýbač.cfg");
		Svet.skry();
		Svet.nekresli();
		new Uhýbač();
		Svet.zbaľ();
		Svet.kresli();
		Svet.zobraz();
	}
}

~

import knižnica.*;

public class Prekážka extends GRobot
{
	private boolean generujNovúPrekážku = true;

	public Prekážka()
	{
		hrúbkaČiary(10);
		zdvihniPero();
		gyroskop(90.0);
		zrýchlenie(0.1);
		maximálnaRýchlosť(20);
		dosiahnutieCieľa();
	}

	@Override public void kresliTvar()
	{
		obdĺžnik(0.8);
	}

	@Override public boolean koliduje(GRobot iný)
	{
		return bodVObdĺžniku(iný, 0.8);
	}

	@Override public void aktivita()
	{
		if (generujNovúPrekážku && polohaY() < Svet.najväčšieY() / 3)
		{
			generujNovúPrekážku = false;
			Uhýbač.nováPrekážka();
		}

		veľkosť(
			(-polohaY() + Svet.najväčšieY()) * 100 /
			(Svet.najväčšieY() - Svet.najmenšieY()));
	}

	@Override public void dosiahnutieCieľa()
	{
		rýchlosť(0);
		skočNa(0, Svet.najväčšieY());
		cieľ(Svet.náhodnéReálneČíslo(Svet.najmenšieX(), Svet.najväčšieX()),
			Svet.najmenšieY() - 150);
	}
}

Ukážka

obrázok

Zvrchu „padajú“ zväčšujúce sa prekážky, čím budia dojem, že sa približujú (čo by sa dalo ešte umocniť zmenou poradia kreslenia robotov a kreslením vyplnených tvarov). Krúžok v spodnej časti obrazovky je ovládaný polohou myši. Po kolízii s prekážkou sa nestane nič, okrem toho, že krúžok sčervená. (Musela by byť doprogramovaná zmysluplnejšia akcia.)