Lekcija šesta
SIMON’S BASIC C64 – lekcija prva
SIMON’S BASIC C64 – lekcija druga
SIMON’S BASIC C64 – lekcija treća
SIMON’S BASIC C64 – lekcija čevrta
SIMON’S BASIC C64 – lekcija peta
SIMON’S BASIC C64 – lekcija šesta
SIMON’S BASIC C64 – lekcija sedma
Danas nastavljamo i završavamo sa naredbama Simon’s Basica koje se bave grafikom u visokoj i multikolor rezoluciji.
Napomene, saveti i objašnjenja
Kao što ste primetili, ima zaista mnogo naredbi za crtanje u višim grafičkim modovima, od kojih neke verovatno nikada nećete koristiti. Ipak, dobro je biti upoznat sa njima. Preporuka je da što više eksperimentišete sa ovim naredbama kako biste dobili zaista interesantne efekte koje kasnije možete koristiti u svojim programima.
Naredbe Simon’s Basica
ARC – crtanje dela kružnice ili elipse
Ovom naredbom iscrtavamo deo kružnice ili deo elipse. Uglovi u parametrima se daju u stepenima (0 – 360°). Koordinacija i način ispisa su identični PLOT naredbi.
Format naredbe:
ARC x,y,pu,ku,us,px,py,n – iscrtava se deo kruga ili elipse
- x i y: X i Y koordinate centra kruga ili elipse.
- pu: Početni ugao u stepenima.
- ku: Krajnji ugao u stepenima.
- us: Ugao između pravih koji prave kružnicu ili elipsu (što manji broj, počev od 1, kružnica ili elipsa je bolje, ali sporije iscrtana i obrnuto, što veći broj, kružnica ili elipsa je lošije, ali brže iscrtana).
- px: Poluprečnik kruga ili elipse u X ravni.
- py: Poluprečnik kruga ili elipse u Y ravni.
- n: Način ispisa.
Primer 1 za visoku rezoluciju
10 HIRES 2,7
20 FOR I=1 TO 10
30 ARC 100,100,I,I*25,5,I*10,I*10,1
40 NEXT I
50 GOTO 50
Startovanjem primera dobijamo iscrtavanje 10 dela kružnice odmaknutih jedna od druge za 10 tačaka, koje se sa svakim sledećim ispisivanjem povećavaju, kako u obimu, tako i u procentu iscrtavanja.
Primer 2 za multikolor rezoluciju
10 HIRES 2,7
20 MULTI 2,3,4
30 FOR I=1 TO 10
40 COLOUR RND(1)*16,RND(1)*16
50 ARC 70,100,I,I*25,5,I*10,I*10,1
60 LOW COL RND(1)*16,1,2
70 NEXT I
80 GOTO 80
Ovim primerom takođe iscrtavamo 10 dela, u ovom slučaju, elipse. Istovremeno menjamo boju pozadine, okvira i tačaka iscrtavanja samo za jednu kombinaciju koju koristimo za ispis. I ovde, kao kod CIRCLE naredbe, imamo slučaj da ako se krug/elipsa iscrtava izvan ekrana, ona se seče dok program nastavlja sa radom.
ANGL – crtanje poluprečnika kružnice ili poluose elipse
Prethodnom ARC naredbom iscrtavali smo deo kružnice ili deo elipse. Ovom naredbom iscrtavamo poluprečnike kruga ili poluose elipse zavisno od zadatih parametara. I ovde su uglovi dati u stepenima (0 – 360°). Koordinacija i način ispisa su identični PLOT naredbi.
Format naredbe:
ANGL x,y,ui,px,py,n – iscrtava se poluprečnik kruga ili poluosa elipse
- x i y: X i Y koordinate centra kruga ili elipse.
- ui: Ugao iscrtavanja (0-360°).
- px: Poluprečnik kruga ili elipse u X ravni.
- py: Poluprečnik kruga ili elipse u Y ravni.
- n: Način ispisa.
Primer 1 za visoku rezoluciju
10 HIRES 2,7
20 FOR I=1 TO 36
30 ANGL 160,100,10*I,2*I,2*I,1
40 NEXT I
50 FOR I=1 TO 36
60 ANGL 160,100,10*I,72-I*2,72-I*2,1
70 NEXT I
80 GOTO 80
Prilikom startovanja ovog primera iscrtaće se 36 linija poluprečnika kruga/elipse. Svaka od njih će biti duža za vrednost promenljive I puta dva i pomerena u odnosu na prethodnu za 10 stepeni dok se ne ispuni pun krug poluprečnika/poluose (360°). Zatim će se ponovo iscrtati 36 linija poluprečnika kruga/elipse sa istim koordinatama ispisa, sa razlikom što će u ovom slučaju prvi poluprečnik biti najduži, a zadnji najkraći, tako da će se dobiti tzv. „ogledalo“ iscrtavanje. Vrlo interesantan efekat!
Primer 2 za multikolor rezoluciju
10 HIRES 2,7
20 MULTI 1,3,4
30 M=1
40 FOR I=1 TO 36
50 ANGL 80,100,5*I,I*2,I*2,M
60 IF M=3 THEN M=1:ELSE:M=M+1
70 NEXT I
80 GOTO 80
Kod ovog primera takođe imamo iscrtavanje 36 poluprečnika, linija svih tri multikolor kombinacija tačaka. Razlika je u datom uglu iscrtavanja. Pošto je isti 5, iscrtaće se šara veće gustine tačaka sastavljena od poluprečnika do polovine kruga (36*5=180 stepeni).
PAINT – popunjavanje površine zatvorenih linija
Ovom naredbom ispunjavamo zatvorenu površinu željenom bojom.
Format naredbe:
PAINT x,y,n – Ispunjavanje zatvorenih površina počev od tačke koordinata X i Y datih u argumentima „x“ i „y“, sa načinom ispisivanja datim u argumentu „n“. Koordinacija i ispisivanje su identični PLOT naredbi.
Primer 1 za visoku rezoluciju
10 HIRES 2,7
20 CIRCLE 100,100,50,50,1
30 CIRCLE 120,120,50,50,1
40 PAINT 110,110,1
50 GOTO 50
Startovanjem primera iscrtaće se dva kruga i presek između njih će se ispuniti bojom tačaka određeme u HIRES naredbi. Naredba PAINT je veoma korisna Simon’s Basic naredba i često korišćena prilikom crtanja u višim modovima rezolucije.
Primer 2 za multikolor rezoluciju
10 HIRES 2,7
20 MULTI 8,9,10
30 M=1
40 FOR I=10 TO 120 STEP 10
50 CIRCLE I,100,50,50,M
60 IF M=3 THEN M=1:ELSE:M=M+1
70 NEXT I
80 M=1
90 FOR I=1 TO 5
100 PAINT RND(1)*160,100,M
110 IF M=3 THEN M=1:ELSE:M=M+1
120 NEXT I
130 GOTO 130
Prilikom startovanja programa iscrtaće se 12 elipsi koje će se seći međusobno, a njihovih 5 slučajno odabranih preseka obojiće se različitim bojama multikolor tačaka. Ovde treba imati u vidu da će se prilikom bojenja možda odabrati slučajne koordinate istog preseka, prilikom čega će se taj presek obojiti ponovo i samim tim neće biti pet obojenih preseka nego manje. Naredba PAINT se često koristila u Simon’s Basicu, naročito kada su bile u pitanju slike u tekstualnim avanturama, pri čemu se štedela memorija, a slike su dobijale posebnu dubinu prikaza.
DRAW – Crtanje proizvoljnog geometrijskog oblika
ROT – Rotacija i promena veličine nacrtanog oblika prethodnom naredbom
Ove dve naredbe idu zajedno. Prvom naredbom DRAW zadajemo niz brojeva kao tekst koji označavaju kako ćemo nacrtati željeni oblik. Druga naredba ROT vrši rotaciju i promenu veličine oblika koji se iscrtava prethodnom naredbom. Početna koordinacija i način ispisivanja tačaka su identične PLOT naredbi.
Formati naredbi:
DRAW „tekst“,x,y,n
- tekst: Niz brojeva kojim crtamo:
- „0123“ – desno, gore, dole, levo pomeranje bez crtanja tačaka
- „5678“ – desno, gore, dole, levo pomeranje sa crtanjem tačaka
- Broj „4“ nema funkciju
- „9“ prekida crtanje
- x i y: X i Y koordinate početka crtanja.
- n: Način crtanja.
ROT r,v – rotacija i uvećanje oblika nacrtanog prethodnom naredbom.
- r: Ugao rotacije u odnosu na prvobitni položaj oblika (0-bez rotacije do 7, svaki broj vredi 45 stepeni).
- v: Povećanje nacrtanog oblika od 1-bez povećanja do 255.
Napomena: Jednom zadani ugao i veličina oblika ostaju da važe za sve naredbe DRAW dok se ne zada druga ROT naredba. Ako se ne zada ROT naredba, naredba DRAW neće funkcionisati.
Primer 1 za visoku rezoluciju
10 HIRES 2,7
20 A$=“5555555555666666666688888888887777777777″
30 B$=“3333333333″
40 ROT 0,3
50 DRAW A$,120,100,1
60 GET C$:IF C$=““ THEN 60
70 DRAW A$,120,100,0
80 GET C$:IF C$=““ THEN 80
90 DRAW A$+B$+B$+A$,120,100,1
100 GET C$:IF C$=““ THEN 100
110 HIRES 2,7
120 ROT 0,1:M=1
130 FOR I=0 TO 7
140 DRAW A$,100,100,1
150 ROT I,M
160 M=M+0.5
170 NEXT I
180 GOTO 180
Kada startujemo primer, iscrtaće se kvadrat. Prilikom pritiska nekog tastera, isti će se izbrisati. Ponovnim stiskom nekog tastera nacrtaće se dva kvadrata sa razmakom između njih koji odgovara X koordinati već iscrtanog kvadrata. Na kraju, poslednjim pritiskom na taster, ekran će se izbrisati, sedam kvadrata će se iscrtati, svaki sa rotacijom od 45 stepeni sa istovremenim povećanjem u odnosu na prethodno iscrtani.
Primer 2 za multikolor rezoluciju
10 HIRES 2,7
20 MULTI 3,5,9
30 ROT 0,3
40 M=1
50 A$=“5555555555666666666688888888887777777777″
60 FOR I=10 TO 120 STEP 5
70 DRAW A$,I,70,M
80 IF M=3 THEN M=1:ELSE:M=M+1
90 NEXT I
100 GOTO 100
Kada startujemo primer, videćemo pravougaonik koji će se kretati od leve do desne ivice ekrana sa skokovima od 5 horizontalnih tačaka i ostavljanjem traga u svim načinima ispisa multikolor tačke.
Sa današnjom lekcijom završili smo sa naredbama za crtanje u visokoj i multikolor rezoluciji. U sledećoj lekciji ćemo obraditi naredbe za pisanje u ovim rezolucijama i nastaviti dalje sa naredbama iz drugih oblasti programiranja.
Puno pozdrava!
| SIMON’S BASIC C64 – lekcija prva | https://techfokus.rs/simonss-basic-za-commodorw-64-lekcija-1/ |
| SIMON’S BASIC C64 – lekcija druga | https://techfokus.rs/simons-basic-c64-lekcija-druga/ |
| SIMON’S BASIC C64 – lekcija treća | https://techfokus.rs/simons-basic-c64-lekcija-treca/ |
| SIMON’S BASIC C64 – lekcija čevrta | https://techfokus.rs/simons-basic-grafika-lekcija-4/ |
| SIMON’S BASIC C64 – lekcija peta | https://techfokus.rs/retrokutak-simons-basic-lekcija-peta/ |
| SIMON’S BASIC C64 – lekcija šesta | https://techfokus.rs/retro-kutak-simons-basic-c64-lekcija-sesta/ |
| SIMON’S BASIC C64 – lekcija sedma | https://techfokus.rs/retro-kutak-simons-basic-c64-lekcija-sedma/ |

