Vědět víc - vzdělávací portál pro zvídavé


Lab 6: Příkaz CIRCLE

Slide

Barevné kružnice

Nejprve vykreslíme sadu kružnic. Použijeme stejný program jako u příkazu LINE, provedeme však drobné úpravy. 

10 SCREEN 9 
20 CLS:RANDOMIZE TIMER 
30 FOR I=0 TO 300 
40 X=INT(RND*639)+1 
50 R=INT(RND*100)+1 
60 Y=INT(RND*349)+1 
70 COL=INT(RND*16) 
80 CIRCLE (X,Y),R,COL 
90 NEXT I 
100 WHILE INKEY$="":WEND 
110 CLS 

Animace

Druhá část bude zajímavější. Nejjednodušší forma animace je smazání původního obrázku a vykreslení nového.  

Kroužící světlo budeme zobrazovat jako krátkou kruhovou výseč. Vzhledem k tomu, že se jedná o malý grafický prvek, bude jeho vykreslování dostatečně rychlé, a proto můžeme použít výše zmíněnou jednoduchou animační techniku. 

10 SCREEN 9:CLS 
15 WHILE A$="" 
20 FOR I=0 TO 5.98 STEP .1 
30 CIRCLE (320,170),70,10,I,I+.3 
40 T=TIMER 
50 WHILE TIMER<T+.03:WEND 
60 CIRCLE (320,170),70,0,I,I+.3 
70 NEXT I 
80 A$=INKEY$:WEND 
90 CLS 

Na řádku 20 startuje cyklus, který postupuje po obvodu kruhu. Všimněte si, že cyklus končí hodnotou 5,98. V příkazu CIRCLE totiž přičítáme hodnotu 0,3, abychom vytvořili rozumně dlouhou kruhovou výseč a pokud by cyklus běžel až do 6,28, dostali bychom se mimo povolený rozsah způsobili tak chybu. 

Na řádku 30 vykreslíme kruhovou výseč. 

Na řádku 40 si do proměnné T uložíme hodnotu TIMER. TIMER udává čas v sekundách od zapnutí počítače (z přesností na setiny). Na řádku 50 čekáme, dokud neuplyne stanovený čas - v tomto případě 0,03 sekundy. Vzhledem k rychlosti vykreslování, kterou ještě musíme připočíst se jedná o rozumnou hodnotu. Samozřejmě můžete s touto hodnotou experimentovat. 

Na řádku 60 smažeme kruhovou výseč (nakreslíme ji černou barvou – nebudeme používat CLS, ačkoli v tomto jednoduchém případě by to fungovalo rovněž - schválně to zkuste). 

Na řádku 80 zkontrolujeme, jestli někdo nestiskl klávesu, která by znamenala ukončení programu. Všimněte si, že se kontrolo provádí až po skončení cyklu, takže pokud někdo stiskne klávesu, musí se počkat, až cyklus skončí (světlo dojede na konec).