4. НУКТАНИ ХОСИЛ КИЛИШ
Экранда бирор рангда нуктани хосил килиш учун - PSET(x,y) , <Р> буйруклардан фойданаланилади. Бу буйрук координатаси (х, у) булган нуктани <Р> рангда экранда хосил килади. Нукта 4-расмда келтирилган координата системасида хосил булади.
Масалан,
30 PSET (20,20), 6
буйрук координатаси (20,20) булган нуктани тук кизил рангда хосил килади (5-расм).
Куп холларда биз табиий координата системасида ишлашга одатланганмиз (6-расм).
Компьютерда координата системасидан янги координата системасига утиш учун (1.6-расм) Y ни Y=191- Y билан алмаштириш етарли: 40 PSET (X,191-Y), 6
Y
(0,0) 20
X
20 (20,20)
20 (20,20)
Y
20 X
экранда
5 -расм 6 –расм
(0,0) y
x
20
( X, Y )
(0,0)
20
96
x
у
7 -расм
Айрим холларда янги координата системасининг бошини экранинг уртасида танлашга эхтиёж тугилади ( 7-расм).
Бу холда, янги координата системасидаги (х,у) ни компьютерда тасвирлаш учун Х=128-Х ва Y=96 - Y алмаштирилишдан фойдаланиш керак. Куйидаги дастур 3 та координата системасида нуктани экранда хар хил рангларда хосил килади:
10 CLS
20 INPUT “X,Y=“; X,Y
30 CLS: SCREEN 2
40 REM 5.5-PACM
50 PSET (X,Y),6
60 REM 5.6- PACM
70 PSET ( X,191-Y), 13
80 REM 5.7-PACM
90 PSET ( 128+X, 96-Y), 15
100 FЪR I= 1 TЪ 2000: NEXT
Turbъ Pascal (TP) да дастур куйидаги куринишда ёзилади:
uses crt,Graph;
var
grDriver: Integer;
grMъde,x,y: Integer;
begin
clrscr;
write('x=');readln(x);
write('y=');readln(y);
grDriver :=5 ;
InitGraph(grDriver, grMъde,'');
putpixel(x,y,6); {5 - расм}
putpixel(x,191-y,13); {6 - расм}
putpixel(128+x,96-y,6); {7 - расм}
readln;
readln;
clъsegraph;
end.
Шуни назарда тутиш лозимки, кайси координата системасида ишланаётганига караб, х ва у лар мос равишда узгарилиши лозим, яъни 5- расмдаги системада 0 <х<255, 0<у<191; 6- расмда 0<х<255,
0< у<191; 7- расмдаги системада - 128 <х<127, -95<у<96 булади.
PSET буйруги асосий график буйрукларидан бири булиб, унинг ёрдамида турли - туман шакл ва графикларни чизиш мумкин.
Бу буйрукни
PSET STEP (*x,*y) , <Р>
куринишда хам куллаш мумкин. Бу ерда *х, *у нисбий координата булиб, бу буйрук координаталари х+*х, у+*у булган нуктани
рангда хосил килади. Бу ерда х ва у охирги хосил килинган нуктанинг координаталари. *х ва *у лар манфий булиши хам мумкин. Мисол,
10 CLS: SCREEN 2
20 RSET (30,40),6
30 PSET STEP (30,40),6
40 GЪTЪ 40
Бу дастур ёрдамида экранда иккита нукта хосил булади. Улардан бирининг координатаси (30,40) булса, иккинчисининг (30-сатр) координатаси (60,80) булади.
PSET буйругида рангни курсатмаслик хам мумкин:
PSET STEP (Х , У)
у холда нуктанинг ранги олдиндан урнатилган рангда хосил булади, яъни CЪLЪR буйругида урнатилган тасвирнинг рангида хосил булади. PSET буйруги каби ишловчи яна бир буйрук:
PRESET (Х, У), <Р>
мавжуд булиб, унинг PSET дан фарки шундаки, агар унда ранг курсатилмаса, экранда хосил булаётган нукта экран рангида хосил булади, гуёки нукта экрандан йукотилади. Масалан,
10 SCREEN 2
20 REM НУКТАНИ ХОСИЛ КИЛИШ
30 RSET (100,100)
40 REM НУКТАНИ ЙУКОТИШ
50 PRESET (100,100)
60 FЪR I= TЪ 2000: NEXT
Юкоридаги дастурларнинг охирида келтирилган такрорлаш буйруги хосил булган тасвирларни экранда саклаб туради. Такрорланувчи буйрук ишлаб булиши билан экрандаги тасвир хам йуколади. Тасвирни экранда купрок ёки камрок саклаб туриши учун такрорлашлар сонини узгартириш лозим.
Куйидаги дастур экранда нукталарни турли рангда хосил килади. Ранг ва нукталарнинг урни RND функцияси ёрдамида хосил килинади.
10 REM КАЛЕЙДОСКОП
20 SCREEN 2
30 X= INT (RND(1)*256) + 1: Y= INT (RND(1)*191)+1
40 P= INT (RND(1)*15) + 1
50 PSET (X, Y), P
60 GЪTЪ 30
Дастурни тухтатиш учун тугмачаларни босиш керак.
Turbъ Pascal (TP) да дастурнинг куринишда куйидагича:
uses crt,Graph;
var
grDriver: Integer;
grMъde,x,y,p: Integer;
begin
grdriver:=detect;
initgraph(grdriver,grmъde,'');
repeat
x:=rъund(randъm(256)+1);y:=rъund(randъm(191)+1);
p:=rъund(randъm(15)+1);
putpixel(x,y,p);
until keypressed;
end.
96>
Do'stlaringiz bilan baham: |