RETRO KUTAK: SIMON’S BASIC C64 lekcija šesta

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 prvahttps://techfokus.rs/simonss-basic-za-commodorw-64-lekcija-1/
SIMON’S BASIC C64 – lekcija drugahttps://techfokus.rs/simons-basic-c64-lekcija-druga/
SIMON’S BASIC C64 – lekcija trećahttps://techfokus.rs/simons-basic-c64-lekcija-treca/
SIMON’S BASIC C64 – lekcija čevrtahttps://techfokus.rs/simons-basic-grafika-lekcija-4/
SIMON’S BASIC C64 – lekcija petahttps://techfokus.rs/retrokutak-simons-basic-lekcija-peta/
SIMON’S BASIC C64 – lekcija šestahttps://techfokus.rs/retro-kutak-simons-basic-c64-lekcija-sesta/
SIMON’S BASIC C64 – lekcija sedmahttps://techfokus.rs/retro-kutak-simons-basic-c64-lekcija-sedma/

Ostavite komentar

Vaša adresa e-pošte neće biti objavljena. Neophodna polja su označena *

Scroll to Top