09 - Systémové premenné

Spoznáme niekoľko šikovných fínt a zapojíme myš.

Úloha 1

Vytvorte nový skeč s rozmermi okna 400x300, ktorý vykreslí čiary krížom cez okno:

Uhlopriečky krížom cez okno

Úloha 2

Zmeňte v príkaze size rozmery okna na 200x500. Nič ostatné nemeňte. Sledujte ako sa rozhodili uhlopriečky:

Po zmene veľkosti okna už súradnice uhlopriečok nesedia.

Aby sme opravili uhlopriečky, musíme napraviť všetky súradnice v celom programe. Nebolo by fajn mať program, ktorý bude fungovať bez ohľadu na rozmery okna?

width a height

Výška a šírka aktuálneho okna je uložená v systémových premenných width a height. Aké čisla dáme do príkazu size, také si potom hocikedy v programe nájdeme uložené v premenných width a height.

Systémové premenné nevytvárame my, vytvára ich sám Processing. Nemusíme napísať int width = 400; ale Processing to robí za nás. My už len použijeme width tam, kde chceme hodnotu šírky a height tam, kde chceme hodnotu výšky.

Úloha 3

Upravte program z Úlohy 2 tak, že namiesto čísla 400 bude používať premennú width a namiesto čísla 300 použije premennú height:

Ak namiesto čiselných hodnôt použijeme premenné width a height, uhlopriečky fungujú.

Skúste znovu zmeniť rozmery okna v size a sledujte, že uhlopriečky sa už nepokazia:

Rozmery okna 100x400

So systémovými premennými vieme narábať rovnako ako s bežnými premennými. Vieme ich používať vo výrazoch, vo vzorcoch, vieme ich dať ako parametre do príkazov.

Úloha 4

Vytvorte nový skeč, ktorý s použitím width a height nakreslí obdĺžnik, ktorý je 50 pixelov od okrajov obrazovky. Vyskúšajte meniť rozmery obrazovky v size, aby ste si overili, že vám program funguje správne.

Výsledok pre size(400,200)
Výsledok pre size(200,300)

Úloha 4

Vytvorte skeč, ktorý nakreslí kruh so stredom v strede obrazovky a priemerom 200. Súradnice stredu obrazovky vyjadrite pomocou premenných width a height. Opäť vyskúšajte meniť rozmery okna v size, aby ste si overili, že program funguje správne.

Výsledok pre size(500,300)

Úloha 5

Upravte predošlý skeč tak, aby namiesto kruhu s priemerom 200 kreslil elipsu, ktorá zaberá 90% šírky a 90% výšky obrazovky.

Výsledok pre size(600,200)

mouseX a mouseY

Systémové premenné mouseX a mouseY uchovávajú aktuálnu pozíciu myši. Aby sme ich vedeli využiť, musíme si pripraviť program so štruktúrou setup a draw. Napríklad takýto program kreslí malý biely krúžok na pozíciu 150,200:

void setup()
{
  size(400,400);
  background(0);
  fill(255);
}

void draw()
{  
  circle(150, 200, 10);  
}

Úloha 6

Skopírujte si tento program a vymeňte v ňo súradnice krúžku za premenné mouseX a mouseY. Nezabudnite, že pri programovaní záleží na veľkých a malých písmenách.

Spustite takto upravený program a skúste prebehnúť myšou ponad okno. Darí sa vám kresliť?

Úloha 7

Vytvorte nový skeč, ktorý bude kresliť čiary od stredu obrazovky do aktuálnej pozície myši. Farba čiary je náhodná.

pmouseX a pmouseY

Systémové premenné pmouseX a pmouseY tiež uchovávajú pozíciu myši, ale nie aktuálnu. Je to pozícia myši v predošlom kole kreslenia draw. My už vieme, že draw sa vykonáva stále dokola. Pri každom novom kole vykonávania draw sa pozícia myši aktualizuje na najnovšie hodnoty. Často ale potrebujeme vedieť, kde bola myš v predošlom kole. A na to služia premenné pmouseX a pmouseY.

Budeme tak môcť napríklad spojiť predošlú pozíciu myši s aktuálnou pozíciou myši, čoho výsledkom je súvislá čiara.

Úloha 8

V predošlom skeči nahraďte súradnice čiary tak, aby sa nekreslila od stredu obrazovky ale od predošlej pozície myši:

Last updated