RETRO KUTAK – tehnologija prošlih decenijaSIMON'S BASIC

SIMON’S BASIC C64 – lekcija peta

RETRO KUTAK – SIMON’S BASIC C64 – lekcija petaOva lekcija posvećena je naprednim naredbama za crtanje grafike u Simon’s BASIC-u na Commodore 64. Objašnjavaju se komande REC, BLOCK i CIRCLE koje omogućavaju crtanje kvadrata, pravougaonika, popunjenih oblika, krugova i elipsi u visokoj i multikolor rezoluciji. Tekst uključuje praktične primere koda za generisanje koncentričnih kvadrata i pravougaonika, rad sa bojama i eksperimentisanje sa multikolor matricom. Posebna pažnja posvećena je razlikama između visoke i multikolor rezolucije, koordinatnim ograničenjima i efektima preklapanja boja.

Kroz detaljna uputstva i komentare, korisnici mogu naučiti kako da koriste Simon’s BASIC za izradu grafičkih oblika i vizuelnih eksperimenata na C64 računaru. Cilj lekcije je da olakša razumevanje grafičkih mogućnosti Commodore 64 i podstakne kreativno programiranje u retro okruženju.

Ključne reči: Commodore 64, C64 asembler, Simon’s BASIC lekcije, retro programiranje, BASIC crtanje grafike, multikolor rezolucija, REC naredba, BLOCK naredba, CIRCLE naredba, crtanje krugova, crtanje kvadrata, retro kompjuteri.

RETRO KUTAK

 

SIMON’S BASIC C64 – lekcija peta

Idemo na petu lekciju. Za danas smo pripremili nastavak o naredbama Sajmons bejzika koje se bave grafikom u visokoj i multikolor rezoluciji

 

Napomene, saveti i objašnjenja

Naredbe povezane sa crtanjem u visokoj i multikolor rezoluciji imaju mnogo zajedničkog jedna sa drugom. U daljim objašnjavanjima smanjićemo nepotrebna ponavljanja za istim stvarima koje su već objašnjene u prethodnim naredbama

 

Naredbe Simon’s basic-a

 

REC  –  iscrtavanje kvadrata i pravougaonika

Ovom naredbom crtamo u visokoj i multikolor rezoluciji kvadrate/pravougaonike. Kordinacija i način ispisa je potpuno identična kao kod PLOT naredbe. Treba imati u vidu da zbir vrednosti kordinate X i širine ne sme da prelazi 320 u visokoj i 160 u multikolor rezoluciji, a zbir vrednosti kordinate Y i visine ne sme biti veća od 200 u obe rezolucije inače program prestaje sa radom i ispisuje poruku „Bad mode“

Format naredbe:

REC x,y,s,v,n – Crta se kvadrat/pravougaonik. Agumenti „x“i „y“ su X i Y kordinata gornjeg levog ugla željenog oblika, „s“ predstavlja širinu, „v“ visinu, a „n“ je način ispisa istog

 

Primer 1 za visoku rezoluciju:

10 HIRES 2,7

Prelazak u visoki mod rezolucije

20 O=100

Dodeljujemo promenljivi O vrednost 100. Ova promenljiva nam služi za davanje visine i širine u ovom slučaju nacrtanog kvadrata

30 FOR I=1 TO 100 STEP 2

Petlja promenljive I od 1 do 100 sa korakom od 2 koja promenljiva će nam biti uvećanje početnih kordinata kvadrata

40 O=O-4

Umanjujemo visinu i širinu iscrtanog kvadrata za 4

50 IF O<1 THEN 50

Ukoliko smo previše umanjili visinu/širinu (manje od 1) pravimo beskonačnu petlju

60 REC 50+I,50+I,O,O,1

Crtanje u ovom slučaju kvadrata sa početnim kordinatama gornjeg levog ugla 50,50 koje se uvećavaju za vrednost promenljive I, sa visinom i širinom koja se nalazi u promenljivi O (pošto se poćetne kordinate uvećavaju za 2 da bi dobili koncentrične kvadrate visinu i širinu treba umanjiti za duplo, tj.za 4)

70 LOW COL RND(0)*16,7,0

Promena boje ispisa kvadrata (bez promene boje pozadine matrice).

