Stránka sa načítava, prosím čakajte…
© 2005 – 2024 Roman Horváth, všetky práva vyhradené. Dnes je 27. 4. 2024.
Dátum: 15. 3. 2013, pred viacerými rokmi, aktualizované: 30. 7. 2020, pred štyrmi rokmi
Zadanie
Vyriešte kreslenie pyramídy z hviezd s pomocou rekurzie!
Riešenie
~
import knižnica.*; public class PyramídaZHviezd extends GRobot { // Konštanty použité vo výpočtoch nižšie… private final static int základňa = 7; private final static int početCípov = 5; private final static int rozmerCípov = 40; private final static int rozostupX = 100; private final static int rozostupY = 60; // Konštruktor private PyramídaZHviezd() { super(750, 500); Svet.zbaľ(); Svet.nekresli(); // Skrytie robota a zdvihnutie kresliaceho pera. skry(); zdvihniPero(); // Úvodné umiestnenie robota. dozadu((základňa - 1) * (rozostupY / 2)); // Štart kreslenia pyramídy. pyramída(základňa); Svet.kresli(); } /** * Metóda na nakreslenie hviezdy. */ public void lúče() { for (int i = 0; i < početCípov; ++i) { položPero(); dopredu(rozmerCípov); zdvihniPero(); dozadu(rozmerCípov); doprava(360.0 / početCípov); } } /** * Rekurzívna metóda kresliaca pyramídu. Stavebnými kameňmi pyramídy sú * hviezdy. */ public void pyramída(int počet) { if (počet > 0) { // Metóda je založená na kreslení riadkov. Po nakreslení jedného // riadka zavolá samú seba (t. j. vykoná rekurziu), čo sa bude // opakovať až do nakreslenia všetkých riadkov pyramídy. // Predpokladáme, že pred kreslením riadka sa robot nachádza // „v strede“ (v zvislej osi kreslenia pyramídy). Preto ho najprv // posunieme doľava o rozmer polovice šírky riadka. posuňVľavo((počet - 1) * (rozostupX / 2)); // Potom necháme robot nakresliť prislúchajúci počet hviezd. for (int i = 0; i < počet; ++i) { lúče(); posuňVpravo(rozostupX); } // Po dokreslení hviezd posunieme robot späť „do stredu“, potom // dopredu a pokračujeme kreslením ďalšieho riadka s menším počtom // hviezd (rekurzívnym volaním metódy pyramída)… posuňVľavo((počet + 1) * (rozostupX / 2)); dopredu(rozostupY); pyramída(počet - 1); } } public static void main(String[] args) { new PyramídaZHviezd(); } }