35. Kruhy a výplne: CIRCLE, FCOLOR, FILLTO, PAINT, TEXT
Na čo to je
Atari BASIC vie v grafike bod a čiaru. Turbo-BASIC XL pridáva kruh, vyplnenie plochy dvoma spôsobmi a písanie textu do obrázka.
Ako sa to píše
| Príkaz | Čo robí |
|---|---|
CIRCLE x,y,r | kružnica so stredom x,y a polomerom r |
CIRCLE x,y,rx,ry | elipsa: rx je vodorovný, ry zvislý polomer |
PAINT x,y | vyleje farbu z bodu x,y: vyplní celú plochu až po hranice inej farby |
FCOLOR n | pero pre FILLTO |
FILLTO x,y | ako DRAWTO, ale od každého bodu čiary vypĺňa doprava, kým nenarazí na nakreslený bod |
TEXT x,y,text | napíše text do grafiky; x,y je ľavý horný roh prvého písmena |
CLS #6 | zmaže grafickú obrazovku |
Kreslí sa perom z COLOR, tak ako PLOT a DRAWTO (kapitola 20).
Celý program
Súbor examples/circle.tbas:
10 REM CIRCLE, PAINT, FILLTO and TEXT
20 GRAPHICS 7
30 COLOR 1
40 CIRCLE 40,40,25
50 CIRCLE 110,30,40,12
60 COLOR 2
70 PAINT 40,40
80 COLOR 3:FCOLOR 3
90 PLOT 130,75:DRAWTO 130,60
100 PLOT 90,60:FILLTO 90,75
110 COLOR 1
120 TEXT 96,27,"HI"
130 LOCATE 40,40,C:PRINT "Inside the circle: ";C
140 LOCATE 110,70,C:PRINT "Inside the box: ";CPreklad a spustenie
Obrázok ukáže emulátor:
Basic26 circle.tbas --runSimulátor kreslí do pamäte a ukáže len textové okno:
Basic26 circle.tbas --simČo uvidíš
V emulátore: vľavo oranžová kružnica vyplnená zelenou, vpravo hore plochá elipsa s nápisom HI vo vnútri a pod ňou plný modrý obdĺžnik. V textovom okne (a v simulátore):
Inside the circle: 2
Inside the box: 3Ako to funguje
- Riadok 40: kružnica s polomerom 25 bodov.
- Riadok 50: štyri čísla dajú elipsu – 40 bodov na šírku od stredu, 12 na výšku.
- Riadok 70:
PAINTzačne v strede kružnice a rozleje pero 2 všetkými smermi, kým nenarazí na body inej farby než pozadie. Kružnica je uzavretá, takže farba ostane vnútri. Keby mala hranica dieru, farba by vytiekla a zaliala celú obrazovku. - Riadky 90 a 100:
FILLTOpotrebuje najprv pravú hranu. Riadok 90 ju nakreslí ako zvislú čiaru na x=130. Riadok 100 postaví pero na ľavý horný roh aFILLTOkreslí ľavú hranu smerom nadol; z každého jej bodu vyplní riadok doprava, až po hranu z riadka 90. Farbu výplne určujeFCOLOR. - Riadok 120:
TEXTnakreslí písmená z bodov, v každom grafickom režime a na ľubovoľnom mieste – nie len v textovom okne. Písmeno má 8 × 8 bodov. - Riadky 130 a 140:
LOCATEpotvrdí, že vnútro kruhu má pero 2 a vnútro obdĺžnika pero 3.
PAINT alebo FILLTO
PAINT | FILLTO | |
|---|---|---|
| tvar | ľubovoľný uzavretý | to, čo je medzi ľavou čiarou a prvým bodom vpravo |
| farba | COLOR | FCOLOR |
| rýchlosť | pomalší | rýchly |
| nebezpečenstvo | diera v hranici | chýbajúca pravá hrana – vyplní sa až po okraj obrazovky |
Časté chyby
| Čo sa stalo | Čo sa stane |
|---|---|
hranica pre PAINT nie je uzavretá | farba zaleje celú obrazovku |
PAINT do bodu, ktorý už nie je farbou pozadia | nevyplní sa nič |
FILLTO bez pravej hrany | výplň ide až po pravý okraj obrazovky |
| polomer 256 a viac | ERROR- 3 VALUE AT LINE 40 |
chýba COLOR | kreslí sa farbou pozadia – nevidno nič |
súbor má príponu .abas | CIRCLE, PAINT a TEXT sú v Atari BASICu mená premenných |
Kruh, ktorý presahuje okraj obrazovky, sa nakreslí len z tej časti, ktorá sa zmestí.
Vyskúšaj si
- Nakresli terč: päť sústredných kružníc s polomermi 5, 10 … 25.
- Nakresli panáčika: hlava je kruh, telo a končatiny čiary.
- Nakresli dom z kapitoly 20 a vyfarbi steny, strechu aj dvere cez
PAINT.
Zhrnutie
CIRCLE x,y,rkreslí kružnicu, so štvrtým číslom elipsu.PAINT x,yvyplní uzavretú plochu peromCOLOR.FILLTOvypĺňa doprava od kreslenej čiary peromFCOLOR; potrebuje pravú hranu.TEXT x,y,"…"píše do obrázka.
Späť: 34. Bloky pamäte · Ďalej: 36. Zvuk v šestnástich bitoch