80 NEXT I

Kraj petlje kada promenljiva I dostigne vrednost 100

90 GOTO 90

Beskonačna petlja

 

Startovanjem ovog programa iscrtaće se 25 koncentričnih kvadrata sa razmakom od jedne tačke. (100 / 2 za korak i podeljeno još sa dva za smanjenje visine i širine), u različitim bojama ispisa (bez promene boja pozadine matrice). Može se zapaziti uticaj promena boje na već nacrtane pravougaonike (kolor matrica 8×8). Dobija se, po našem mišljenju, veoma zanimljiva kombinacija boja iscrtanih kvadrata.

 

Primer 2 za multikolor rezoluciju:

10 HIRES 2,7

Prelazak u visoku rezoluciju i određivanje boje pozadine (boja ispisa u ovoj naredbi ne igra ulogu u multikolor rezoluciji)

20 MULTI 7,9,2

Prelazak u multikolor rezoluciju i određivanje boja kombinacija ispisa tačaka

30 O=100:M=1

Dodeljivanje promenljivoj O vrednost 100 (visina i širina ovde pravougaonika. Razlog je dvostruka dužina multikolor tačke u odnosu na njenu visinu) i vrednost 1 za promenljivu M (način ispisa u multikolor rezoluciji)

40 X=10:Y=10

Dodeljivanje vrednost promenljivih X i Y koje označavaju kordinate gornjeg levog ugla početnog ispisa koncentričnih pravougaonika

50 EXEC ISCRTAJ

Odlazimo na proceduru za iscrtavanje koncentričnih pravougaonika

60 O=100:M=1

70 X=50:Y=50

Ponovo dodeljujenmo vrednosti promenljivama sa razlikom da su sada kordinate početnog iscrtavanja pravougaonika 50,50

80 EXEC ISCRTAJ

Ponovo odlazimo na proceduru za iscrtavanje koncentričnih pravougaonika sada sa drugim početnim kordinatama

90 GOTO 90

Beskonačna petlja

100 PROC ISCRTAJ

Procedura koja iscrtava koncentrične pravougaonike

110 FOR I=1 TO 100 STEP 2

Petlja promenljive I od 1 do 100 sa korakom od 2 koja promenljiva će nam biti uvećanje početnih kordinata pravougaonika

120 O=O-4

Umanjujemo visinu i širinu iscrtanog pravougaonika za 4

130 IF O<1 THEN END PROC

Ukoliko smo previše umanjili visinu i širinu (manje od 1) izlazimo iz procedure i vraćamo se u glavni program

140 REC X+I,Y+I,O,O,M

Crtanje pravogaonika sa početnim kordinatama X,Y koje smo zadali u glavnom programu koje se uvećavaju za vrednost promenljive I sa visinom i širinom koja se nalazi u promenljivi O, sa vrstom multikolor ispisa tačaka datoj u promenljivi M (pošto se kordinate ispisa uvećavaju za 2 da bi dobili koncentrične pravougaonike visinu i širinu treba umanjiti za duplo tj.za 4)

150 IF M=3 THEN M=1:ELSE:M=M+1

Ukoliko je vrednost promenljive M (vrsta multikolor ispisa) jednaka 3 stavljamo da je 1 i tako ukrug

160 NEXT I

Kraj petlje kada vrednost promenljive I dostigne 100

170 END PROC

Kraj procedure

 

Prilikom startovanja programa iscrtaće se 25 koncentričnih pravougaonika sa razmakom od jedne tačke (100 / 2 za korak i podeljeno još sa 2 zbog istovremenog smanjenja visine i širine), sa početnim X,Y kordinatama 10,10 u tri različite boje. Odmah se da uočiti da se ovog puta iscrtavaju koncentrični praougaonici a ne kvadrati iako im je programski data ista širina i visina. Razlog je naravno što je multikolor tačka po horizontali dva puta veća od njene vertikale. Zatim će se iscrtati još 25 koncentričnih pravougaonika sa početnim X,Y kordinatama 50,50 sa istom kombinacijom boja. Prilikom preklapanja koncentičnih pravougaonika dobiće se perfektni prelivi preklopljenih boja i veoma interesantna šara. Pokušajte sa eksperimentisanjem. Možete dobiti zaista zanimljive rezultate

 

