h3. Úvodné príkazy Skôr, než začneme s niečim novým, by som rád urobil istý dohovor. Totiž v programoch, ktoré budeme používať, sa niektoré veci opakujú a zaberajú miesto na papieri. Preto chcem zverejniť štandardné príkazy, čo sa budú dávať na začiatok všetkých programov. Budeme ich používať až do odvolania a budú vyzerať takto: require "RUDL" include RUDL include Constant def keypress loop do event = EventQueue.wait exit if event.is_a? QuitEvent break if event.is_a? KeyDownEvent end end $screen = DisplaySurface.new([640,480], DOUBLEBUF|FULLSCREEN, 16) $screen.set_caption "(nejaký pekný názov okna)" Neskôr možno ku funkcii keypress pribudnú aj ďalšie pomocné funkcie, ale o tom potom. h3. Úsečky V minulej lekcii sme sa naučili, ako naštartovať grafický režim a ako vypísať text na miesto, ktoré si vyberiete. Teraz to bude o tom, ako sa dajú kresliť čiary, čiarky a čiaročky. Grafický režim sa štartuje pomocou príkazu DisplaySurface.new([640, 480], DOUBLEBUF|FULLSCREEN, 16). Čísla 640 a 480 znamenajú šírku a výšku obrazovky v pixeloch. Súčasne s týmto príkazom sa na obrazovke vytvorí súradnicová sústava. Má ale jednu zvláštnosť: bod [0,0] sa nachádza vľavo hore a smerom nadol súradnica y rastie. Teda bod, ktorý sa nachádza na obrazovke vľavo dole má súradnice [0,479]. (Všimnite si, že druhá súradnica je o 1 menšia, než 480!) Bod vpravo hore má súradnice [639,0] a aké má súradnice bod vpravo dole, necháme na úvahu láskavého čitateľa. Mimochodom -- aké súradnice má bod v strede obrazovky? Na kreslenie úsečky slúži funkcia line. Ak chcem napríklad nakresliť na obrazovke zelenú úsečku z bodu [10,40] do bodu [70,20], spravím to príkazom $screen.line([10,40], [70,20], [0,255,0]) Prvé dva parametre sú krajné body úsečky a tretí je jej farba. Rafinovanejšie použitie tohto príkazu si môžete vyskúšať na nasledujúcom príklade: $screen.fill [0,0,0] 0.upto(100) { |i| $screen.line([100,0], [500,4*i], [255-2*i, 255-2*i, 255]) } $screen.flip keypress Tento program nakreslí modrých čiaročiek, každá z bodu [100,0] do [500,4*i]. Keď i = 0, ide o bod [500,0], pri hodnote 1 je to [500,4], atď. až pri hodnote 100 sa nakreslí úsečka do bodu [500,400]. (Koľkokrát cyklus prebehne?) Premennú i použijeme ešte na inú vec. S jej pomocou budeme meniť farbu. Ak je i rovné nule, farba je [255,255,255], čo je biela. Hodnoty červenej a zelenej však v každom cykle zmenšíme a posledná úsečka sa už bude kresliť farbou [55,55,255], čo je kúsok svetlejšia modrá. A ten pomalý prechod od bielej k modrej je pekný. Však môžete si vyskúšať. Iný zaujímavý obrázok dostanete ak cyklus zmeníte na 0.upto(400) { |i| $screen.line [100, i], [500, 400-i], [55+(i/2),0,0] } Prečo sa zmenil tvar? *Úloha č. 1:* Napíšte, pochopte, spustite príklady. *Úloha č. 2:* Upravte prvý príklad tak, aby sa farba nemenila na modrú, ale na žltú. *Úloha č. 3:* Nakreslite domček so šikmou strechou. *Úloha č. 4:* Nakreslite mriežku 8x8 štvorčekov, každý so stranou 10.