22 - Dvojitý cyklus

Dnes si vyrobíme generátor vodnej hladiny. Matrixovské písmo.

Na začiatok úloha na osvieženie pamäte, ale budeme na ňu neskôr nadväzovať:

Úloha 1

Napíšte skeč, ktorý na náhodnú pozíciu x,y na obrazovke nakreslí obrazec ako keď kameň spadne do vody. Je to 5 sústredných kružníc, najmenšia má priemer 5 px a každá ďalšia je o 20 väčšia.

Úloha 2

Váš program z Úlohy 1 vyzerá možno takto nejak:

size(400, 400);
background(#0A8FFF);
noFill();
stroke(255);

float x = random(width);
float y = random(height);

for (int i = 0; i < 5; i++)
{
  circle(x,y, 5 + i * 20);
}

Ako by sme program zmenili, keby sme chceli, aby sa takto nakreslilo 10 obrazcov na rôzne náhodné miesta:

Použijeme znovu cyklus for. Do tela cyklu zavrieme to, čo chceme, aby sa opakovalo:

  • vygenerovanie náhodných súradníc x,y

  • existujúci cyklus for, ktorý vykresľuje 5 sústredných kružníc

Úloha 3

Upravte program tak, aby nebola náhodná iba pozícia obrazcov, ale aj:

  • Každý obrazec má inú priesvitnosť.

  • Počet kružníc v obrazci je náhodný od 5 do 10.

  • Každý obrazec má náhodný rozostup kružníc, od 10 do 20.

Ako nastaviť priesvitnosť? Ak farbu čiary nastavíme príkazom: stroke(255), tak druhý parameter predstavuje opacitu (viditeľnosť, alphu). Náhodná alpha by teda bola stroke(255, random(255)).

Ak farbu čiary nastavujeme RGB farbami, napríklad žltá čiara stroke(255, 255, 0) tak alpha je štvrtý parameter: stroke(255, 255, 0, random(255)).

Úloha 4

Napíšte skeč, ktorý pomocou jedného cyklu for vykreslí vedľa seba 10 krúžkov náhodnej farby:

Zavrite tento prvý cyklus for do druhého cyklu for.

Vnútorný cyklus for nastavuje horizontálnu súradnicu krúžkov a vertikálna súradnica sa nemení. Upravte parametre príkazu circle tak, aby vonkajší cyklus nastavoval vertikálnu súradnicu.

Úloha 5

Upravte program tak, aby nebola farba náhodná pre každý krúžok v každom riadku, ale len pre riadok.

Úloha 6

Vytvorte program, ktorý pod seba vypíše 20 náhodných písmen:

Náhodné písmeno vygenerujete takto: char(int(random(65, 91))).

Pridajte druhý cyklus for, ktorý tento stĺpec znakov zopakuje 30x vedľa seba:

Vytvorte premennú vyska, ktorej hodnota je náhodné celé číslo v rozsahu 0 až 20. Upravte program tak, aby počet znakov v stĺpci bol rovný tejto premennej a aby sa vyska nastavovala náhodne pred vykreslením každého stĺpca:

Úloha 7

Vyrobíme program na vykreslenie mriežky.

Vytvorte premenné riadkov a stlpcov, ktoré označujú počet riadkov a počet stĺpcov. A tiež premenné sirka a vyska, ktoré budú určovať širku a výšku jedného políčka v mriežke.

Nastavte riadkov a stlpcov na nejaké hodnoty. Napríklad 7 a 4.

Pomocou týchto premenných a systémových premenných width a height vypočítajte hodnoty premenných w a h.

Následne dvojitým cyklom vykreslite mriežku na celú obrazovku:

Výstup pre riadkov=7 a stlpcov=4.

Vyskúšajte, či váš program funguje aj pre iné rôzne hodnoty r a s

Výstup pre riadkov=12 a stlpcov=6.

Úloha 8

Vytvorte program, ktorý vykreslí stĺpec, pozostávajúci zo štvorcov na sebe. Ich počet je náhodný od 3 do 10. Stĺpec začína na dolnom okraji obrazovky.

Rozšírte tento program na stĺpce vedľa seba. Každý má svoju vlastnú náhodnú výšku:

Úloha 9

Upravte pomocou podmienky if program tak, aby len prvých 6 štvorcov v stĺpci bolo zelených, ostatné sú oranžové:

A upravte ešte program tak, aby štvorec, ktorý je desiaty, bol červený:

Úloha 10

Pomocou dvojitého cyklu vytvorte generátor diskotékových laserov. Každý laser má svoju farbu a vykresľuje náhodné lúče zo svojej pozície.

Takto napríklad vyzerá výstup pre 3 lasere po 30 lúčov každý:

Uvedomte si, že kostra tejto úlohy je podobná Úlohe 2. Len sa namiesto krúžkov so spoločným stredom vykresľujú náhodné čiary so spoločným začiatkom.

Last updated