BLOCK – Iscrtavanje popunjenog pravougaonika/kvadrata

Ovom naredbom takođe iscrtavamo pravougaonike/kvadrate u visokoj i multikolor rezoluciji sa tom razlikom što su isti ispunjeni bojom ispisa. Kordinacija i način ispisa je potpuno identična kao kod PLOT naredbe.

Format naredbe:

BLOCK xp,yp,xk,xk,n – Crta se ispunjeni kvadrat/pravougaonik.

Argument „xp“ je početna X kordinata oblika,“yp“ je početna Y kordinata oblika,“xk“ je krajnja X kordinata oblika,“yk“ je krajnja Y kordinata oblika, a argument „n“ je način ispisa (kordinacija i način ispisa su identični PLOT naredbi). Naravno, vrednost početnih kordinata ispisa mora biti manja od vrednosti krajnjih kordinata.

 

Primer 1 za visoku rezoluciju:

10 HIRES 2,7

Prelazak u visoki mod rezolucije

20 FOR I=1 TO 100

Dajemo petlju od 100 ciklusa

30 X=RND(1)*300:Y=RND(1)*170

Zadajemo slučajne X i Y kordinate koje će nam koristiti i za početne i za krajnje kordinate oblika

40 BLOCK X,Y,X+10,Y+10,1

Crtamo ispunjeni kvadrat sa početnim kordinatama X i Y i sa krajnjim kordinatama koje su takođe promenljive X i Y ali uvećane za 10

50 LOW COL RND(1)*16,7,0

Dajemo slučajnu boju ispisa tačaka a zadržavamo istu boju pozadine (kolor matrica 8×8)

60 NEXT I

Kraj petlje kad promenljiva I dostigne krajnju vrednost 100

70 GOTO 70

Beskonačna petlja

Startovanjem ovog primera na ekranu će se iscrtati 100 ispunjenih kvadrata u različitim bojama, slučajnih kordinata, sa visinom i dužinom od 10 tačaka. Obratite pažnju na promenu boja tačaka postojećeg kvadrata ako se drugi nacrta preko njega ili u njegovoj neposrednoj blizini

 

Primer 2 za multikolor rezoluciju:

10 HIRES 2,7

Prelazak u visoki mod rezolucije

20 MULTI 8,9,11

Prelazak u multikolor

30 M=1

Promenljiva M koja će biti način ispisa ima početnu vrednost 1

40 FOR I=10 TO 145 STEP 5

Pravimo petlju za promenljivu I (koja će u ovom slučaju biti kordinata i početka i kraja iscrtavanja )sa početnom vrednošću 10,za krajnju 140 i sa korakom od 5

50 BLOCK I,I,I+10,I+20,M

Iscrtavamo ispunjene kvadrate početnih kordinata X i Y (vrednost promenljive I), a za krajnje vrednosti kordinacije uzimamo istu promenljivu uvećanu za 10 za X krajnju kordinatu, a za 20 za Y krajnju kordinatu (da bi se iscrtavali kvadrati jer je horizontala tačke dva puta veća od vertikale)

60 IF M=3 THEN M=1:ELSE:M=M+1

Proveramo način ispisa multikolor tačke. Ako je dostigao vrednost 3 vraćamo ga na vrednost 1, u suprotnom uvećavamo vrednost promenljive M za 1

70 NEXT I

Kraj petlje

80 GOTO 80

Beskonačna petlja

 

Startovanjem primera ispisuju se 27 ispunjenih kvadrata (145-10=135/5) sa pomerenom X i Y osom za 5 tačaka, širine 10 i visine 20 (pošto je tačka horizontale duplo veća od vetikale dobijamo kvadrate) u tri različite boje određenim u naredbi MULTI sa savršenim preklapanjem. Imajte u vidu da kada bi se na celoj slici koristile samo tri različite boje za svaku kombinaciju ispisa multikolor tačaka uvek bi se moglo dobiti savršena preklapanja tačaka tih boja. Takođe, u našem primeru savršeno preklapanje boja se dobija i kada bi se smanjio korak u petlji ili čak potpuno izbrisao (tada važi osnovni korak od +1). Koristeći različite tehnike i sa svih 16 boja mogu se dobiti savršena preklapanja boja u multikolor rezoluciji (naravno ne u istoj kolor matrici (40×25 veličine 8×8) ali pametnim odabirom boja tačaka u slici to se ne može primetiti). Čak i kada je u pitanju visoka, a ne multikolor rezolucija, ako se poštuju pravila jedna boja ispisa i jedna boja pozadine u kolor matrici prilikom crtanja slike i mudrim presecima tačaka, baš na kolor matricama, mogu se dobiti na izgled savršena preklapanja boja (što je naravno mnogo teže postići)

 

CIRCLE-Crtanje kruga i elipsi

Ova naredba nam služi da iscrtamo krugove i elipse. Kordinacija i način ispisa je potpuno identična kao kod PLOT naredbe.

Format naredbe:

CIRCLE x,y,xr,yr,n – crtanje elipsi ili kruga. Argumenti „x“ i „y“ su kordinate centra kruga ili elipsi. Argument „xr“ nam daje poluprečnik kruga ili poluosu elipse u X kordinati, „yr“ nam daje poluprečnik kruga ili poluosu elipse u Y kordinati, „n“ je način ispisa

 

Primer 1 za visoku rezoluciju:

10 HIRES 2,7

Prelazak u visoku rezoluciju

20 FOR I=10 TO 100 STEP 5

Petlja za promenljivu I početne vrednosti 10, krajnje 100 sa korakom od 5

30 CIRCLE 100,100,I,I,1

Iscrtavanje kruga sa kordinatama centra 100,100 i poluprečnika X i Y ose vrednosti promenljive I

40 LOW COL I,7,0

Menjanje boje ispisa tačke. Obratite pažnju da smo za boju dali promenljivu I iako ona ide do 100 a boje se kreću od 0 do 15. Razlog je da se za prikaz boje uvek uzimaju prva 4 bita vrednosti promenljive I (0-15) tako da nije bitno ako je vrednost veća od 15 (maksimalna vrednost je 255 – 8 bita – posle čega će se prijaviti greška)

50 NEXT I

Kraj petlje

60 GOTO 60

Beskonačna petlja

Startovanjem ovog primera dobićemo iscrtavanje 19 koncetričnih krugova (100-10=90/5+1) sa razmakom od 5 tačaka. Kao i kod ostalih primera i ovde dolazi do razlivanja boja ako se dve tačke različitih boja iscrtaju u istoj matrici što je odmah uočljivo.

 

Primer 2 za multikolor rezoluciju:

10 HIRES 2,7

Prelazak u visoku rezoluciju

20 MULTI 5,2,12

Prelazak u multikolor rezoluciju

30 M=1

Vrednost 1 za promenljivu M (način ispisa)

40 FOR I=10 TO 100 STEP 5

Petlja (promenljiva I) početak 10, kraj 100, korak 5

50 CIRCLE 100,100,I,I,M

Crtanje u ovom slučaju elipse X i Y kordinate centra 100,100,poluosa X i Y vrednost promenljive I

60 IF M=3 THEN M=1:ELSE:M=M+1

Promena načina ispisa multikolor tačke

70 NEXT I

Kraj petlje

80 GOTO 80

Beskonačna petlja

 

Kada startujemo ovaj primer iscrtaće se 19 koncentričnih elipsi sa centralnim kordinatama 100,100 i razmakom od 5 tački. Naravno bez obzira što je poluosa X i Y jednaka iscrtaće se elipsa, a ne krug, jer je, kao što smo već rekli, multikolor tačka dva puta duža od svoje visine. Obratite pažnju da kod naredbe CIRCLE kad iscrtavanje elipsi dođe do kraja ekrana ista neće prijaviti grešku već će se elipse i dalje iscrtavati samo sa odsečenim krajem sa desne strane (u stvari iscrtavaće se linija koja će povezati gornju sa donjom odsečenom stranom)

 

Toliko za danas. Nastavljamo sa izučavanjem naredbi za crtanje u sledećoj lekciji

Puno pozdrava

 

 

Оставите одговор

Ваша адреса е-поште неће бити објављена. Неопходна поља су означена *